OpenCV Python计数像素

时间:2017-08-23 09:44:21

标签: python opencv

我正在处理一个带有OpenCV应用程序的小项目,我遇到了一些我不知道如何实现的问题。假设我有一个图像(1024x768)。在此图像中间有一个红色边界框。

是否可以使用OpenCS计算红框内的像素?鉴于图像尺寸为1024x768

我试图通过对红色进行阈值处理来使用边界矩形并尝试使用convexhull但是我无法提取红色标记内有多少像素。

1 个答案:

答案 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()