IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV学习总结 -> 正文阅读

[人工智能]OpenCV学习总结

OpenCV学习总结

  1. 基础知识

读取图像
imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称,第二个参数,表示加载的图像是什么类型,支持常见的三个参数值
IMREAD_UNCHANGED(< 0) 表示加载原图,不做任何改变
IMREAD_GRAYSCALE(0)表示把原图作为灰度图像加载进来
IMREAD_COLOR(> 0) 表示把原图作为RGB图像加载进来

图像复制
部分复制:一般情况下只会复制Mat对象的头和指针部分,不会复制数据部分
Mat A = imread(imgFilePath);
Mat B(A) //部分复制
完全复制:如果想把Mat对象的头部和数据部分一起复制,可以通过如下两个API实现
Mat F = A.clone(); 或 Mat G; A.copyTo(G);
Mat new_image = Mat::zeros(image.size(), image.type()); 创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0

获取图像基本信息
int channels = image.channels();//图像波段数
int rows = image.rows;
int cols = image.cols * channels;

读一个GRAY像素点的像素值(CV_8UC1)
Scalar intensity = img.at(y, x); //注意xy 位置
Scalar intensity = img.at(Point(x, y));

读一个RGB像素点的像素值
Vec3f intensity = img.at(y, x);
float blue = intensity.val[0];
float green = intensity.val[1];
float red = intensity.val[2];

修改图像像素值
灰度图像
img.at(y, x) = 128;
RGB三通道图像
img.at(y,x)[0]=128; // blue
img.at(y,x)[1]=128; // green
img.at(y,x)[2]=128; // red
空白图像赋值
img = Scalar(0);
ROI选择
Rect r(10, 10, 100, 100);
Mat smallImg = img?;

  1. 常用API

//这个函数的功能是确保RGB值得范围在0~255之间
saturate_cast(288)

//将图像转化为位图 灰度或者RGB
cvtColor(src, dst, CV_RGBA2BGR);

//自定义卷积函数
Mat kernel = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, dst, src.depth(), kernel); //其中src与dst是Mat类型变量、src.depth表示位图深度,有32、24、8等。

图像混合
在这里插入图片描述
double alpha = 0.3;
addWeighted(src1, (1 - alpha), src2, alpha, 0.0, dest);

金字塔
上采样(cv::pyrUp) – zoom in 放大
降采样 (cv::pyrDown) – zoom out 缩小
pyrUp(Mat src, Mat dst, Size(src.cols2, src.rows2))
//生成的图像是原图在宽与高各放大两倍
pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2))
//生成的图像是原图在宽与高各缩小1/2

图像二值化
在这里插入图片描述
凸包检测
凸包检测判断是否左转,如果左转则删掉。
霍夫检测
霍夫直线变换原理,检测直线前提是边缘检测已经完成,角度不断变化会绘制出一条线,每个像素值都可以绘制出一条线,如果出现一定数量的交点检测出直线;
霍夫圆检测原理,已知XY控制R如果角度在0-360度变化如果交点比较多则认为是圆,有点像反向投影通过多个圆绘制交点;

  1. 平滑算子

均值模糊 blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));
特点:均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。
中值模糊 medianBlur(Mat src, Mat dest, ksize)
特点:中值滤波对脉冲噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。中值对椒盐噪声有很好的抑制作用。
高斯模糊 GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);
其中Size(x, y), x, y 必须是正数而且是奇数
特点:图像大多数噪声均属于高斯噪声,因此高斯滤波器应用也较广泛。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像去噪。
双边模糊 bilateralFilter(src, dest, d=15, 150, 3);
特点:高斯双边模糊是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变。
参考:https://blog.csdn.net/fan1102958151/article/details/106980216
计算点到多边形的距离pointPolygonTest;

  1. 形态学操作

膨胀和腐蚀是相对当背景色为黑色,物体为白色,膨胀时白色膨胀;
开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。
闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。
顶帽操作:原图像与“开运算“的结果图之差;因为开运算带来的结果是放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作和选择的核的大小相关。
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。 黑帽运算用来分离比邻近点暗一些的斑块。
积分图查找表
积分图查找表是将计算值进行累加然后通过计算右下角+左上角-右上角-左下角的值来计算当前像素点的累加和。

  1. 距离变换与分水岭变换步骤

/第一步:将白色背景变成黑色-目的是为后面的变换做准备/
/第二步:使用filter2D与拉普拉斯算子实现图像对比度提高,sharp锐化拉普拉斯得到图像边缘用原图减去边缘,差值更大,图像得到锐化,为图像二值化做准备/
/第三步:转为二值图像通过threshold/
/第四步:距离变换/
/第六步:使用阈值,再次二值化,得到标记/
/第七步:腐蚀得到每个Peak - erode/
/第八步:发现轮廓 – findContours/
/第九步:绘制轮廓- drawContours/
/第十步:分水岭变换 watershed/

  1. 提取边缘算法

1.Sobel与Scharr算子2.Laplance算子3.Canny边缘检测;
Sobel与Scharr算子通过计算XY的像素值差异来提取边缘,Laplance算子通过计算二阶导数来提取边缘,但是对噪声比较敏感所以可以先使用高斯滤波去除噪声,Canny边缘检测使用算子计算出边缘并通过非最大值抑制和双阈值限制来优化结果;

  1. 待更新

轮廓发现函数并绘制
直方图比较方法
匹配算法:1.直方图反投影算法2.模板匹配算法3.计算图像矩;
提取特征点算法:1.Harris角点检测2.Shi-Tomasi角点检测3.自定义角点检测器4.SURF特征检测5.SIFT特征检测6.HOG特征提取7.LBP局本特征提取8.Haar特征检测9.AKAZE局部匹配10.Brisk特征检测与匹配;
特征点匹配算法:1.Brute-Force匹配,2.FLANN快速特征匹配

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:00:48  更:2022-09-15 02:01:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:02:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码