def _mixImageSelfMask(self, wipeSettings, level, image1, image2, mixMat, whiteMode): cv.CvtColor(image2, self._mixImageMask, cv.CV_BGR2GRAY) if(whiteMode == True): cv.CmpS(self._mixImageMask, 250, self._mixImageMask, cv.CV_CMP_LT) else: cv.CmpS(self._mixImageMask, 5, self._mixImageMask, cv.CV_CMP_GT) return self._mixImageAlphaMask(wipeSettings, level, image1, image2, self._mixImageMask, mixMat)
def _mixImageSelfMaskHue(self, wipeSettings, level, image1, image2, mixMat): cv.CvtColor(image1, mixMat, cv.CV_RGB2HSV) cv.Split(mixMat, self._mixMixMask1, None, None, None) cv.CvtColor(image2, mixMat, cv.CV_RGB2HSV) cv.Split(mixMat, self._mixMixMask2, None, None, None) cv.Sub(self._mixMixMask2, self._mixMixMask1, self._mixImageMask) cv.CmpS(self._mixImageMask, 255-int((level*254)), self._mixImageMask, cv.CV_CMP_GT) return self._mixImageAlphaMask(wipeSettings, level, image1, image2, self._mixImageMask, mixMat)
def cvCmpS(src, scalar, dst, code): width1 = cv.GetImageROI(src)[2] height1 = cv.GetImageROI(src)[3] width2 = cv.GetImageROI(dst)[2] height2 = cv.GetImageROI(dst)[3] if not (width1 == width2 and height1 == height2): print 'cvCmpS src, dst size error' print (width1, height1), (width2, height2) cv.CmpS(src, scalar, dst, code)
def precornerdetect(image): # assume that the image is floating-point corners = cv.CloneMat(image) cv.PreCornerDetect(image, corners, 3) dilated_corners = cv.CloneMat(image) cv.Dilate(corners, dilated_corners, None, 1) corner_mask = cv.CreateMat(image.rows, image.cols, cv.CV_8UC1) cv.Sub(corners, dilated_corners, corners) cv.CmpS(corners, 0, corner_mask, cv.CV_CMP_GE) return (corners, corner_mask)
ds2 = ptdst(features[2], features[3]) if max(ds1, ds2) / min(ds1, ds2) > 1.4: tracking = 0 ds3 = ptdst(features[0], features[2]) ds4 = ptdst(features[1], features[3]) if max(ds3, ds4) / min(ds3, ds4) > 1.4: tracking = 0 if ds1 < 10 or ds2 < 10 or ds3 < 10 or ds4 < 10: tracking = 0 if tracking == 0: detected = 0 #detection mode if tracking == 0: detected = 0 cv.Smooth(grey, dst2, cv.CV_GAUSSIAN, 3) cv.Laplace(dst2, d) cv.CmpS(d, 8, d2, cv.CV_CMP_GT) if onlyBlackCubes: #can also detect on black lines for improved robustness cv.CmpS(grey, 100, b, cv.CV_CMP_LT) cv.And(b, d2, d2) #these weights should be adaptive. We should always detect 100 lines if lastdetected > dects: THR = THR + 1 if lastdetected < dects: THR = max(2, THR - 1) li = cv.HoughLines2(d2, cv.CreateMemStorage(), cv.CV_HOUGH_PROBABILISTIC, 1, 3.1415926 / 45, THR, 10, 5) #store angles for later angs = []