【发布时间】:2020-08-28 10:53:31
【问题描述】:
我只想裁剪框或矩形内的图像。我尝试了很多方法,但都没有奏效。
import cv2
import numpy as np
img = cv2.imread("C:/Users/hp/Desktop/segmentation/add.jpeg", 0);
h, w = img.shape[:2]
# print(img.shape)
kernel = np.ones((3,3),np.uint8)
img2 = img.copy()
img2 = cv2.medianBlur(img2,5)
img2 = cv2.adaptiveThreshold(img2,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
img2 = 255 - img2
img2 = cv2.dilate(img2, kernel)
img2 = cv2.medianBlur(img2, 9)
img2 = cv2.medianBlur(img2, 9)
cv2.imshow('anything', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
position = np.where(img2 !=0)
x0 = position[0].min()
x1 = position[0].max()
y0 = position[1].min()
y1 = position[1].max()
print(x0,x1,y0,y1)
result = img[x0:x1,y0:y1]
cv2.imshow('anything', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出应该是正方形内的图像。
【问题讨论】:
-
我认为这个问题是XY problem 的一个例子。告诉我们您尝试了什么以及您的尝试有什么问题。 “它不起作用”它不够专注
-
使用形态变换来加强之前的线条
-
@AliRazaAbbasi 你用不同的图像和不同的情况问了这个问题here,你认为我的那个特殊情况的代码适用于所有情况!您应该已经注意到,在这种情况下,线不是直的,直接使用霍夫线变换,而且 ROI 的边缘不清晰,图像内部有很强的噪声。矩形本身也不容易被识别为最后一个问题,因此请尽量具体说明您的问题。
标签: python image numpy opencv image-processing