【发布时间】:2018-01-08 19:24:52
【问题描述】:
我在 Python 中使用 OpenCV。我使用以下代码选择主图像的一部分并将其复制到子图像中:
boundingBoxRotatedRect = cv2.minAreaRect(boxPoints)
if boundingBoxRotatedRect[2] < -45:
boundingBoxRotatedRect = (boundingBoxRotatedRect[0], (boundingBoxRotatedRect[1][1],boundingBoxRotatedRect[1][0]), boundingBoxRotatedRect[2] + 90)
M = cv2.getRotationMatrix2D(boundingBoxRotatedRect[0], boundingBoxRotatedRect[2], 1.0)
size = np.int0(boundingBoxRotatedRect[1])
size = (size[0],size[1])
dst = cv2.warpAffine(mainImage, M, (mainImage.shape[1], mainImage.shape[0]))
subImage = cv2.getRectSubPix(dst, size, boundingBoxRotatedRect[0])
其中 boxPoints 是一个由 4 个点组成的数组,构成从主图像中要裁剪的区域周围的边界框,boundingBoxRotatedRect 是表示为旋转矩形对象的同一个框,M 是旋转矩阵,size 是宽度/边界框的高度,mainImage 是被裁剪的主图像,而 subImage 最终是从主图像裁剪的最终图像。下面链接的图片进一步解释了正在发生的事情。
我的问题是:如果我使用 OpenCV 绘图功能来编辑 subImage,我怎样才能将这些相同的绘图放回 mainImage 的相应像素上?例如(如果使用我提供的解释图像中的图像形状)我在 subImage 上绘制了一个直立的笑脸,我如何将其转换为 mainImage 上正确位置的正确定向的对角笑脸?
【问题讨论】:
标签: python image opencv image-processing image-manipulation