[問題] opencv範例請教

看板C_and_CPP (C/C++)作者 (...)時間16年前 (2009/08/13 22:53), 編輯推噓0(008)
留言8則, 2人參與, 最新討論串1/3 (看更多)
#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

08/13 23:34, , 1F
先查查document吧,應該不會全部都看不懂吧
08/13 23:34, 1F

08/13 23:35, , 2F
不知道你不懂的地方是哪一段,講清楚點比較好回答
08/13 23:35, 2F
※ 編輯: GN00505257 來自: 163.25.118.133 (08/14 00:33)

08/14 00:34, , 3F
大概是標示起來的地方
08/14 00:34, 3F

08/14 00:35, , 4F
以及不知道為什麼要使用直方圖做轉換
08/14 00:35, 4F

08/14 01:07, , 5F
直方圖只是視覺化H跟S的值而已
08/14 01:07, 5F

08/14 01:08, , 6F
這範例不就是要教你怎麼使用histogram嗎?
08/14 01:08, 6F

08/16 01:42, , 7F
抱歉因為我是先找跟圖像空間轉換相關的範例
08/16 01:42, 7F

08/16 01:42, , 8F
所以也沒特別去注意範例的真正用意...現在知道了.謝謝
08/16 01:42, 8F
文章代碼(AID): #1AX2a2mg (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):
文章代碼(AID): #1AX2a2mg (C_and_CPP)