How to calculate 3D histogram in python using open CV

前端 未结 2 1400
花落未央
花落未央 2021-01-06 08:22

I want to calculate 3D histogram of my Cielab image in python. I am using openCV to calculate my histogram. I want to compare images using compareHist function

2条回答
  •  粉色の甜心
    2021-01-06 08:46

    I came across this question while trying to make a 3D histogram of an HSV image, and encountered the same error. It turns out that the OpenCV documentation is leading us astray here. The docs are written for the C++ API and as such can only be used as a vague guide to the Python cv2 API (although I have found that the docs are misleading for C++ as well at times).

    The function signature is as follows:

    cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) -> hist
    

    The key point is that the channels, histSize and ranges parameters should be flat lists, not nested lists as in your example. Try the following, assuming i_lab is a three-channel image:

    range_hist = [0, 100, -100, 100, -100, 100]
    hist_1 = cv2.calcHist([i_lab], [0, 1, 2], None, [20, 20, 20], range_hist)
    

    For a more complete example, try this code listing from the opencvpython blog.

提交回复
热议问题