OPENCV
文章平均质量分 94
利用opencv看世界
Mzcc_bbms
谁不是拼命走到生命的结尾
展开
-
Opencv4--仿射变换和透视变换
仿射变换和透视变换引言仿射变换和透视变换概念OpenCV函数封装引言我们在拍摄物体时,由于存在倾斜,拍摄图像中的物体难免会出现形变!因此我们需要对此类物体进行矫正处理!仿射变换和透视变换概念其实仿射变换和透视变换更直观的叫法可以叫做「平面变换」和「空间变换」或者「二维坐标变换」和「三维坐标变换」。如果这么命名的话,其实很显然,这俩是一回事,只不过一个是二维坐标(x,y),一个是三维坐标(x,y,z)从另一个角度也能说明三维变换和二维变换的意思,仿射变换的方程组有6个未知数,所以要求解就需原创 2021-04-14 11:00:22 · 606 阅读 · 0 评论 -
OpenCV4图像处理--二值图像轮廓拟合
二值图轮廓拟合边界矩形1 直边界矩形2 旋转边界矩形外接圆椭圆拟合直线拟合极点源代码参考边界矩形1 直边界矩形一个直矩形(就是没有旋转的矩形)。它不会考虑对象是否旋转。 所以边界矩形的面积不是最小的。可以使用函数 cv2.boundingRect() 查找得到。 (x,y)为矩形左上角的坐标,(w,h)是矩形的宽和高。x,y,w,h = cv2.boundingRect(array)2 旋转边界矩形这个边界矩形是面积最小的,因为它考虑了对象的旋转。用到的函数为 cv2.minArea原创 2020-12-18 15:33:46 · 1629 阅读 · 0 评论 -
OpenCV4深度神经网路--图像缩放 opencv
图像缩放图像缩放概念图像缩放算法opencv函数实现图像缩放概念图像缩放,顾名思义就是对图像进行放大或缩小的改变,其本质就是改变图像的宽度和高度,可以放大宽高,也可以缩小宽高。图像缩放算法图像缩放算法主要有:最近领域插值算法、双线性插值算法、立方插值算法和像素关系重采样算法。其中,OpenCV 默认使用双线性插值算法对图像进行缩放。opencv函数实现API:cv2.resizeimg = cv2.resize(img, (300,400)) #修改图片的尺寸img = cv2.res原创 2020-12-17 10:49:09 · 220 阅读 · 0 评论 -
OpenCV4深度神经网络--卷积神经网路基础
神经网络基础图像卷积卷积神经网络图像卷积图像卷积操作过程卷积操作数学原理卷积神经网络原创 2020-11-02 16:49:21 · 2966 阅读 · 0 评论 -
OpenCV4深度神经网路--神经网络基础
神经网络基础感知机原理神经网络深度神经网络感知机原理感知机可以说是最古老的分类方法之一了,在1957年就已经提出。今天看来它的分类模型在大多数时候泛化能力不强,但是它的原理却值得好好研究。因为研究透了感知机模型,学习支持向量机的话会降低不少难度。同时如果研究透了感知机模型,再学习神经网络,深度学习,也是一个很好的起点。感知机思想比如我们在一个平台上有很多的男孩女孩,感知机的模型就是尝试找到一条直线,能够把所有的男孩和女孩隔离开。放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够原创 2020-10-31 15:29:45 · 575 阅读 · 1 评论 -
OpenCV4深度神经网路--深度神经网络模块介绍
OpenCV深度神经网络 DNN 介绍OpenCV DNN 模块OpenCV开发环境配置OpenCV DNN 模块模块介绍OpenCV DNN 中支持的模型,github介绍OpenCV DNN 中支持的功能图像分类、对象检测、图像分割、场景文字检测、人脸检测与识别OpenCV开发环境配置Win10 + vs2019 + Opencv4环境配置...原创 2020-10-30 10:56:24 · 473 阅读 · 0 评论 -
OpenCV4图像处理--图像的形态学
图像形态学图像形态学介绍结构和元素形状腐蚀和膨胀开闭操作形态学梯度黑帽与顶帽击中击不中图像形态学介绍形态学的应用: 主要针对二值图进行,消除噪声、边界提取、区域填充、连通分量提取、凸壳、细化、粗化等;分割出独立的图像元素,或者图像中相邻的元素;求取图像中明显的极大值区域和极小值区域;求取图像梯度。结构和元素形状膨胀和腐蚀操作的核心内容是结构元素,(后面的开闭运算等重要的也是结构元素的设计,一个合适的结构元素的设计可以带来很好的处理效果)一般来说结构元素是由元素为1或者0的矩阵组成。结构元素为原创 2020-10-29 16:43:28 · 784 阅读 · 0 评论 -
OpenCV4图像处理--霍夫圆检测
霍夫圆检测霍夫圆检测原理API霍夫圆检测原理霍夫圆变换的基本原理和霍夫线变换类似, 只是点对应的二维极径极角空间被三维的圆心点x, y还有半径r空间取代;对直线来说, 一条直线能由参数极径极角 (r, \theta) 表示,而对圆来说, 我们需要三个参数来表示一个圆, 如上文所说现在原图像的边缘图像的任意点对应的经过这个点的所有可能圆是在三维空间有下面这三个参数来表示了,其对应一条三维空间的曲线. 那么与二维的霍夫线变换同样的道理, 对于多个边缘点越多这些点对应的三维空间曲线交于一点那么他们经过的共同原创 2020-10-29 10:12:44 · 1035 阅读 · 0 评论 -
OpenCV4图像处理--霍夫直线检测
霍夫直线检测霍夫直线检测原理霍夫直线检测步骤API霍夫直线检测原理霍夫变换 (Hough Transform)霍夫变换是图像处理必然接触到的一个算法,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果,该方法可以进行圆,直线,椭圆等形状的检测。例如:在车道线检测中,当初考虑的一个方案便是采用霍夫变换检测直线进行车道线提取。霍夫变换于1962年由 Paul Hough 首次提出,后于1972年由 Richard D原创 2020-10-28 19:51:59 · 2309 阅读 · 0 评论 -
OpenCV4图像处理--图像轮廓逼近与拟合
图像轮廓逼近与拟合轮廓逼近拟合轮廓逼近轮廓逼近的本质是减少编码点API:approxPolyDPCV_EXPORTS_W void approxPolyDP( InputArray curve, OutputArray approxCurve, double epsilon, bool closed );实例 Mat src1 = imread("F:/co原创 2020-10-28 14:30:02 · 1397 阅读 · 0 评论 -
OpenCV4图像处理--图像轮廓匹配
图像轮廓匹配图像的几何矩和Hu矩图像轮廓匹配计算图像的几何矩和Hu矩几何矩几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移、旋转和尺度不变性。 定义如下:Hu矩图像轮廓匹配计算基于Hu矩轮廓匹配相关API: moments 和 HuMoments 和 matchShapes//计算几何矩CV_EXPORTS_W Moments moments( InputArray array,原创 2020-10-28 11:10:55 · 1279 阅读 · 0 评论 -
OpenCV4图像处理--图像轮廓计算
图像轮廓计算轮廓面积与周长对轮廓的其他计算轮廓面积与周长求解方法API: contourArea 和 arcLength//计算轮廓面积CV_EXPORTS_W double contourArea( InputArray contour, bool oriented = false );//计算轮廓周长CV_EXPORTS_W double arcLength( InputArray curve, bool closed );利用轮廓的面积和周长,对轮廓进行过滤Mat src原创 2020-10-28 09:46:19 · 708 阅读 · 1 评论 -
OpenCV4图像处理--二值图像轮廓发现
图像轮廓发现图像轮廓概念图像轮廓发现算法图像轮廓概念图像轮廓就是图像边界,主要针对二值图像,轮廓就是一系列点的集合图像轮廓发现算法我们怎么来描述轮廓呢?那么我们是如何发现轮廓呢?按照怎样的方法来确定所有的轮廓?寻找的过程是怎样的?基于联通组件,反应图像拓扑结构算法思想: 论文:Topological structural analysis of digitized binary images by border following ,中主要介绍了两种算法,用来对数字二值图像进行拓扑分析原创 2020-10-27 16:16:57 · 506 阅读 · 0 评论 -
OpenCV4图像处理--二值图像联通组件扫描
联通组件扫描图像联通组件标记概念扫描联通组件的常见算法思考图像联通组件标记概念图像联通组件(CCL)四领域与八领域扫描联通组件的常见算法概念联通组件标记算法 (connected component labeling algorithm) 是图像分析中最常用的算法之一,算法的实质是扫描二值图像的每个像素点,对于像素值相同的而且相互连通分为相同的组(group),最终得到图像中所有的像素连通组件。扫描的方式可以是从上到下,从左到右,对于一幅有N个像素的图像来说,最大连通组件个数为N/2。原创 2020-10-27 14:26:29 · 810 阅读 · 0 评论 -
OpenCV4图像处理--阈值分割之二值图
二值图二值图与灰度图概念二值分割全局阈值自适应阈值二值图与灰度图概念PS:opencv 中二值图像是基于背景是黑色!!!!二值分割五种阈值分割方法 : 输入图像 + 阈值TAPI:thresholdCV_EXPORTS_W double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );PS : 注意这个原创 2020-10-26 16:31:44 · 1470 阅读 · 0 评论 -
OpenCV4图像处理--图像边缘提取
边缘提取图像边缘定义图像边缘类型边缘提取方法图像边缘定义图像边缘类型边缘提取方法基于梯度的边缘提取这种边缘提取方法的问题:对于阈值T的选择,总会导致不连贯的提取结果。Canny边缘提取创新之处:API:CannyCV_EXPORTS_W void Canny( InputArray image, OutputArray edges, double threshold1, double threshold2,原创 2020-10-26 10:46:51 · 428 阅读 · 0 评论 -
OpenCV4图像处理--图像噪声
图像噪声图像噪声图像去噪图像噪声噪声类型椒盐噪声、高斯噪声、其他噪声噪声生成(1)生成椒盐噪声:利用RNG 随机产生坐标点位置,然后对src相应的位置赋黑色的或者白色的像素值API: RNG//RNG int uniform(int a, int b); //salt and pepper RNG rng(12345); int h = src.rows; int w = src.cols; int nums = 10000; for (int i = 0; i &l原创 2020-10-26 09:35:43 · 539 阅读 · 0 评论 -
OpenCV4图像处理--USM锐化
USM锐化图像锐化增强图像锐化增强USM(Unsharp Mask)原理两种颜色相交时,不改变颜色本身,而只是将其交线变得清楚一些,可使图像看起来更清晰,这正是人眼的一种观察特征。采用照相制版中的虚光蒙版(模糊遮罩)原理,通过加大图像中相邻像素间的颜色反差,使图像的不同颜色之间生成明显的分界线,从而提高图像整体的清晰效果。sharp_image = blur - laplacian , 这样就能改善 laplacian 对噪声的敏感问题高斯与中值模糊的USM增强 // USM锐化 // U原创 2020-10-23 16:11:58 · 645 阅读 · 0 评论 -
OpenCV4图像处理--图像边缘发现
图像边缘发现二阶导数算子图像锐化二阶导数算子二阶导数算子,拉普拉斯算子(4领域,8领域)API:LaplacianCV_EXPORTS_W void Laplacian( InputArray src, OutputArray dst, int ddepth, int ksize = 1, double scale = 1, double delta = 0, int borde原创 2020-10-23 15:50:50 · 173 阅读 · 0 评论 -
OpenCV4图像处理--图像梯度
图像梯度图像梯度的概念常见梯度算子图像梯度的概念图像梯度思考,清晰图像和模糊图像之间的差别是什么?从逻辑上考虑,图像模糊是因为图像中物体的轮廓不明显,轮廓边缘灰度变化不强烈,层次感不强造成的,那么反过来考虑,轮廓边缘灰度变化明显些,层次感强些是不是图像就更清晰些呢。那么,这种灰度变化明显不明显怎样去定义呢?我们学过微积分,知道微分就是求函数的变化率,即导数(梯度),那么对于图像来说,可不可以用微分来表示图像灰度的变化率呢,当然是可以的,图像就是函数嘛。常见梯度算子Sobel算子:A原创 2020-10-23 15:16:22 · 282 阅读 · 0 评论 -
OpenCV4图像处理--图像模糊和自定义滤波器
图像模糊和自定义滤波器图像模糊盒子模糊高斯模糊高斯模糊和盒子模糊对比自定义滤波器图像模糊概念:图片的模糊,一直是图像处理领域一个比较重要的东西,它的用处不仅仅是我们平时PS的滤镜,也常常被用来做图片数据的降噪,图片的有损压缩,和图片特征相似匹配的优化工作,通过对图像进行卷积操作,可以得到模糊的图像,当然选择不同的卷积核,模糊效果不一样。盒子模糊API : boxFilter 也是一种均值模糊CV_EXPORTS_W void boxFilter( InputArray src, Outpu原创 2020-10-23 11:04:41 · 253 阅读 · 0 评论 -
OpenCV4图像处理--图像卷积
图像卷积概念与操作图像卷积概念图像卷积操作图像边缘像素操作图像卷积概念数字信号处理中的卷积: 卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果:通过“打脸”案例理解卷积:卷积理解数字图像处理中的卷积:数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用 卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值,并最终滑动完所有图像的过程。原创 2020-10-21 13:50:43 · 533 阅读 · 0 评论 -
OpenCV4图像处理--图像查找表和颜色表
查找表和颜色表图像查找表图像颜色表图像查找表查找表(look up table )概念查找表【i】=new value,查找表第i项(灰度值i)的新值为 new value。也就是,将原图像中像素值为i的像素变为值”new value“。查找表可以看成一个简单的一对一的映射函数 y= f(x)。对于较大的图像,有效的方法是预先计算所有可能的值,然后需要这些值的时候,利用查找表直接赋值即可。查找表是一维或多维数组,存储了不同输入值所对应的输出值,其优势在于只需读取、无需计算,所以大大提高处理速度。原创 2020-10-20 15:29:02 · 1432 阅读 · 0 评论 -
OpenCV4图像处理--图像直方图
图像直方图统计显示、均衡化、相似性比较图像直方图统计显示直方图均衡化直方图相似性比较图像直方图统计显示图像直方图概念那么,对于我们的图像直方图统计来说,对于 RGB 彩色图,像素值的范围是0~255,那么像素等级就有256个等级,也就是bin的个数是256,当然bin的个数也可以根据需要进行设置,例如设置16个bin,那么每个bin的范围是0-15API : calcHist,可以进行单通道或者多通道图像进行直方图统计CV_EXPORTS void calcHist( const Mat*原创 2020-10-19 14:16:58 · 279 阅读 · 0 评论 -
OpenCV4图像处理--图像像素通道分离与合并
像素通道分离与合并像素通道分离像素通道合并ROI :感兴趣区域像素通道分离API:split将一个三通道的图像,通过split API进行通道分离,存储到一个vector中; Mat src = imread("F:/code/images/test.png"); if (src.empty()) { printf("fail to read"); return -1; } namedWindow("input", WINDOW_AUTOSIZE); imshow("input"原创 2020-10-16 16:18:12 · 423 阅读 · 0 评论 -
OpenCV4图像处理--图形绘制与填充
基本图形绘制点和线:line矩形:rectangle圆:circle椭圆:ellipse填充:线宽值小于 0 就是填充PS: 基本图形绘制API中都有线条的颜色、线宽、线型和 shift :color: 线段的颜色,通过一个Scalar对象定义;thickness: 线条的宽度,默认是1;lineType: 线段的类型,可以取值8, 4, 和CV_AA, 分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接,为了获得更好地效果可以选用CV_AA(采用了高斯滤波);shift: 坐标原创 2020-10-09 21:00:14 · 1569 阅读 · 0 评论 -
OpenCV4图像处理--图像算术、位操作、像素信息统计
图像像素操作算术操作位操作算术操作加减乘除API: add、subtract、multiply、dividePS: 进行操作的图像大小和类型必须一致code: Mat dst1, dst2, dst3, dst4; add(src1, src2, dst1); imshow("add-Demo", dst1); subtract(src1, src2, dst2); imshow("sub-Demo", dst2); multiply(src1, src2, dst3);原创 2020-09-30 14:24:58 · 189 阅读 · 0 评论 -
OpenCV4图像处理--认识Mat
认识Mat对象什么是MatMat属性Mat对象创建与像素信息访问与遍历什么是Mat图像文件的内存数据对象Mat属性图像类型与结构信息获取图像基本信息 int width = img.cols;//宽 int height = img.rows;//长 int ch = img.channels();//通道数 int d = img.depth();//深度 int t = img.type();//类型Mat对象创建与像素信息访问与遍历原创 2020-09-25 11:01:59 · 215 阅读 · 0 评论 -
OpenCV4图像处理----图像读取与保存
图像文件加载显示与保存图像文件加载窗口与显示图像文件显示与保存代码示例图像文件加载imread函数默认的BGR彩色图像加载方式,此外支持灰度图像和任意格式窗口与显示namedWindow函数可以定义窗口名和窗口类型,后续通过窗口名进行交互图像文件显示与保存imshow函数,不支持透明通道imwrite函数,支持各种格式代码示例//图像读int main(){ //读取 cv::Mat img = cv::imread("D:/code/images/opencv-l原创 2020-09-25 10:39:09 · 435 阅读 · 0 评论 -
OpenCV4 开发环境搭建(windows)
opencv4.2+vs2019开发环境搭建openCV安装VS2019配置opencv库openCV安装进入opencv官网:https://opencv.org/,在Releases中选择 OpenCV - 4.2.0 Windows下载好以后是一个exe程序(实际就是一个zip),启动后就解压,解压后如下所示VS2019配置opencv库新建 vs2019 c++控制台程序,然后新建项目属性表,可以建Debug和Release:项目属性表具体配置如下:注意,有d的代表d原创 2020-09-23 15:06:04 · 389 阅读 · 1 评论