剪切除感兴趣区域以外的所有python



我对这类事情完全陌生,我用SLIC从图像中获取超级像素,现在我已经提取了检测到的单个超级像素,但它就像整个起始img维度,除了有超级像素,图像的其余部分是黑色的,我很抱歉我的英语不好,我会在下面解释。

import cv2
import numpy as np
from skimage.segmentation import slic
myimg = cv2.imread('4.5.jpg')
segments = slic(myimg, n_segments=200, compactness=10, sigma=1)

for i, segVal in enumerate(np.unique(segments)):

mask = np.zeros(myimg.shape[:2], dtype = "uint8")
mask[segments == segVal] = 255
cv2.imwrite('output.png', cv2.bitwise_and(myimg, myimg, mask = mask))
#show the masked region
#cv2.imshow("Mask", mask)
cv2.imshow("Applied", cv2.bitwise_and(myimg, myimg, mask = mask))
cv2.waitKey(1)

这实际上是我获取超级像素的代码,但当我存储单个超级像素时,我得到的是该链接(我还不允许嵌入图像(:超像素

现在,正如你所看到的,原始图像和超像素的H和W有一个很大的黑色区域,我只想用超像素区域裁剪一个"矩形或正方形",我该怎么做?谢谢你,很抱歉我的英语

对于此任务,您可以使用cv2.findContours。参考其文档了解如何使用它。在找到轮廓后,在您的情况下,您可以使用

x,y,w,h = cv2.boundingRect(cnt)

其中x,y是左上角的坐标,w,h是矩形的宽度和高度。现在,我们可以知道所需重新调用的所有点,并且可以使用numpy索引对其进行裁剪。

相关内容

最新更新