我需要在我的图片上只对一个部分进行直方图计算,但是这个部分具有圆形形状(如圆盘)。我创建了一个掩码来找到图像上的那个部分。
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
然而,如果我将掩码保存在磁盘上并使用cv2.imread()读取它,则不会出现此错误。 我还尝试使用此行:
hist_item = cv2.calcHist([slika],[ch],mask.astype(np.uint8),[256],[0,255])
如何使用我创建的掩模计算直方图,以便无需从磁盘读取/写入?
mask.dtype
。它应该是np.uint8。 - Abid Rahman K