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 畫素...