def __findcurve(self, img): storage = cv.cvCreateMemStorage(0) nb_contours, cont = cv.cvFindContours(img, storage, cv.sizeof_CvContour, cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_NONE, cv.cvPoint(0, 0)) cidx = int(random.random() * len(color)) if (self.drawcontour): cv.cvDrawContours(self.drawimg, cont, _white, _white, 1, 1, cv.CV_AA, cv.cvPoint(0, 0)) idx = 0 for c in cont.hrange(): PointArray = cv.cvCreateMat(1, c.total, cv.CV_32SC2) PointArray2D32f = cv.cvCreateMat(1, c.total, cv.CV_32FC2) cv.cvCvtSeqToArray(c, PointArray, cv.cvSlice(0, cv.CV_WHOLE_SEQ_END_INDEX)) fpoints = [] for i in range(c.total): kp = myPoint() kp.x = cv.cvGet2D(PointArray, 0, i)[0] kp.y = cv.cvGet2D(PointArray, 0, i)[1] kp.index = idx idx += 1 fpoints.append(kp) self.allcurve.append(fpoints) self.curvelength = idx
def __findcurve(self, img): storage = cv.cvCreateMemStorage(0) nb_contours, cont = cv.cvFindContours (img, storage, cv.sizeof_CvContour, cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_NONE, cv.cvPoint (0,0)) cidx = int(random.random() * len(color)) if (self.drawcontour): cv.cvDrawContours (self.drawimg, cont, _white, _white, 1, 1, cv.CV_AA, cv.cvPoint (0, 0)) idx = 0 for c in cont.hrange(): PointArray = cv.cvCreateMat(1, c.total, cv.CV_32SC2) PointArray2D32f= cv.cvCreateMat( 1, c.total , cv.CV_32FC2) cv.cvCvtSeqToArray(c, PointArray, cv.cvSlice(0, cv.CV_WHOLE_SEQ_END_INDEX)) fpoints = [] for i in range(c.total): kp = myPoint() kp.x = cv.cvGet2D(PointArray,0, i)[0] kp.y = cv.cvGet2D(PointArray,0, i)[1] kp.index = idx idx += 1 fpoints.append(kp) self.allcurve.append(fpoints) self.curvelength = idx
def __findContour(self, filename): #find the contour of images, and save all points in self.vKeyPoints self.img = highgui.cvLoadImage (filename) self.grayimg = cv.cvCreateImage(cv.cvSize(self.img.width, self.img.height), 8,1) self.drawimg = cv.cvCreateImage(cv.cvSize(self.img.width, self.img.height), 8,3) cv.cvCvtColor (self.img, self.grayimg, cv.CV_BGR2GRAY) cv.cvSmooth(self.grayimg, self.grayimg, cv.CV_BLUR, 9) cv.cvSmooth(self.grayimg, self.grayimg, cv.CV_BLUR, 9) cv.cvSmooth(self.grayimg, self.grayimg, cv.CV_BLUR, 9) cv.cvThreshold( self.grayimg, self.grayimg, self.threshold, self.threshold +100, cv.CV_THRESH_BINARY ) cv.cvZero(self.drawimg) storage = cv.cvCreateMemStorage(0) nb_contours, cont = cv.cvFindContours (self.grayimg, storage, cv.sizeof_CvContour, cv.CV_RETR_LIST, cv.CV_CHAIN_APPROX_NONE, cv.cvPoint (0,0)) cv.cvDrawContours (self.drawimg, cont, cv.cvScalar(255,255,255,0), cv.cvScalar(255,255,255,0), 1, 1, cv.CV_AA, cv.cvPoint (0, 0)) self.allcurve = [] idx = 0 for c in cont.hrange(): PointArray = cv.cvCreateMat(1, c.total , cv.CV_32SC2) PointArray2D32f= cv.cvCreateMat( 1, c.total , cv.CV_32FC2) cv.cvCvtSeqToArray(c, PointArray, cv.cvSlice(0, cv.CV_WHOLE_SEQ_END_INDEX)) fpoints = [] for i in range(c.total): kp = myPoint() kp.x = cv.cvGet2D(PointArray,0, i)[0] kp.y = cv.cvGet2D(PointArray,0, i)[1] kp.index = idx idx += 1 fpoints.append(kp) self.allcurve.append(fpoints) self.curvelength = idx
def __calculate(self): print "I want to calculate an image" size = cv.cvGetSize(self.origImage) result = cv.cvCreateMat(size.height,size.width,cv.CV_32FC1) row_sums = cv.cvCreateMat(size.height,size.width,cv.CV_32FC1) for i in range(size.height): for j in range(size.width): image_value = cv.cvGet2D(self.origImage,i,j) image_value = image_value[0] prev_row_sum = 0 if(i == 0): cv.cvmSet(row_sums,i,j,image_value) else: prev_row_sum = cv.cvmGet(row_sums,i-1,j) cv.cvmSet(row_sums,i,j,image_value+prev_row_sum) if(j == 0): cv.cvmSet(result,i,j,prev_row_sum+image_value) else: prev_result = cv.cvmGet(result,i,j-1) cv.cvmSet(result,i,j,prev_row_sum+image_value+prev_result) if(i == 0 and j == 0): print "image_value:",image_value print "prev_row_sum:",prev_row_sum return result
def putoriginal(fname, img): ori_img = highgui.cvLoadImage (fname) ori_img_thumb = cv.cvCreateImage(cv.cvSize(ori_img.width/4, ori_img.height/4), 8,3) cv.cvResize(ori_img, ori_img_thumb) for x in range(ori_img_thumb.height): for y in range(ori_img_thumb.width): cv.cvSet2D(img, x, y, cv.cvGet2D(ori_img_thumb, x, y)) return
def putoriginal(fname, img): ori_img = highgui.cvLoadImage(fname) ori_img_thumb = cv.cvCreateImage( cv.cvSize(ori_img.width / 4, ori_img.height / 4), 8, 3) cv.cvResize(ori_img, ori_img_thumb) for x in range(ori_img_thumb.height): for y in range(ori_img_thumb.width): cv.cvSet2D(img, x, y, cv.cvGet2D(ori_img_thumb, x, y)) return
def mouseClick(event, x, y, flags, param): if event == CV_EVENT_LBUTTONUP: frame = cvQueryFrame(CAM) hlsFrame = cvCreateImage(cvSize(frameWidth, frameHeight), IPL_DEPTH_8U, 3) cvCvtColor(frame, hlsFrame, CV_BGR2HLS) pixel = cvGet2D(hlsFrame, y, x) setHlsFilter('hmax', pixel[0]) setHlsFilter('hmin', pixel[0]) #setHlsFilter('lmax', pixel[1]) #setHlsFilter('lmin', pixel[1]) setHlsFilter('smax', pixel[2]) setHlsFilter('smin', pixel[2])
py = size.height-1 cv.cvSet2D(img,py,px,color) def calcBox(iimg, x, y, size): point1 = cv.cvmGet(iimg,x,y) point2 = cv.cvmGet(iimg,x+size,y+size) point3 = cv.cvmGet(iimg,x,y+size) point4 = cv.cvmGet(iimg,x+size,y) return (point1+point2)-(point3+point4) size = cv.cvGetSize(image) sum = 0 for i in range(1,5):#size.height): for j in range(1,5): sum = sum + cv.cvGet2D(image,i,j)[0] print sum #print cv.cvmGet(iimg.integralImage,size.height-1,size.width-1) print calcBox(iimg.integralImage,1,1,4) boxSize = 16 bestValue = -999999.9 best_i = 0 best_j = 0 for i in range(size.height-boxSize): for j in range(size.width-boxSize): box1 = calcBox(iimg.integralImage,i,j,boxSize) box2 = calcBox(iimg.integralImage,i+6,j+6,4) value = box2*box2/box1 if(value > bestValue):