gpt4 book ai didi

opencv - NumPy/OpenCV 2 : how to enumerate all pixels from region?

转载 作者:太空宇宙 更新时间:2023-11-03 21:28:04 24 4
gpt4 key购买 nike

这是我的 older question 的延续.

给定非矩形区域,我如何从中枚举所有像素并将它们排列为单个向量?顺序无关紧要(尽管应该是确定性的)。有没有什么快速的方法(或者至少是标准函数)或者我最好的方法是遍历图像中的像素并只从 ROI 中提取那些像素?

如果以后有可能从该矢量恢复区域数据,则额外加上。

最佳答案

您可以为此使用 numpy.where() 函数。您不必遍历像素。

我将从您的上一个问题继续。在接受的答案中,创建了一个蒙版,您在其上绘制了一个多边形,以确定蒙版区域。您需要做的是简单地找到该蒙版图像中像素为 255 的位置。

ROI_pixel_locations = np.transpose(np.where(mask[:,:,0]==255))

这将为您提供一个包含 x,y 位置的 Mx2 数组。

如果您使用的是 OpenCV 2.4.4 或更高版本,它有一个函数 cv2.nonzero() 具有完全相同的目的。

注意:

在上一个问题中,接受的答案创建了 3 channel 蒙版图像。如果它是单 channel 蒙版图像,你只需要这样给出:

ROI_pixel_locations = np.transpose(np.where(mask==255))

但是在 AND 操作期间,您修改行如下:

masked_image = cv2.bitwise_and(image,image, mask=mask)

关于opencv - NumPy/OpenCV 2 : how to enumerate all pixels from region?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16109444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com