OpenCV图像处理基础
1 OpenCV简介
核心模块:
- HighGUI
- Image Process
- 2D Featrue
- Camera Calibration and 3D reconstruction
- Video Analysis
- Object Detection
- Machine Learning
- GPU加速
2 加载、修改、保存图片
- 加载图像:cv::imread
- 修改图像:cv::cvtColor
- 保存图像:cv::imwrite
加载图像:
cv::imread("FileName" ,类型 , )
加载图像成为一个Mat对象,支持JPG、PNG、TIFF等
IMREAD_UNCHANGED(<0):加载原图
IMREAD_GRAYSCALE(0):加载原图的灰度图像
IMREAD_COLOR(>0):把原图作为RGB图像加载
显示图像:
namedWindow("Window Title",WINDOW_AUTOSIZE)
创建一个OpenCV窗口,由OpenCV自动释放与创建,无须手动销毁
imshow("Window Title",MatObject)
显示图像到指定窗口上
cvtColor(image,cvtedImage,COLOR_BGR2GRAY)
把图像从一个彩色空间转换到另一个彩色空间
1 |
|
3 图像对象的创建与赋值
Mat基本结构:头部(大小、宽高、通道数…)+数据部分】
使用m1=m2
是进行引用传递
而Mat m1 = src.clone();
或Mat m2;src.copyTo(m2);
是克隆
创建空白图像
1 | Mat m4 = Mat::zeros(src.size(),src.type()); |
其中8UC1:8位无符号单通道;8UC3:8位无符号3通道
对Mat的加减乘除全部经过重载
m = 127; //把矩阵的第一个通道的值全变成127
m = Scalar(127,127,127); //Sclalar(b,g,r)
4 图像像素的读写操作
1 | void Demo_1::VistPixel(Mat &image) { |
5 图像像素的算术操作
1 | void Demo_1::OperatePixel(Mat &image) { |
saturate_cast<Type>()
:限制数据不超过Type类型
6 TrackBar滚动条操作演示
1 | int lightness = 50; |
7 TrackBar参数传递(亮度、对比度调整)
1 | static void onlight(int b,void* userdata); |
1 | PORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,double beta, double gamma, OutputArray dst, int dtype = -1); |
8 键盘响应操作
1 | void Demo_1::key_demo(Mat &image) { |
waitKey()
无键盘输入的情况下返回的是默认值-1,键盘按下后会返回对应键值的ASCII
9 Opencv自带颜色表操作
1 | void Demo_1::color_style_demo(Mat &image){ |
10 图像像素的逻辑操作
1 | void Demo_1::bitwise_demo(Mat &image) { |
11 通道分离与合并
1 | void Demo_1::channels_demo(Mat &image){ |
12 图像色彩空间转换
1 | void Demo_1::inrange_demo(Mat &image){ |
13 图像像素值统计
1 | void Demo_1::pixel_static_demo(Mat &image){ |