單通道: 此通道上值為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...