如何使用mask计算直方图OPENCV?

2024-10-03 19:22:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我只需要计算图像的一个部分的直方图,但这部分是圆形的(像圆盘)。我创建了一个面具来找到图像上的那个部分

    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)

使用上面的代码,我找到了我感兴趣的“圆盘形状”区域。 现在我要计算直方图:

^{pr2}$

但有个错误

 error: (-215) !mask.data || mask.type() == CV_8UC1 in function cv::calcHist

但是,如果我在DIC上保存掩码并使用cv2.imread()读取它,则不会出现此错误。 我也试过用这条线

  hist_item = cv2.calcHist([slika],[ch],mask.astype(np.uint8),[256],[0,255])

我如何使用我创建的蒙版来计算直方图,这样我就不需要从光盘上进行w/r?在


Tags: 图像错误mask圆形直方图widthcv2int
1条回答
网友
1楼 · 发布于 2024-10-03 19:22:56

您创建的掩码需要是uint8类型,因此在创建掩码时将其设为uint8,然后将其传递给计算直方图。在

mask = np.zeros(image.shape[:2], dtype="uint8")

现在通过传递原始图像和当前掩码来计算直方图。在

^{pr2}$

相关问题 更多 >