opencv學習筆記(二)

2021-10-24 12:52:11 字數 2366 閱讀 3812

1.畫素讀寫和修改操作

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

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

讀乙個多通道畫素點的畫素值

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

float blue = intensity.val[0];

float green = intensity.val[1];

float red = intensity.val[2];

注意上面的vec3f 代表是三通道 float 型別,除此之外還有 vec3b等型別,按照需要對應使用

使用 img.convertto()可以進行float到uchar轉換

案例,讀取畫素實現反差操作,效果等同bitwise_not():

#include"pch.h"

#include#includeusing namespace std;

using namespace cv;

int main(int argc ,char** ar**)

namedwindow("input_image", cv_window_autosize);

imshow("input_image", src);

cvtcolor(src, gray_src, cv_bgr2gray);

namedwindow("output", cv_window_autosize);

imshow("output", gray_src);

/*單通道

int height = gray_src.rows;

int width = gray_src.cols;

for (int row = 0; row < height;row++)

}*/int height = src.rows;

int width = src.cols;

int nc = src.channels();

//for (int row = 0; row < height; row++)

// else if (nc == 3)

// }

//}mat dst;

dst.create(src.size(), src.type());

bitwise_not(src,dst);

namedwindow("fancha", cv_window_autosize);

imshow("fancha", dst);

waitkey(0);

return 0;

}

2.線性混合操作

addweight,也就是應用這個api的使用。

3.繪製簡單圖形(重要)

繪製圖形 往往和檢測同時出現,比如檢測出人臉之後用紅色框圈出

相關api cv::point 和cv :: scalar

point 表示2d平面上乙個點x,y 例如p=point(10,10);

scalar 表示四個元素的向量 scalar(a,b,c);//分別代表bgr三個通道

基本幾何形狀 基本就是記住英文名字調api

void mylines() 

void myrectangle()

void myellipse()

void mycircle()

void mypolygon() ;

int npt = ;

scalar color = scalar(255, 12, 255);

fillpoly(bgimage, ppts, npt, 1, color, 8);

}

寫文字:

puttext(bgimage, 「hello opencv」, point(300, 300), cv_font_hershey_complex, 1.0, scalar(12, 23, 200), 3, 8)

生成隨機數:

cv::rng ::rng

使用:

void randomlinedemo() 

line(bg, pt1, pt2, color, 1, 8);

imshow("random line demo", bg); }}

r(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));

if (waitkey(50) > 0)

line(bg, pt1, pt2, color, 1, 8);

imshow("random line demo", bg);

}}

opencv學習筆記(二)

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

OpenCV學習筆記二

影象操作 獲取畫素值 單通道 gray src.at row,col 三通道 int height src.rows int width src.cols int channels src.channels for int row 0 row height row 作用同上,或操作 bitwise ...

opencv學習筆記 二 操作畫素

第二章 操作畫素 2.1引言 灰度影象畫素由8位無符號數來表示,0表示黑色,255表示白色。彩色影象 rgb 畫素由三個8位的無符號數來表示,儲存方式為三元數 b,g,r 2.2訪問畫素值 mat類有若干成員和成員函式來獲取影象的屬性 成員cols和rows表示 寬和高 列和行 成員函式 at 畫素...