我遇到了 OpenCv 的 python 包装器的问题。如果黑色像素的数量大于阈值,我有这个函数返回 1
def checkBlackPixels( img, threshold ):
width = img.width
height = img.height
nchannels = img.nChannels
step = img.widthStep
dimtot = width * height
data = img.imageData
black = 0
for i in range( 0, height ):
for j in range( 0, width ):
r = data[i*step + j*nchannels + 0]
g = data[i*step + j*nchannels + 1]
b = data[i*step + j*nchannels + 2]
if r == 0 and g == 0 and b == 0:
black = black + 1
if black >= threshold * dimtot:
return 1
else:
return 0
当输入是 RGB 图像时,循环(扫描给定图像的每个像素)效果很好......但如果输入是单通道图像,我会收到此错误:
for j in range( width ):
TypeError: Nested sequences should have 2 or 3 dimensions
输入单通道图像(在下一个示例中称为“rg”)取自一个名为“src”的 RGB 图像,该图像经过 cvSplit 和 cvAbsDiff 处理
cvSplit( src, r, g, b, 'NULL' )
rg = cvCreateImage( cvGetSize(src), src.depth, 1 ) # R - G
cvAbsDiff( r, g, rg )
我也已经注意到问题来自从 cvSplit 获得的差异图像......
任何人都可以帮助我吗?谢谢