【发布时间】:2018-04-10 00:03:09
【问题描述】:
我使用一个函数来旋转和裁剪感兴趣的区域。但是,此功能的裁剪图像输出与手动裁剪(通过照片编辑器或绘画)图像存在差异。 旋转后的图像如下 手动裁剪后的图片(以旋转后的图片为输入)如下
您可以看到差异。在函数输出的情况下,边缘不清晰且定义明确。我该如何解决这个问题?
函数如下
def crop_minAreaRect(img, rect):
# rotate img
angle = rect[2]
rows,cols = img.shape[0], img.shape[1]
M = cv2.getRotationMatrix2D((cols/2,rows/2),angle,1)
img_rot = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow("img_rot", img_rot)
# rotate bounding box
rect0 = (rect[0], rect[1], 0.0)
box = cv2.cv.BoxPoints(rect)
pts = np.int0(cv2.transform(np.array([box]), M))[0]
pts[pts < 0] = 0
# crop
img_crop = img_rot[ pts[1][1]:pts[0][1], pts[1][0]:pts[2][0] ]
cv2.imshow("cropped", img_crop)
提前致谢!
【问题讨论】:
-
如果你按照相同的程序进行裁剪,为什么两张裁剪后的图像大小不同?
-
画质是否真的降低了,还是因为您使用了不同大小的矩形而只是拉伸了图像?
-
@KadiSoheib 我没有使用相同的程序进行裁剪。我手动裁剪了一个条形码,而另一个条形码已从函数中裁剪。
-
@AlexanderReynolds 不同大小的矩形是什么意思?
-
@SurabhiVerma 所以最后,区别只是彩色边界框?一个只有你能理解的糟糕问题。
标签: opencv