opencv中關於畫素的常見操作

2021-10-03 12:31:09 字數 1124 閱讀 9667

一、獲取影象畫素指標

mat.ptr(int i=0) 獲取畫素矩陣的指標,索引i表示第幾行,從0開始計行數。

獲得當前行指標const uchar*  current= myimage.ptr(row);

獲取當前畫素點p(row, col)的畫素值 p(row, col) =current[col]

二、畫素範圍處理saturate_cast

saturate_cast(-1),返回 0 

saturate_cast(300),返回 255

saturate_cast(100),返回 100

這個函式的功能是確保rgb值得範圍在0~255(uchar)之間

三、讀寫畫素

1.讀乙個gray畫素點的畫素值(cv_8uc1)

scalar intensity = img.at(y, x); 或者 scalar intensity = img.at(point(x, y));

2.讀乙個rgb畫素點的畫素值

vec3f intensity = img.at(y, x);

float blue = intensity.val[0]; /*通道0*/

float green = intensity.val[1]; /*通道1*/

float red = intensity.val[2];/*通道2*/

3.修改灰度影象畫素

img.at(y, x) = 128; /*將點(x,y)的畫素值更改為128*/

4.修改rgb三通道影象畫素

img.at(y,x)[0]=128; // blue

img.at(y,x)[1]=128; // green

img.at(y,x)[2]=128; // red

補充:vec3b對應三通道的順序是blue、green、red的uchar型別資料,而vec3f則是float型別資料。

使用OpenCv操作 分析畫素的基礎核心操作

基礎知識 1 opencv的影象格式 一般的影象檔案格式使用的是 unsigned 8bits cvmat矩陣對應的引數型別就是 cv 8uc1,cv 8uc2,cv 8uc3。最後的1 2 3表示通道數 最常用的是rgb三通道影象,cv 8uc3 而float 是32位的,對應cvmat資料結構引...

OpenCV中幾種常見讀取畫素值方法的讀取速度對比

opencv經常用到讀取影象畫素點的操作,還沒有自己測試過速度,正好有空試一試。應該還有別的讀取方式,以下就只測試了自己用到的7種。有的方法原理是相同。直接上 看結果 include include includeusing namespace cv using namespace std int ...

opencv關於畫素操作的彙總2

任何影象處理演算法,都是從操作每個畫素開始的。即使你不會使用opencv提供的各種影象處理函式,只要你了解影象處理演算法的基本原理,也可以寫出具有相同功能的程式。在opencv中,提供了種訪問每個畫素的方法 使用at方法 使用迭代器 使用指標。這三種方法在訪問速度上略有差異。debug模式下,這種差...