【发布时间】:2014-01-31 16:51:56
【问题描述】:
我只需要在图像的一部分上计算直方图,但这部分是圆形的(如圆盘)。我创建蒙版以在图像上找到该部分
cv2.rectangle(mask,(0, 0), (width, height), (0,0,0), -1)
cv2.circle(mask,(int(avgkrug[0]),int(avgkrug[1])),radijusp2,(255,255,255),-1)
cv2.circle(mask,(int(avgkrug[0]),int(avgkrug[1])),radijusp1,(0,0,0),-1)
使用上面的代码,我找到了我感兴趣的“圆盘形”区域。 现在我正在尝试计算直方图:
for ch, col in enumerate(color):
hist_item = cv2.calcHist([img],[ch],mask,[256],[0,255])
...
但出现此错误
error: (-215) !mask.data || mask.type() == CV_8UC1 in function cv::calcHist
但是,如果我在 dics 上保存掩码并使用 cv2.imread() 读取它,则不会出现此错误。 我也试过用这条线
hist_item = cv2.calcHist([slika],[ch],mask.astype(np.uint8),[256],[0,255])
我如何使用我创建的掩码来计算直方图,这样我就不需要从磁盘读取数据?
【问题讨论】:
-
检查掩码的数据类型,
mask.dtype。它应该是 np.uint8。 -
print(type(mask.dtype)) ->
print(np.result_type(mask.dtype)) ->仍然出现uint8错误
标签: python opencv image-processing computer-vision histogram