[英]Calculate HSV histogram of a coloured image is it different from H-S histogram?
我想計算圖像的HSV直方圖。我進行了很多搜索,但沒有發現有用的信息。 在opencv在線指南中,我發現了HS直方圖。 V對照明有什么影響? HSV和HS是否相同(是說V對照明沒有影響)? 這是HS直方圖的代碼
cvtColor( Frame, hsv_base, CV_BGR2HSV );
int h_bins = 50;
int s_bins = 32;
int histSize[] = { h_bins, s_bins };
float h_ranges[] = { 0, 256 };
float s_ranges[] = { 0, 180 };
const float* ranges[] = { h_ranges, s_ranges };
int channels[] = { 0, 1 };
calcHist( &hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false );
我建議您閱讀有關HSV的Wiki頁面。
但是要給出一個快速答案,V分量基本上控制着顏色的亮度。 因此,如果目標是創建顏色直方圖,那么您就不想區分深綠色和淺綠色。
要回答您的問題,HS僅指HSV圖像的前兩個通道。 如果您確實想在3個通道中進行聚類,則可以通過修改代碼以在3個通道上起作用並在直方圖中添加第三維來實現。 但這可能不是您想要實現的。
cvtColor( Frame, hsv_base, CV_BGR2HSV );
int h_bins = 50;
int s_bins = 32;
int v_bins = 10;
int histSize[] = { h_bins, s_bins, v_bins };
float h_ranges[] = { 0, 256 };
float s_ranges[] = { 0, 180 };
float v_ranges[] = { 0, 256 };
const float* ranges[] = { h_ranges, s_ranges, v_ranges };
int channels[] = { 0, 1, 2};
calcHist( &hsv_base, 1, channels, Mat(), hist_base, 3, histSize, ranges, true, false );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.