OpenCV 單通道三通道理解

2021-09-01 06:34:00 字數 1545 閱讀 7436

單通道: 此通道上值為0-255。 (255為白色,0是黑色) 只能表示灰度,不能表示彩色。

三通道,在bgr (255,255,255為白色, 0,0,0是黑色 )  可以表示彩色, 灰度也是彩色的一種。

cv::imread函式。

screen是一張彩色圖:  cv::mat mat = cv::imread("/root/desktop/photos/screen.png"); mat是三通道的,mat可以表示彩色。

screen是一張彩色圖    cv::mat mat = cv::imread("/root/desktop/photos/screen.png",cv_load_image_grayscale); mat是單通道的,mat只能表示灰色。

screen是一張灰色圖:  cv::mat mat = cv::imread("/root/desktop/photos/screen.png",cv_load_image_grayscale);  mat是單通道,mat只能表示灰色。

screen是一張灰色圖:  cv::mat mat = cv::imread("/root/desktop/photos/screen.png"); mat是三通道,mat可以表示彩色。雖然顯示出來是灰色,但是也是由bgr表示出來的。

單通道與三通道之間的轉換:

1. 上面的imread其實也可以看作是一種轉換。。(目前我用的就是這個)

接下來這兩個方法,還沒實踐過,先記錄下來,只作參考:

2.把單通道影象轉成三通道影象。方法如下: 

[cpp] view plaincopyprint?

iplimage* cannyimg = cvcreateimage(cvgetsize(gray_img),ipl_depth_8u,1);//cannyimag是單通道圖  

iplimage* canny_img = cvcreateimage(cvsize(cannyimg->width,cannyimg->height), ipl_depth_8u, 3);//canny_imag是3通道圖  

cvcvtcolor(cannyimg, canny_img, cv_gray2bgr);//進行變換  

3.split 分割通道

merge 合併通道。

cv::cvtcolor  顏色空間轉換,估摸這個是重點,要用到再好好研究,現在記錄在此。

備註:cv::mat mat = cv::imread("/root/desktop/photos/screen.png");  

cv::mat_mat_8 = mat.clone();  // mat是三通道,mat_8是單通道,直接轉殖過來的後果就是。。 從彩色變成灰色,長度是原來的3倍,高度一樣。   screen如果是灰色圖也是一樣的。

cv::mat mat = cv::imread("/root/desktop/photos/screen.png",cv_load_image_grayscale);

cv::mat_mat_24 = mat.clone(); // mat是單通道,mat_24是三通道。  這樣子clone執行會出錯- -!  還是得老老實實用上面的 cvtcolor - -!

單通道和三通道學習理解單通道

單通道 此通道上值為0 255。255為白色,0是黑色 只能表示灰度,不能表示彩色。三通道,在bgr 255,255,255為白色,0,0,0是黑色 可以表示彩色,灰度也是彩色的一種。cv imread函式。screen是一張彩色圖 cv mat mat cv imread root desktop...

實驗三 通道建設

實驗的目的和要求 了解通道的含義 信源編碼的流程,熟練掌握整數 小數的十進位制和二進位制的互換機制,並能程式設計實現。考核要求 熟悉並掌握十進位制與二進位制小數的互轉機制,並分析演算法產生的誤差 實驗內容 1 編寫程式實現十進位制小數x 0.7 的二進位制轉換,並分析其誤差 即重新將二進位制小數轉成...

關於單通道轉三通道一些問題

源影象的格式時 單通道 1280 712,輸出影象的格式位三通到 1280 3.源影象每一行的位元組數時1280個 因為1280個畫素點 我想問下三通到每一行的位元組數是不是1280 3 如果是的話 程式中 源影象的第一行畫素值賦給三通到1280個值後 輸出影象的部長我用的是源影象img imgst...