我只是在处理图像,我发现很难自动裁剪二进制图像。我是图像处理的新手。 示例图片如下所示,
原始图片:
所需的输出(由GIMP图像编辑器手动编辑):
我需要通过查找图像中白色像素(遮罩)的边缘来裁剪图像。但是很难找到近似的边缘。请帮助我找出答案。
先谢谢..!
答案 0 :(得分:0)
您可以使用findContours
查找对象的边界,然后使用minAreaRect
绘制所需的输出第一图像。或者,您也可以绘制对象的边界,即第二张图像。
import cv2
import numpy as np
img = cv2.imread('1.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_,thresh = cv2.threshold(gray,128,255,cv2.THRESH_BINARY)
_,contours,_ = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
mask = np.zeros(img.shape)
cv2.drawContours(mask, contours, -1 , (255,255,255), 1)
rect = cv2.minAreaRect(contours[0])
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(img,[box],0,(255,255,255),1)
cv2.imshow("img",img)
cv2.imshow("mask",mask)
cv2.waitKey(0)
cv2.destroyAllWindows()