我对这种事情是完全陌生的,我使用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)
这实际上是我获得超像素的代码,但是当我存储单个超像素时,我在该链接中所得到的(我还不能嵌入图像):superpixel
现在您可以看到原始图像的H和W和超像素存在一个很大的黑色区域,我希望在超像素区域仅裁剪一个“矩形或正方形”,我该怎么做?谢谢,抱歉我的英语
cv2.findContours
。请参阅其documentation以了解如何使用它。找到适合您情况的轮廓后,可以使用x,y,w,h = cv2.boundingRect(cnt)
其中x,y是左上角的坐标,w,h是矩形的宽度和高度。现在我们可以知道所需重新捕获的所有要点,并且可以使用numpy索引对其进行裁剪。