我编写了一个程序,该程序可以找到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)
答案 0 :(得分:0)
您正在创建maskFinal的子图像。 maskFinal是二进制图像,与3通道lowerBound
不兼容。
要解决此问题,您实际上可以放下pixcount = cv2.inRange(area,lowerBound,upperBound )
行,蒙版图像的绿色区域为白色,因此计算非零就足够了。
注意:当前子图像包括形态转换。如果不想计算由这些像素引起的像素,则必须创建mask