def findcontours(iplimage, threshold=100): srcimage = opencv.cvCloneImage(iplimage) # create the storage area and bw image grayscale = opencv.cvCreateImage(opencv.cvGetSize(srcimage), 8, 1) opencv.cvCvtColor(srcimage, grayscale, opencv.CV_BGR2GRAY) # threshold opencv.cvThreshold(grayscale, grayscale, threshold, 255, opencv.CV_THRESH_BINARY) storage = opencv.cvCreateMemStorage(0) opencv.cvClearMemStorage(storage) # find the contours nb_contours, contours = opencv.cvFindContours(grayscale, storage) # comment this out if you do not want approximation contours = opencv.cvApproxPoly(contours, opencv.sizeof_CvContour, storage, opencv.CV_POLY_APPROX_DP, 3, 1) # next line is for ctypes-opencv # contours = opencv.cvApproxPoly (contours, opencv.sizeof(opencv.CvContour), storage, opencv.CV_POLY_APPROX_DP, 3, 1) conts = [] for cont in contours.hrange(): points = [] for pt in cont: points.append((pt.x, pt.y)) conts.append(points) opencv.cvReleaseMemStorage(storage) opencv.cvReleaseImage(srcimage) opencv.cvReleaseImage(grayscale) return (nb_contours, conts)
def findcontours(iplimage, threshold=100): srcimage = opencv.cvCloneImage(iplimage) # create the storage area and bw image grayscale = opencv.cvCreateImage(opencv.cvGetSize(srcimage), 8, 1) opencv.cvCvtColor(srcimage, grayscale, opencv.CV_BGR2GRAY) #threshold opencv.cvThreshold(grayscale, grayscale, threshold, 255, opencv.CV_THRESH_BINARY) storage = opencv.cvCreateMemStorage(0) opencv.cvClearMemStorage(storage) # find the contours nb_contours, contours = opencv.cvFindContours (grayscale, storage) # comment this out if you do not want approximation contours = opencv.cvApproxPoly (contours, opencv.sizeof_CvContour, storage, opencv.CV_POLY_APPROX_DP, 3, 1) # next line is for ctypes-opencv #contours = opencv.cvApproxPoly (contours, opencv.sizeof(opencv.CvContour), storage, opencv.CV_POLY_APPROX_DP, 3, 1) conts = [] for cont in contours.hrange(): points=[] for pt in cont: points.append((pt.x,pt.y)) conts.append(points) opencv.cvReleaseMemStorage(storage) opencv.cvReleaseImage(srcimage) opencv.cvReleaseImage(grayscale) return (nb_contours, conts)
def __init__(self, frame): self.blob_image = opencv.cvCloneImage(frame.iplimage) self.blob_gray = opencv.cvCreateImage(opencv.cvGetSize(self.blob_image), 8, 1) self.blob_mask = opencv.cvCreateImage(opencv.cvGetSize(self.blob_image), 8, 1) opencv.cvSet(self.blob_mask, 1) opencv.cvCvtColor(self.blob_image, self.blob_gray, opencv.CV_BGR2GRAY) # opencv.cvEqualizeHist(self.blob_gray, self.blob_gray) # opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.thresh, 255, opencv.CV_THRESH_BINARY) # opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.thresh, 255, opencv.CV_THRESH_TOZERO) opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.bthresh, 255, frame.bthreshmode) # opencv.cvAdaptiveThreshold(self.blob_gray, self.blob_gray, 255, opencv.CV_ADAPTIVE_THRESH_MEAN_C, opencv.CV_THRESH_BINARY_INV) self._frame_blobs = CBlobResult(self.blob_gray, self.blob_mask, 100, True) self._frame_blobs.filter_blobs(10, 10000) self.count = self._frame_blobs.GetNumBlobs() self.items = [] for i in range(self.count): self.items.append(self._frame_blobs.GetBlob(i))
def __init__(self, frame): self.blob_image = opencv.cvCloneImage(frame.iplimage) self.blob_gray = opencv.cvCreateImage(opencv.cvGetSize(self.blob_image), 8, 1) self.blob_mask = opencv.cvCreateImage(opencv.cvGetSize(self.blob_image), 8, 1) opencv.cvSet(self.blob_mask, 1) opencv.cvCvtColor(self.blob_image, self.blob_gray, opencv.CV_BGR2GRAY) #opencv.cvEqualizeHist(self.blob_gray, self.blob_gray) #opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.thresh, 255, opencv.CV_THRESH_BINARY) #opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.thresh, 255, opencv.CV_THRESH_TOZERO) opencv.cvThreshold(self.blob_gray, self.blob_gray, frame.bthresh, 255, frame.bthreshmode) #opencv.cvAdaptiveThreshold(self.blob_gray, self.blob_gray, 255, opencv.CV_ADAPTIVE_THRESH_MEAN_C, opencv.CV_THRESH_BINARY_INV) self._frame_blobs = CBlobResult(self.blob_gray, self.blob_mask, 100, True) self._frame_blobs.filter_blobs(10, 10000) self.count = self._frame_blobs.GetNumBlobs() self.items = [] for i in range(self.count): self.items.append(self._frame_blobs.GetBlob(i))