1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| def Laser(filename,seuil,v):
from opencv.cv import *
from opencv.highgui import *
t1=cvGetTickCount( )
h=int(GetValue('Paramètres.haut'))
b=int(GetValue('Paramètres.bas'))
g=int(GetValue('Paramètres.gauche'))
d=int(GetValue('Paramètres.droite'))
img=cvLoadImage(filename,1);
src_image=cvCreateImage(cvSize(img.width,img.height),IPL_DEPTH_8U,1);
cvCvtColor(img,src_image,CV_BGR2GRAY );#conversion en niveau de gris
lineimage = cvCreateImage (cvSize (d-g,1), 8, 1)
minVal=0
maxVal=0
minLoc=cvPoint(0,0)
maxLoc=cvPoint(0,0)
tab=[]
ligne2=[]
for i in range(h,b):
rect = cvRect(g,i,d-g,1)
lineimage=cvGetSubRect(src_image, rect ) #extraction d'une ligne de mon image
[minVal, maxVal]=cvMinMaxLoc(lineimage,minLoc,maxLoc,None) #recherche du max d'intensité sur ma ligne
tab.append([i,maxLoc.x+g,maxVal])
if(int(tab[i-h][2])>=seuil):
ligne2.append(tab[i-h])
if v:
DrawMarker('',tab[i-h][0],tab[i-h][1],'Red',1,2)
else:
ligne2.append([0,0,0])
cvReleaseData(lineimage)
cvReleaseData(src_image)
cvReleaseData(img)
t=cvGetTickCount( )-t1
print "Temps d'extraction fonction = %g ms" % (t/(cvGetTickFrequency()*1000.));
return(ligne2) |
Partager