如何使用OPENCV高效地定位和保存具有一定值的像素?

2024-10-02 16:21:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用OpenCV搜索二值图像,并将所有白色像素提取到一个列表中。然而,我要尽可能多地提高效率,大约需要10秒。在

以下是我得到的(thresh2是阈值后的图像):

h,w=thresh2.shape[:2]
WhitePix=[]
for in range(0,h):
   TstVal=thresh2[i]
   if TstVal.max()=255:
      for j in range(0,w):
         if thresh2[i,j]==255:
            WhitePix.append([i,j])

我检查每一行是否有一个白色像素,如果有,我把它追加到我的列表中。在

OpenCV中有什么功能可以加快搜索速度吗?

提前谢谢。在


Tags: in图像列表forifrange阈值像素
2条回答

似乎您的thresh2是一个numpy数组。如果是这样的话,为什么不直接使用numpy过滤呢,这会更有效:thresh2.nonzero()将返回白色像素的索引。然后可以直接使用它来屏蔽数组:thresh2[thresh2.nonzero()]或任何下一步要做的事情。。。在

一般来说,在python中,可以避免的循环应该。在

您可以通过两种方式来完成:

1)使用Numpy函数

pixelpoints = np.transpose(np.nonzero(mask))

2)使用OpenCV函数

^{pr2}$

相关问题 更多 >