基礎知識
(1)opencv的影象格式
一般的影象檔案格式使用的是 unsigned 8bits
cvmat矩陣對應的引數型別就是
cv_8uc1,cv_8uc2,cv_8uc3。
最後的1、2、3表示通道數
最常用的是rgb三通道影象,cv_8uc3
而float 是32位的,對應cvmat資料結構引數就是:cv_32fc1,cv_32fc2,cv_32fc3...
double是64bits,對應cvmat資料結構引數:cv_64fc1,cv_64fc2,cv_64fc3等。
(2)cv::mat 和cvmat的區別
cv::mat是乙個類(class),而cvmat是乙個struct,從型別上就可以知道二者存在很大區別。前者除了幾個成員變數之外還有很多的成員函式和過載函式,可以實現很多的影象資料處理功能,而後者只有幾個成員變數,要對其成員進行一些處理,需要借用別的函式。
(3)scalar
scalar可以理解成設定顏色
scalar(0)是單通道的黑色
scalar(0,0,0)是三通道rgb的黑色,注意opencv順序是bgr
載入一張影象獲取解析度
建立乙個三通道rgb的 mat預設設為藍色
cv::mat img2(height, width, cv_8uc3, cv::scalar(255, 0, 0));
對影象畫素進行取值和修改賦值的方法
for (int i = 0; i < height/2; i++)
for (int j = 0; j (i,j) = cv::vec3b(0,0,255);
}
for (int i = 0; i < height/2; i++)
for (int j = 0; j (i, j*img2.channels() + n)=0;
else if (n == 1)
img2.at(i, j*img2.channels() + n) = 0;
else if (n == 2)
img2.at(i, j*img2.channels() + n) = 255;
}
影象畫素的部分拷貝
for (int i = 0; i < height*width; i++)
}
影象轉殖,a是mat影象
mat f = a.clone();
mat g;
a.copyto(g);
影象顯示、更新與儲存
//imshow用於顯示和更新
cv::imshow("result", result);
opencv畫素操作
1 bit depth 位元數 代表8bite,16bites,32bites,64bites 舉個例子吧 比如說,如 如果你現在建立了乙個儲存 灰度的mat物件,這個影象的大小為寬100,高100,那麼,現在這張 灰度中有10000個畫素點,它每乙個畫素點在記憶體空間所佔的空間大小是8bite,8...
OpenCV 操作畫素(訪問畫素值)
為構建計算機視覺應用程式,我們需要學會訪問影象的內容,有時也要修改或者建立影象。本章將講講如何操作影象的元素 即畫素 影象本質上就是由陣列組成的矩陣。opencv使用了cv mat結構來操作影象。矩陣中的每乙個元素表示乙個畫素。對灰度影象而言,畫素是8位無符號數 資料型別為unsigned char...
OpenCV 畫素操作相關
print b,g,r img 100,100 返回影象 100,100 畫素處bgr的值,注意 opencv讀取的時候是bgr,不是rgb 因為返回的是元組,所以 b,g,r 得到畫素值 print b,g,r for i in range 1,100 img 10 i,100 255,0,0 c...