opencv Mat.at


opencv c++ mat獲取像素及像素賦值

For accessing pixel's channel value :

for (int i = 0; i < image.cols; i++) {
    for (int j = 0; j < image.rows; j++) {
        Vec3b intensity = image.at<Vec3b>(j, i);
        for(int k = 0; k < image.channels(); k++) {
            uchar col = intensity.val[k]; 
        }   
    }
}

 

For changing a pixel value of a channel :

uchar pixValue;
for (int i = 0; i < image.cols; i++) {
    for (int j = 0; j < image.rows; j++) {
        Vec3b &intensity = image.at<Vec3b>(j, i);
        for(int k = 0; k < image.channels(); k++) {
            // calculate pixValue
            intensity.val[k] = pixValue;
        }
     }
}

附錄:引用

http://www.cppblog.com/gtwdaizi/articles/38521.html

C++返回引用類型 指針的引用

C++返回引用類型
A& a(){ return *this;} 就生成了一個固定地址的指針,並把指針帶給你

但A a() { return *this;}會生成一個臨時對象變量,並把這個臨時變量給你
這樣就多了一步操作

當返回一個變量時,會產生拷貝。當返回一個引用時,不會發生拷貝,你可以將引用看作是一個變量的別名,就是其他的名字,引用和被引用的變量其實是一個東西,只是有了兩個名字而已。

問題的關鍵是,當你想要返回一個引用而不是一個拷貝時,你要確保這個引用的有效性,比如:
int & fun() { int a; a=10; return a; }
這樣是不行的,因為a會在fun退出時被銷毀,這時返回的a的引用是無效的。
這種情況下,如果fun的返回類型不是int & 而是int就沒有問題了。


指針的引用
GetNearestFontInTwips(CFont *&aFont, const TFontSpec &aFontSpec);

第一個參數aFont是一個指針, 前面加上*&表示指針的引用, 其實可以如下看待這個方式(CFont*) &aFont, 這就一目了然了.

 

// image.at返回的是引用,將引用賦值到intensity
 Vec3b intensity = image.at<Vec3b>(j, i);

//intensity是image.at返回的引用的另一個別名
 Vec3b &intensity = image.at<Vec3b>(j, i);

 

 

 

 


免責聲明!

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



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