opencv5 讀取畫素

2021-08-04 19:13:34 字數 2107 閱讀 7165

題外話:畫素大戰,感興趣的可以去看這個電影,就能更好的理解畫素是個什麼東東。

畫素(pixel

):由picture

影象和element

28畫素,比如

15*15

厘公尺的,等於

420*420

畫素的長度。 在

opencv

中經常出現通道,所以在單通道、多通道下的影象的畫素是這樣表示的

圖畫的不好看,明天補上!

1、訪問畫素at(int x,int y);

要指定元素所在的行和列。若影象是單通道,返回值是單個數值,若影象是多通道,返回值是一組向量(

vector)。

cv::mat

的公有成員變數

cols

和rows

給出了影象的寬和高

at()函式的使用,有一點很重要,在編譯時要知道影象的資料型別。

單通道:

image.at(j,i)=value;

多通道:

image.at(j,i)[0] =value;

image.at( j,i)[1] =value;

image.at( j,i)[2] =value;

at中(i,j)的順序表示的是第i行第j列,跟point(i,j)和rect(i,j)中表示第j行第i列是相反的,所以上面都寫為at(j,i).這一點不注意非常容易出現記憶體異常的錯誤。

影象遍歷是影象處理中少不了的,一般有指標和迭代器兩種方式。

2、指標遍歷

其只能針對沒有經過填充的連續影象。判斷方法呼叫iscontinuous,返回值為true或false 3

迭代器

在物件導向程式設計中,遍歷資料集合通常都是通過迭代器完成的。迭代器是一種特殊的類,專門用來遍歷集合中的各個元素,同時隱藏在給定的集合上元素迭代的具體實現方式。

/*

*本程式是學會使用:1、用下標訪問畫素,2、使用迭代器訪問畫素 , 3、使用指標訪問畫素

*4、把影象寫入磁碟**

*/#include //訪問元素用下標

/*這個函式每次迴圈都將乙個隨機選取的畫素的值設定為255,隨機選取的畫素的行號i和列j 是通過隨機函式得到的。

通過檢查影象的通道數來區分灰度和彩色圖,對於灰度圖直接將畫素值設定為255,對於彩色圖,需要將每乙個通道值

都設定為255才能得到乙個白色畫素。

*/void salt(cv::mat &img , int n)

//彩色圖

else if(3 == img.channels())

}//擴充套件:

//cv::mat_im1 = img ;

//im1(50 , 100) = 0 ;//對於已經知道返回型別時 可以這樣訪問元素

}//減少影象顏色數

void colorreduce(cv::mat &img , int div = 64) }}

void colorreduce3(cv::mat img , cv::mat &result , int div = 64) }}

void colorreduce4(cv::mat img , cv::mat &result , int div = 64)

//const迭代器兩種定義方法

//cv::matconstiterator_it ;

//cv::mat_::const_iterator it ;

}void colorreduce5(cv::mat img , cv::mat &result , int div = 64)

int n = static_cast(log(static_cast(div)) / log(2.0)) ;

uchar mask = 0xff << n ;

for(int i = 0 ; i < rnum ; ++ i) }

}void colorreduce6(cv::mat img , cv::mat &result , int div = 64)

int main()

OPENCV 5 學習筆記

opencv 5 學習筆記 線性濾波 關於濾波和模糊 濾波可分低通濾波和高通濾波兩種。而高斯濾波是指用高斯函式作為濾波函式的濾波操作,至於是不是模糊,要看是高斯低通還是高斯高通,低通就是模糊,高通就是銳化。高斯濾波是一種線性平滑濾波,適用於消除高斯雜訊,廣泛應用於影象處理的減噪過程。載入原圖 mat...

opencv 讀取畫素值

話不多說,新手在不斷學習,剛剛看見讀取每個畫素點值很是好奇。include include using namespace std int main 不過通過上訴方法在速度方面會比較慢。可以通過如下方法加快訪問,更改速度。iplimage成員有 int nsize int id 比較重要的兩個元素是...

OpenCv 5 繪製形狀與文字

1 畫線 line void cvline cvarr img,cvpoint pt1,cvpoint pt2,cvscalar color,int thickness 1,int line type 8,int shift 0 第乙個引數img 要划的線所在的影象 第二個引數pt1 直線起點 第二...