我正在使用Python编写一个方法,通过OpenCV处理来自相机的一些图像,并逐像素比较该图像与某些参数,根据这些参数,将该像素设置为零。执行此操作的代码片段如下:
while True:
ret, frame = cap.read() # retrieve image from the camera
for row in range(rows):
for col in range(cols):
b1 = (frame[row][col][:] < Nsigma2[row][col][:]).all();
b2 = (frame[row][col][:] > Psigma2[row][col][:]).all();
if not b1 and not b2:
frame[row][col][:] = [0,0,0];
cv.imshow('frame',frame) #show the processed image
if cv.waitKey(15) & 0xFF == ord('q'):
break
除了算法本身的正确性,这是遍历和访问numpy矩阵的正确方法吗?但是这种方法非常慢。我认为最慢的方向是矩阵的第三个分量,在内部循环中访问它,但我找不到更好的方法来解决这个问题。由于我不太熟悉Python,所以这种性能缓慢是否正常和可以预期?
numpy.where
语句进行合并。 - ebarr