OpenCV用Python拉直图像

时间:2017-02-02 06:54:05

标签: python-2.7 opencv image-processing image-rotation affinetransform

有没有什么方法可以使用OpenCV用Python来理顺这个图像?我正在使用不同的转换来计算它,但我无法得到它。

Image

这是我的代码:

rows, cols, h = img.shape

M = np.float32([[1, 0, 100], [0, 1, 50]])

然后我申请了仿射转换。

dst = cv2.warpAffine(roi, M, (cols, rows))

我仍然无法将所需的图像输出拉直。现在抓我的头近一个小时。有人可以帮我吗?

1 个答案:

答案 0 :(得分:4)

你还记得我以前的帖子吗?答案就是基于此。

所以我获得了书周围边界框的4个角点并将其输入到单应函数中。

代码:

#---- 4 corner points of the bounding box
pts_src = np.array([[17.0,0.0], [77.0,5.0], [0.0, 552.0],[53.0, 552.0]])

#---- 4 corner points of the black image you want to impose it on
pts_dst = np.array([[0.0,0.0],[77.0, 0.0],[ 0.0,552.0],[77.0, 552.0]])

#---- forming the black image of specific size
im_dst = np.zeros((552, 77, 3), np.uint8)

#---- Framing the homography matrix
h, status = cv2.findHomography(pts_src, pts_dst)

#---- transforming the image bound in the rectangle to straighten
im_out = cv2.warpPerspective(im, h, (im_dst.shape[1],im_dst.shape[0]))
cv2.imwrite("im_out.jpg", im_out)

documentation

因为书周围有轮廓边界框;你必须将这4个点喂入数组pts_src