剪切除感兴趣区域的所有蟒蛇

问题描述 投票:0回答:1

我对这种事情是完全陌生的,我使用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和超像素存在一个很大的黑色区域,我希望在超像素区域仅裁剪一个“矩形或正方形”,我该怎么做?谢谢,抱歉我的英语

python opencv image-resizing superpixels
1个回答
0
投票
对于此任务,您可以使用cv2.findContours。请参阅其documentation以了解如何使用它。找到适合您情况的轮廓后,可以使用

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

其中x,y是左上角的坐标,w,h是矩形的宽度和高度。现在我们可以知道所需重新捕获的所有要点,并且可以使用numpy索引对其进行裁剪。
© www.soinside.com 2019 - 2024. All rights reserved.