opencv入门

本文是OpenCV入门教程,详细介绍了如何配置OpenCV4.4环境,包括在VS2015上的设置。接着,通过一个简单的图像读取和显示例子,展示了基本的Mat对象和图像处理函数,如色彩空间转换、图像像素的读写操作、Mat算术操作。同时,还涵盖了滚动条参数调整、颜色风格转换、图像逻辑操作、通道分离与合并、指定色彩范围区域提取、像素统计信息、图像几何形状绘制、随机数与随机颜色、多边形绘制、鼠标响应操作、图像像素类型转换与归一化、图像放缩与插值、图像翻转、图像平移旋转、视频摄像头使用和处理、直方图计算、二维直方图、直方图均衡化、图像模糊处理(包括高斯模糊和双边模糊)以及人脸检测等核心概念和操作。
摘要由CSDN通过智能技术生成

1,opencv4环境配置与搭建

版本opencv4.4 + vs2015 64 + win10

Visual studio 2015

新建 Win32控制台程序-> 空项目 -> Release

视图 -> 其他窗口 -> 属性管理器 -> vc++目录配置包含目录和库目录/链接器配置opencv_world440.lib

添加path环境变量opencv-4.4.0\opencv\build\x64\vc14\bin

重启vs

2,新建项目,引入头文件,重新生成解决方案

#include <opencv2/opencv.hpp>

#include <iostream>

using namespace cv;

using namespace std;

Int main() {

Mat src = imread(“xxx”, IMREAD_GRAYSCALE);

If(src.empty()) {

printf(“xxx\n”);

Return -1;

}

namedWindow(“aaa”, WINDOW_FREERATIO);

Imshow(“aaa”, src);

waitKey(0);

return 0;

}

3,opecv函数

1.色彩空间转换函数- cvtColor

COLOR BGR2GRAY = 6 彩色到灰度

COLOR GRAY2BGR = 8 灰度到彩色

COLOR BGR2HSV = 40 BGR到HSV

COLOR HSV2BGR = 54 HSV到 BGR

imread 读取后的是BGR三通道+透明度的8位的图像

HSV H:0~180, S,V: 0~255 H和S表示颜色,V用来决定图像的亮度,S可以调整饱和度

4,Mat对象(包含header/data block)

ones用于三通道时只会把第一个值赋值为1

=号赋值,指针指向同一个对象

copyTo和clone才是新增一个对象

Mat mat = Scalar(255,255,255); 直接对通道赋值

5,图像像素的读写操作(双for循环)

1,数组下标方式

单通道-灰度图像值读取

int pv image.at<uchar>(row.col);

image.at<uchar>(row,col) = 255 - pv;

三通道-彩色图像值读取

Vec3b bgr = image.at<Vec3b>(row, col);

image.at<Vec3b>(row,col)[0] = 255 - bgr[0];

image.at<Vec3b>(row,col)[1] = 255 - bgr[1];

image.at<Vec3b>(row,col)[2] = 255 - bgr[2];

2,指针方式

单通道-灰度图像值读取

uchar* current_row = image.ptr<uchar>(row);

int pv = *current_row;

*current_row++ = 255 - pv;

三通道-彩色图像值读取

*current_row++ = 255 - *current_row;

*current_row++ = 255 - *current_row;

*current_row++ = 255 - *current_row;

6,Mat算术操作

image + Scale(2,2,2); // add()

image - Scale(2,2,2); // subtract()

image / Scale(2,2,2); // divide()

Mat m = Mat::zeros(image.size(), image.type());

m = Scale(2,2,2);

multiply(image,m,dist);

saturate_cast<uchar>(); // 限定在0-255, 小于或大于进行截断

6,滚动条演示操作(找到图像最佳参数)

static void on_lightness(int b, void* userdata) {

Mat image = *((Mat*)userdata);

Mat dst = Mat::zeros(image.size(), image.type());

Mat m = Mat::zeros(image.size(), image.type());

addWeighted(image, 1.0, m, 0, b, dst);

}

static void on_lightness(int b, void* userdata) {

Mat image = *((Mat*)userdata);

Mat dst = Mat::zeros(image.size(), image.type());

Mat m = Mat::zeros(image.size(), image.type());

addWeighted(image, b/100.0, m, 0.0, 0, dst); // 将两个图像加权相加

}

createTrackbar(“Value Bar: ”, “亮度调整”, 50, 100, on_lightness, (void*)(&image));

createTrackbar(“Contrast Bar: ”, “对比度调整”, 100, 200, on_contrast, (void*)(&image));

7,颜色风格转换(applyColorMap)

int colormap[]= {

COLORMAP_AUTUMN,

COLORMAP_BONE,

COLORMAP_JET,

COLORMAP_WINTER,

COLORMAP_RAINBOW,

COLORMAP_OCEAN,

COLORMAP_SUMMER,

COLORMAP_SPRING,

COLORMAP_COOL,

COLORMAP_PINK,

COLORMAP_HOT,

COLORMAP_PARULA,

COLORMAP_MAGMA,

COLORMAP_INFERNO,

COLORMAP_PLASMA,

COLORMAP_VIRIDIS,

COLORMAP_CIVIDIS,

COLORMAP_TWIL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星月IWJ

曾梦想杖键走天涯,如今加班又挨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值