コード例 #1
0
ファイル: ImageMixer.py プロジェクト: perchrn/TaktPlayer
 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)
コード例 #2
0
ファイル: ImageMixer.py プロジェクト: perchrn/TaktPlayer
    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)
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
            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 = []