嗨,任何人都可以提供一個簡單的開放式cv程序來加載兩個RGB圖像,將其轉換爲灰度,計算直方圖,然後比較它們的直方圖。我在開放的cv站點看到了一個類似的程序,但他們使用HSV而不是灰度級,它是一個C++程序。我可以查看流程和一切......我不知道使用哪些函數以及它們的參數意味着什麼...... Regards, Kiran比較opencv灰度圖像的直方圖
0
A
回答
10
以下是執行此操作的簡單代碼段。既然你沒有告訴你想如何比較直方圖,我建議直觀地做。
#include <opencv2/opencv.hpp>
void show_histogram(std::string const& name, cv::Mat1b const& image)
{
// Set histogram bins count
int bins = 256;
int histSize[] = {bins};
// Set ranges for histogram bins
float lranges[] = {0, 256};
const float* ranges[] = {lranges};
// create matrix for histogram
cv::Mat hist;
int channels[] = {0};
// create matrix for histogram visualization
int const hist_height = 256;
cv::Mat3b hist_image = cv::Mat3b::zeros(hist_height, bins);
cv::calcHist(&image, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
double max_val=0;
minMaxLoc(hist, 0, &max_val);
// visualize each bin
for(int b = 0; b < bins; b++) {
float const binVal = hist.at<float>(b);
int const height = cvRound(binVal*hist_height/max_val);
cv::line
(hist_image
, cv::Point(b, hist_height-height), cv::Point(b, hist_height)
, cv::Scalar::all(255)
);
}
cv::imshow(name, hist_image);
}
int main (int argc, const char* argv[])
{
// here you can use cv::IMREAD_GRAYSCALE to load grayscale image, see image2
cv::Mat3b const image1 = cv::imread("C:\\workspace\\horse.png", cv::IMREAD_COLOR);
cv::Mat1b image1_gray;
cv::cvtColor(image1, image1_gray, cv::COLOR_BGR2GRAY);
cv::imshow("image1", image1_gray);
show_histogram("image1 hist", image1_gray);
cv::Mat1b const image2 = cv::imread("C:\\workspace\\bunny.jpg", cv::IMREAD_GRAYSCALE);
cv::imshow("image2", image2);
show_histogram("image2 hist", image2);
cv::waitKey();
return 0;
}
結果:
+0
非常感謝很多朋友......對不起,如果我含糊不清,但你給了我正在尋找的東西......再次感謝。 – user2236862
+2
請接受答案。謝謝。 – brotherofken
2
相關問題
- 1. 比較兩幅圖像特定區域的直方圖? OpenCV
- 2. Android與opencv - 圖像灰度
- 3. OpenCV:將灰度圖像着色的直接方法
- 4. OpenCV的比較圖像
- 5. 直方圖比較
- 6. OpenCV for ANDROID圖像比較
- 7. OpenCV的灰度圖像矢量
- 8. OpenCV Java中的灰度反轉圖像
- 9. OpenCV的CUDA C++ C圖像灰度
- 10. 的OpenCV - 繪製灰度圖像
- 11. 比較直方圖的比較方法在opencv中不工作3.1.0
- 12. OpenCV - 從圖像中獲取灰度值
- 13. 閱讀圖像灰度opencv 3.0.0-dev
- 14. OpenCV - 讀取16位灰度圖像
- 15. openCV將Mat轉換爲灰度圖像
- 16. numpy圖像中灰度值的直方圖
- 17. 多層比較直方圖
- 18. OpenCV的圖像調整比較MATLAB的
- 19. 灰度圖像
- 20. 面向灰度的直方圖
- 21. 灰度的圖像
- 22. 比較OpenCV中的直方圖並規範化相似索引
- 23. 比較文件中的多個直方圖OpenCV
- 24. 顏色比例在圖像python opencv使用直方圖
- 25. 直方圖opencv
- 26. RGB彩色圖像直方圖使用OpenCV C++對比度拉伸
- 27. 在OpenCV中將灰度圖像轉換爲二進制圖像
- 28. 比較虹膜圖像與opencv
- 29. 使用OpenCV比較兩個圖像
- 30. OpenCV:使用ORB比較多個圖像
你是什麼意思「比較直方圖」? – brotherofken