我正在处理一个带有OpenCV
应用程序的小项目,我遇到了一些我不知道如何实现的问题。假设我有一个图像(1024x768
)。在此图像中间有一个红色边界框。
是否可以使用OpenCS
计算红框内的像素?鉴于图像尺寸为1024x768
。
我试图通过对红色进行阈值处理来使用边界矩形并尝试使用convexhull
但是我无法提取红色标记内有多少像素。
答案 0 :(得分:5)
这很简单。显然,内部灰色和外部颜色是不同的。只是阈值图像。
ret,thresh=cv2.threshold(img,133,255,cv2.THRESH_BINARY_INV)
然后使用:
cv2.countNonZero(your_thresh_img)
它为您提供了白色像素的数量,这是您需要的计数。在你的图像中,它是183920像素。
修改强>
import numpy as np
import cv2
img=cv2.imread("your_image.png",0)
def nothing(x):
pass
cv2.namedWindow('image')
cv2.createTrackbar('min','image',0,255,nothing)
cv2.createTrackbar('max','image',0,255,nothing)
while(1):
a = cv2.getTrackbarPos('min','image')
b = cv2.getTrackbarPos('max','image')
ret,thresh=cv2.threshold(img,a,b,cv2.THRESH_BINARY_INV)
cv2.imshow("output",thresh)
k = cv2.waitKey(10) & 0xFF
if k == 27:
break
print cv2.countNonZero(thresh)
cv2.destroyAllWindows()