在没有黑框的情况下在openCV中旋转图像而不裁剪

时间:2018-04-11 17:01:52

标签: python opencv

所以我看到了这里和那里,似乎这是一个常见的问题。虽然,我有一个特定的需求,但在现有的线程中没有解决。

我学校项目的主要思想是模拟你皮肤上的纹身。为此,OpenCV可以通过肤色检测手臂。

感谢cv2.getRotationMatrix2Dcv2.warpAffine,我可以用手臂旋转纹身。

#areaAngle is the inclination in degrees of the region of interest

N = cv2.getRotationMatrix2D((tatWidth/2,tatHeight/2),areaAngle,1)
#imgTatoo is the mustache image
roTatoo=cv2.warpAffine(imgTatoo,N,(tatWidth,tatHeight))

但我的问题是这个问题: When the arm is straight, everything is fine (image) 当我倾斜手臂时,一个华丽的black box appears (image again)

建议的解决方案之一是使用“区域中更大的矩形”裁剪图像。问题是我想要保持完整的纹身,而不仅仅是裁剪的部分。

知道怎么做吗? 感谢

编辑:我试图调整蒙版的大小以匹配对角线高度,但问题是因为这些代码行:

tatoo=cv2.resize(imgTatoo,(tatWidth,tatHeight),interpolation=cv2.INTER_AREA)
mask2=cv2.resize(tatMask,(tatWidth,tatHeight),interpolation=cv2.INTER_AREA)
mask2inv=cv2.resize(invTatMask,(tatWidth,tatHeight),interpolation=cv2.INTER_AREA)

更远的地方

        #create a ROI mask
        roi = frame[fy1:fy2,fx1:fx2]

        # print(roi.shape)

        #merge the roi mask with the tatoo and the inverted tatoo masks
        roi_bg = cv2.bitwise_and(roi,roi,mask = mask2inv)
        roi_fg = cv2.bitwise_and(tatoo,tatoo,mask = mask2)

        # print(roi_bg.shape,roi_fg.shape)

        #merge the background and foreground ROI masks
        dst = cv2.add(roi_fg,roi_bg)

如果我尝试调整面具的大小,我必须调整纹身图像的大小,因为数组需要大小相同。

0 个答案:

没有答案