【问题标题】:Cut all except region of interest python剪切除感兴趣区域之外的所有python
【发布时间】:2020-08-12 18:49:10
【问题描述】:

我对这种东西完全陌生,我使用 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】:

    对于此任务,您可以使用cv2.findContours。请参阅其documentation 以了解如何使用它。在找出适合您的情况的轮廓后,您可以使用

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-03
      • 2011-08-10
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多