日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV中直方图的计算和绘制

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV中直方图的计算和绘制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV中直方圖的計算和繪制

主要記錄一下幾個關鍵的API:

cvRound(輸入一個浮點數 );//返回一個整型數,取整的方法為四舍五入 split(輸入多通道圖像,數組或者vector變量。 );

計算直方圖

calcHist(&分割后的單通道圖像,輸入數組的個數,需要統計的通道索引,Mat()掩碼儲存直方圖的矩陣,直方圖的維數,&每個維度的bin數,&每個維度的取值范圍,truefalse );

歸一化,將直方圖bin中的值縮放到指定的范圍:

normalize(輸入數組,歸一化后的輸出數組,歸一化范圍的小值,歸一化范圍的大值,NORM_MINMAX歸一化方法,-1,指示歸一化后的輸出數組與輸入數組同類型,Mat()掩碼 );

下面你是一個手敲的demo:

#include "opencv2/opencv.hpp" #include <vector>using namespace std; using namespace cv;int main(){Mat src = imread("/home/dynamicw/Project/C++_Project/opencvtest/src/lesson01/source/grass.jpg");imshow("src",src);vector<Mat> planes;split(src,planes);imshow("b",planes.at(0));imshow("g",planes.at(1));imshow("r",planes.at(2));int histSize = 255;float range[] = {0,255};const float* histRange = {range};Mat r_hist,g_hist,b_hist;calcHist(&planes[0],1,0,Mat(),r_hist,1,&histSize,&histRange,true,false);calcHist(&planes[1],1,0,Mat(),g_hist,1,&histSize,&histRange,true,false);calcHist(&planes[2],1,0,Mat(),b_hist,1,&histSize,&histRange,true,false);Mat histImage(400,400,CV_8UC3,Scalar(0,0,0));normalize(r_hist,r_hist,0,400,NORM_MINMAX,-1,Mat());normalize(g_hist,g_hist,0,400,NORM_MINMAX,-1,Mat());normalize(b_hist,b_hist,0,400,NORM_MINMAX,-1,Mat());int bin_w = cvRound((double)400/histSize);for(int i = 1;i < histSize;i++){line(histImage,Point(bin_w*(i-1),400-cvRound(r_hist.at<float>(i-1))),Point(bin_w*(i),cvRound(400-r_hist.at<float>(i))),Scalar(0,0,255),2,8);line(histImage,Point(bin_w*(i-1),400-cvRound(g_hist.at<float>(i-1))),Point(bin_w*(i),cvRound(400-g_hist.at<float>(i))),Scalar(0,255,0),2,8);line(histImage,Point(bin_w*(i-1),400-cvRound(b_hist.at<float>(i-1))),Point(bin_w*(i),cvRound(400-b_hist.at<float>(i))),Scalar(255,0,0),2,8);}imshow("hist",histImage);waitKey(0);return 0; }

總結

以上是生活随笔為你收集整理的OpenCV中直方图的计算和绘制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。