gpt4 book ai didi

python - 使用numpy和cv2处理大型二进制图像数组

转载 作者:行者123 更新时间:2023-12-02 17:49:48 26 4
gpt4 key购买 nike

我的代码如下:

import cv2; import numpy as np

class MyClass:
def __init__(self,imagefile):
self.image = cv2.imread(imagefile)

#image details
self.h,self.w = self.image.shape[:2]
#self.bPoints, self.wPoints = np.array([[0,0]]),np.array([[0,0]])
self.bPoints, self.wPoints = [],[]

#CAUTION! Points are of the form (y,x)
# Point filtering
for i in xrange(self.h):
for j in xrange(self.w):
if self.th2.item(i,j) == 0:
#self.bPoints = np.append([[i,j]], self.bPoints, axis=0)
self.bPoints.append((i,j))
else:
self.wPoints.append((i,j))
#self.wPoints = np.append([[i,j]], self.wPoints, axis=0)

#self.bPoints = self.bPoints[:len(self.bPoints) - 1]
#self.wPoints = self.wPoints[:len(self.wPoints) - 1]
self.bPoints, self.wPoints = np.array(self.bPoints), np.array(self.wPoints)

我想找到白色和黑色点并分开。我评论了通过numpy显示可能的(但非常慢)解决方案的行。您能推荐我一个更好更快的解决方案吗?如果您愿意,我将不胜感激!

谢谢

最佳答案

我假设self.th2是一个numpy数组。如果不是这种情况,则可能需要进行一些调整。基本上,这使用np.where函数来确定所有索引,这些索引都是0255

import cv2; import numpy as np

class MyClass:
def __init__(self,imagefile):
self.image = cv2.imread(imagefile)

#image details
self.h,self.w = self.image.shape[:2]
#self.bPoints, self.wPoints = np.array([[0,0]]),np.array([[0,0]])
self.bPoints, self.wPoints = [],[]

#CAUTION! Points are of the form (y,x)
# use the np.where method instead of a double loop.
# make sure self.th2 is a numpy array
indx = np.where(self.th2==0)
for i,j in zip(indx[0], indx[1]):
self.bPoints.append((i,j))

indx = np.where(self.th2==255)
for i,j in zip(indx[0], indx[1]):
self.wPoints.append((i,j))

# Point filtering
#for i in xrange(self.h):
# for j in xrange(self.w):
# if self.th2.item(i,j) == 0:
# #self.bPoints = np.append([[i,j]], self.bPoints, axis=0)
# self.bPoints.append((i,j))
# else:
# self.wPoints.append((i,j))
# #self.wPoints = np.append([[i,j]], self.wPoints, axis=0)

#self.bPoints = self.bPoints[:len(self.bPoints) - 1]
#self.wPoints = self.wPoints[:len(self.wPoints) - 1]
self.bPoints, self.wPoints = np.array(self.bPoints), np.array(self.wPoints)

关于python - 使用numpy和cv2处理大型二进制图像数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000924/

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