Compare histograms of specific areas of two images? OpenCV

帅比萌擦擦* 提交于 2019-12-12 13:22:41

问题


Basically, I want to be able to compare two histograms, but not of whole images just specific areas. I have image A and have a specific rectangular region on it that I want to compare to another image B. Is there a way to get the histogram of a definable rectangular region on an image? I have the x y position of the rectangular area, as well as it's width and height, and want to get its histogram. I'm using opencv with python.

Sorry if that isn't very clear :(

(I'm setting up a program that takes a picture of a circuit board, and checks each solder pad for consistency with an image of a perfect board. If one pad is off, the program raises a flag saying that specific pad is off by x percent, not the whole board.


回答1:


Note: The following is in C++ but I think it is not hard to find the equivalent functions for python.

You can find the histogram of an image using this tutorial. So for example for the lena image we get:

In your case, since you have the rectangle coordinates, you can just extract the ROI of the image:

// C++ code
cv::Mat image = cv::imread("lena.png", 0);
cv::Rect roiRect = cv::Rect(150, 150, 250, 250);
cv::Mat imageRoi = image(roiRect);

and then find the histogram of just the ROI with the same way as above:

Is this what you wanted (in theory at least) or I misunderstood?



来源:https://stackoverflow.com/questions/12750889/compare-histograms-of-specific-areas-of-two-images-opencv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!