cv::Vec ,以及和 .at(int y, int x)的用法(opencv)


1.cv::Vec<type, 長度> :固定向量類

其實可以把它當成數組,例如Vec<uchar,3>,就是定義一個uchar類型的,長度為3的數組。

Vec3b,Vec3f是它具體情況下的別名

typedef  Vec<uchar,3>  Vec3b   //為 Vec<uchar,3>定義別名Vec3b
typedef  Vec<float,3>  Vec3f   //為 Vec<float,3>定義別名Vec3f    

2. cv::mat的成員函數: .at(int y, int x)的用法

如有下面的代碼:

Mat image = imread("d:/test/apple.jpg", 1);		//創建Mat對象,保存一張彩色圖像(有3個通道),假設已知圖像的數據類型是uchar

image.at<Vec3b>(2,3)[0]=255;//為圖像(x,y)位置的像素點B通道重新賦值
image.at<Vec3b>(2,3)[1]=200;//為圖像(x,y)位置的像素點G通道重新賦值
image.at<Vec3b>(2,3)[2]=199;//為圖像(x,y)位置的像素點R通道重新賦值

image.at (x,y)[m]: image圖像(x,y)像素點m通道的值

因為圖像的數據類型是uchar,有三個通道,所以用 剛好可以存儲(x,y)位置的像素的三個通道的值,m表示m通道的值,0對應B,1對應G,2對應R。

另:

如果image是一個uchar類型的1同道的灰度圖像,則可以用image.at (x,y)表示某一具體像素點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM