形态遮罩出现错误

时间:2019-03-21 20:08:05

标签: python numpy opencv bitmask

我编写了一个程序,该程序可以找到2个ROI,在2个单独的帧中选择它们,然后计算每个帧的绿色像素数。 它工作正常,但是当我为相机应用形态学遮罩时,它给了我错误:/home/pi/opencv/opencv-3.4.0/modules/core/src/arithm.cpp:1769:错误:(-209)较低boundary既不是与src具有相同大小和类型的数组,也不是inRange函数中的标量 我怎样才能解决这个问题?

问题在这里发生

select v.name from (values ('Jon'), ('Joe'), ('Jane'), . . . ) v(name) where not exists (select 1 from table1 t1 where t1.name = v.name);

完整代码

maskClose=cv2.morphologyEx(maskOpen,cv2.MORPH_CLOSE,kernelClose) 
 maskFinal=maskClose ... for i in range(len(conts)): 
 x,y,w,h=cv2.boundingRect(conts[i]) area=maskFinal[y:y+h, x:x+w] pixcount = 
 cv2.inRange(area,lowerBound,upperBound ) pixNum = cv2.countNonZero(pixcount)

1 个答案:

答案 0 :(得分:0)

您正在创建maskFinal的子图像。 maskFinal是二进制图像,与3通道lowerBound不兼容。

要解决此问题,您实际上可以放下pixcount = cv2.inRange(area,lowerBound,upperBound )行,蒙版图像的绿色区域为白色,因此计算非零就足够了。

注意:当前子图像包括形态转换。如果不想计算由这些像素引起的像素,则必须创建mask

的子图像
相关问题