[問題] OpenCV 圖檔通道問題

看板C_and_CPP (C/C++)作者 (上帝派來的)時間13年前 (2013/05/03 23:23), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) openCV 問題(Question): 目的: 讀取.jpg -> 分別存成 R G B 三色圖檔 問題一. 我要得到R的圖 發現必須把讀進來的image中 channel 2跟3 相加 才會等於紅色 所以channel並不是RGB組成 而是CMY color space嗎? 問題二. 若我有一張RGB圖檔,我要用RGB轉YCrCb的公式去轉成YCrCb http://ycc.tsu.edu.tw/9312/index.files/page0010.htm 我可以直接把計算完的Y值直接存到 cvCreateImage產生出的3 channel圖檔中 的其中一個channel嗎? 餵入的資料(Input): .jpg 預期的正確結果(Expected Output): 紅色.jpg 藍色.jpg 綠色.jpg 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) IplImage *image = cvLoadImage(filename,CV_LOAD_IMAGE_COLOR); IplImage *Y_Channel=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1); IplImage *C_Channel=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1); IplImage *M_Channel=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1); cvSplit(image,C_Channel,M_Channel,Y_Channel,0); IplImage *Blue_image = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3); IplImage *Red_image = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3); IplImage *Green_image = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3); cvMerge(C_Channel,M_Channel,0,0,Red_image);//RED cvMerge(0,M_Channel,Y_Channel,0,Blue_image);//BLUE cvMerge(C_Channel,0,Y_Channel,0,Green_image);//GREEN 必需要兩個channel合起來才會是RED ,BLUE ,GREEN圖 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.239.227

05/04 16:40, , 1F
你的讀圖參數問題 用 default 就好了 cvLoadImage的問題
05/04 16:40, 1F

05/04 16:40, , 2F
可以參考官網說明 另外 opencv2 比較好用~
05/04 16:40, 2F

05/06 00:53, , 3F
唔..讀進來的圖應該是BGR而不是RGB
05/06 00:53, 3F

05/06 00:54, , 4F
轉YCrCb可以直接用cvCvtColor
05/06 00:54, 4F
文章代碼(AID): #1HWzPOQQ (C_and_CPP)
文章代碼(AID): #1HWzPOQQ (C_and_CPP)