看板 C_and_CPP 關於我們 聯絡資訊
#include "stdafx.h" #include <cv.h> #include <highgui.h> int main( int argc, char** argv ) { IplImage* image; image=cvLoadImage("image", 1); { // Compute the HSV image and decompose it into separate planes. // IplImage* hsv = cvCreateImage( cvGetSize(image), 8, 3 ); cvCvtColor( image, hsv, CV_BGR2HSV ); IplImage* h_plane = cvCreateImage( cvGetSize(image), 8, 1 ); IplImage* s_plane = cvCreateImage( cvGetSize(image), 8, 1 ); IplImage* v_plane = cvCreateImage( cvGetSize(image), 8, 1 ); IplImage* planes[] = { h_plane, s_plane }; cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); // Build the histogram and compute its contents. // int h_bins = 30, s_bins = 32; CvHistogram* hist; { int hist_size[] = { h_bins, s_bins }; float h_ranges[] = { 0, 180 }; // hue is [0,180] float s_ranges[] = { 0, 255 }; float* ranges[] = { h_ranges, s_ranges }; hist = cvCreateHist( 2, hist_size, CV_HIST_ARRAY, ranges, 1 ); } cvCalcHist( planes, hist, 0, 0 ); //Compute histogram cvNormalizeHist( hist, 1.0 ); //Normalize it // Create an image to use to visualize our histogram. // int scale = 10; IplImage* hist_img = cvCreateImage(cvSize( h_bins * scale, s_bins * scale ) ,8 , 3); cvZero( hist_img ); // populate our visualization with little gray squares. // float max_value = 0; cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); for( int h = 0; h < h_bins; h++ ) { for( int s = 100; s < s_bins; s++ ) { float bin_val = cvQueryHistValue_2D( hist, h, s ); int intensity = cvRound( bin_val * 255 / max_value ); cvRectangle( hist_img, cvPoint( h*scale, s*scale ), cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), CV_RGB(intensity,intensity,intensity), CV_FILLED ); } } cvNamedWindow( "HSVtest1", 1 ); cvShowImage( "HSVtest1", image ); cvWaitKey(0); } } 這是從書上拿下來練習的範例 想練習如何讓圖片只顯示想要的HUE值 但很多部分看不懂為什麼要這麼做 以及函數的功用 煩請高手幫個忙 謝謝@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.133
Jockey66666:先查查document吧,應該不會全部都看不懂吧 08/13 23:34
Jockey66666:不知道你不懂的地方是哪一段,講清楚點比較好回答 08/13 23:35
※ 編輯: GN00505257 來自: 163.25.118.133 (08/14 00:33)
GN00505257:大概是標示起來的地方 08/14 00:34
GN00505257:以及不知道為什麼要使用直方圖做轉換 08/14 00:35
Jockey66666:直方圖只是視覺化H跟S的值而已 08/14 01:07
Jockey66666:這範例不就是要教你怎麼使用histogram嗎? 08/14 01:08
GN00505257:抱歉因為我是先找跟圖像空間轉換相關的範例 08/16 01:42
GN00505257:所以也沒特別去注意範例的真正用意...現在知道了.謝謝 08/16 01:42