
OpenCV
文章平均质量分 87
桔子code
微信搜索[桔子code],也有干货
展开
-
OpenCV-Python教程:查找轮廓、绘制轮廓
查找轮廓,绘制轮廓原创 2022-06-19 23:55:58 · 2353 阅读 · 2 评论 -
OpenCV-Python教程:霍夫变换~圆形(HoughCircles)
原文链接:http://www.juzicode.com/opencv-python-houghcircles返回OpenCV-Python教程在OpenCV中HoughCircles()方法可以用来查找圆形,找到的圆形通过圆心位置和半径进行描述。1、接口接口形式:cv2.HoughCircles(image,method,dp,minDist[,circles[,param1[,param2[,minRadius[,maxRadius]]]]])->circles参数.原创 2021-12-31 23:05:32 · 12209 阅读 · 3 评论 -
在Python中使用微信扫码功能(OpenCV WeChatQRCode)
怎么在python中嵌入微信扫码功能微信开发团队在今年年初的时候将其二维码扫描功能贡献给了OpenCV社区,在OpenCV-Python中也可以使用微信扫码功能了。使用前需要安装opencv-contrib-python包,注意安装的包不能低于4.5.2版本。使用起来也非常简单,近乎一行流的风格,首先是用wechat_qrcode_WeChatQRCode()创建检测实例,再用detectAn原创 2021-12-28 23:32:56 · 18282 阅读 · 10 评论 -
OpenCV-Python教程:模板匹配(matchTemplate)
模板匹配可以实现在源图像中查找特征图像,特征图像一般是一个矩形图像。在前面的文章中桔子菌也介绍到过一些关于“匹配”功能的方法,比如形态学变换中的击中击不中,它的要求非常高,如果像素值存在任何细小差别就会导致击不中,也就是不能匹配,另外比如直方图反映射,可以用来匹配某种颜色的区域。原创 2021-12-17 22:30:00 · 10196 阅读 · 2 评论 -
OpenCV检测与识别条码、二维码
目录1、BarcodeDetector 识别条形码2、QRCodeDetector 识别二维码扩展阅读:1、BarcodeDetector 识别条形码OpenCV在V4.5.3版本的contrib包中提供了一个barcode::BarcodeDetector类,用这个类可以实现条形码的识别,不过目前仅支持EAN13编码的条形码,其他类型的条形码在当前版本的BarcodeDetector还不支持。在Python中使用,需要先安装opencv的contrib包:pip in..原创 2021-12-14 08:30:00 · 10030 阅读 · 0 评论 -
OpenCV非真实感绘制(铅笔画、卡通画、边沿保持、细节增强)
原文链接:http://www.juzicode.com/opencv-note-non-photorealistic-renderingOpenCV中提供了几个非真实感绘制的接口函数,我们可以借助这些函数得到卡通画、素描画、美颜以及细节增强的图像。detailEnhance()用来增强图像的细节:cv2.detailEnhance(src[,dst[,sigma_s[,sigma_r]]])->dstedgePreservingFilter()实现边沿保持滤波,可以实现磨皮、美原创 2021-12-10 08:30:00 · 2150 阅读 · 2 评论 -
又发现一条喵星人将要统治地球的新线索(OpenCV猫脸检测)
都说喵星人快要统治地球了,各种证据正在被发现……OpenCV的开发人员似乎也发现了些什么,在其发布版本里悄悄留下了些线索:在OpenCV-Python安装包目录的data文件夹下,有2个“frontcal cat face”文件,对比其他几个人脸识别的文件,从名称上可以推测出也是级联分类器,用来识别猫脸的,这明显是要为以后喵星人统治地球提前做技术储备呀。为了以后更好地服务喵星人,我们来看看这些猫脸级联分类器怎么用。第一步是在创建分类器对象的时候加载分类器文件,需要指明分类器文件的原创 2021-12-07 08:30:00 · 508 阅读 · 0 评论 -
OpenCV-Python教程:直方图比对、直方图反投影(compareHist,calcBackProject)
直方图比对用于比较图像的相似度;直方图反投影用于计算图像和特征图像的匹配程度原创 2021-12-05 23:08:16 · 4991 阅读 · 1 评论 -
OpenCV-Python教程:直方图均衡(equalizeHist,createCLAHE)
直方图均衡就是让图像的像素个数多的灰度级拉的更宽,对像素个数少的灰度级进行压缩,从而达到提高图像的对比度的目的。从直方图的直观效果来看,就是让y轴比较高的位置变矮向x轴方向膨胀,y轴比较矮的位置变高并在x轴方向压缩。原创 2021-12-01 20:29:09 · 14689 阅读 · 2 评论 -
OpenCV-Python教程:直方图及其绘制(calcHist)
原文链接:http://www.juzicode.com/opencv-python-histogram-calchist-draw-hist返回Opencv-Python教程图像的直方图反映的是图像像素值的统计特征,比如一个CV_8U类型的图像,表示的是其在0~255的256种数值的分布情况。我们可以将统计“颗粒度”划分在每一个像素值上,当然统计区间也可以不必在每一个像素值上划分,也可以将0-255平分成更宽的区间,比如0-7,8-15…..248-255每8个像素值作为一个区间来统计。在直方图中原创 2021-11-11 08:30:00 · 8921 阅读 · 0 评论 -
OpenCV-Python教程:统计函数~L1、L2、无穷范数、汉明范数(norm,NORM_HAMMING2,NORM_HAMMING)
原文链接:http://www.juzicode.com/opencv-python-statistics-norm返回Opencv-Python教程1、什么是范数下图是百度百科关于范数的定义:从定义可以看到L1范数是所有元素的绝对值的和;L2范数是所有元素(绝对值)的平方和再开方;无穷范数是所有元素取绝对值后再取最大值;在OpenCV中所有元素展开成一个集合构成了上述x1,x2……xn;汉明范数不在上述定义中,汉明范数又称汉明距离,最开始用于数据传输的差错控制编码,表示两个相同原创 2021-11-05 22:25:50 · 5109 阅读 · 0 评论 -
OpenCV-Python教程:颜色图(applyColorMap)[只需几行代码生成22种风格各异的彩色图]
返回OpenCV-Python教程原文链接:http://www.juzicode.com/opencv-note-color-map-applycolormap在OpenCV中通常使用cvtColor()进行色彩空间的转换,它可以实现彩色图像在各种色彩空间里的转换,也可以用于彩色图像和灰度图像之间相互转换,但是在彩色图像转换到灰度图像后,再用该灰度图转换回彩色图像只是名义上多通道的彩色图像,人眼看到的却不是“彩色”了。下面这个例子展示了这个彩转灰、灰转彩的过程:#vx:桔子code / ju原创 2021-10-27 20:01:58 · 21952 阅读 · 2 评论 -
OpenCV-Python教程:统计函数~非零数、极值、和、均值、标准差、行列统计(countNonZero,minMaxLoc,sumElems,mean,meanStdDev,reduce)
原文链接:http://www.juzicode.com/python-opencv-statistics-countnonzero-minmaxloc-sumelems-mean-meanstddev-reduce返回Opencv-Python教程本文介绍图像统计功能相关的函数,包含统计元素中非零值的数量、最小值、最大值、和、均值、标准差,以及单行或单列的最小值、最大值、和、均值。1、非0值数量 countNonZerocountNonZero()用来统计元素值为非0值的像素点个数。接原创 2021-10-24 15:24:06 · 7298 阅读 · 0 评论 -
OpenCV-Python教程:边沿检测(Canny)
原文链接:http://www.juzicode.com/opencv-python-detect-edge返回Opencv-Python教程Canny图像梯度反映的是图像像素值的变化过程,不管变化大小都考虑在内,所以Sobel,Laplacian变换得到的是一个多级灰度图。边沿检测也可以看做是图像梯度的一种延伸,不过边沿检测更注意图像的“边沿”部分,图像梯度变化较小的部分会被忽略,只有较大变化的部分保留下来。今天要介绍的canny边沿检测有低错误率、很好地定位边缘点、单一的边缘点响应.原创 2021-10-23 09:39:24 · 1006 阅读 · 0 评论 -
OpenCV-Python教程:图像梯度(Sobel,Scharr,Laplacian)
原文链接:http://www.juzicode.com/opencv-python-image-gradient返回Opencv-Python教程高斯平滑、双边平滑和均值平滑、中值平滑介绍的平滑处理可以看做是图像的“低通滤波”,它会滤除掉图像的“高频”部分,使图像看起来更平滑,而图像梯度则可以看做是对图像进行“高通滤波”,它会滤除图像中的低频部分,为的是凸显出图像的突变部分。在形态学变换~开闭操作,顶帽黑帽,形态学梯度,击中击不中(morphologyEx)一文中我们也接触到了图像梯...原创 2021-10-15 00:15:00 · 1667 阅读 · 2 评论 -
Visual Studio配置OpenCV工程
原文链接:http://http://www.juzicode.com/opencv-note-vs-project-config1、新建工程新建一个Visual C++ 项目,选择Win32-Win32控制台应用程序,输入工程名称、路径:在应用程序设置中选择控制台应用程序,附加选项选择空项目:2、添加源文件根据OpenCV库文件的bit版本,这里选择x64:右键点击源文件新建或添加cpp文件:3、修改项目属性在修改项目属性前,先要准备好库文件,可以从open原创 2021-08-10 21:57:40 · 2027 阅读 · 2 评论 -
OpenCV-Python教程:形态学变换~开闭操作,顶帽黑帽,形态学梯度,击中击不中(morphologyEx)
形态学变换除了OpenCV-Python教程:形态学变换~腐蚀和膨胀介绍的腐蚀和膨胀还有开操作、闭操作、顶帽变换、黑帽变换等,这些变换都是以morphologyEx()的接口函数调用的,该函数的接口形式如下:cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) ->dst参数含义: src:源图像,通道数任意;图像深度只能是CV_8U, CV_16U, CV原创 2021-08-19 19:33:07 · 1616 阅读 · 0 评论 -
OpenCV-Python教程:形态学变换~腐蚀和膨胀(erode,dilate)
原文链接:http://www.juzicode.com/opencv-python-erode-dilate返回Opencv-Python教程形态学变换是基于图像形状的变换过程,通常用来处理二值图像,当然也可以用在灰度图上。OpenCV中的形态学变换同平滑处理一样也是基于一种“滑动窗口”的操作,不过在形态学变换中“滑动窗口”有一个更专业的名词:“结构元”,也可以像平滑处理那样称呼为kernel,结构元的形状有方形、十字形、椭圆形等,其形状决定了形态学变换的特点。形态学变换主要有腐蚀、膨胀、开操作、原创 2021-08-10 22:30:16 · 7040 阅读 · 0 评论 -
OpenCV-Python教程:阈值化(threshold,adaptiveThreshold)
图像的阈值化(有些场合也称二值化)是图像分割的一种,一般用于将感兴趣区域从背景中区分出来,处理过程就是将每个像素和阈值进行对比,分离出来需要的像素设置为特定白色的255或者黑色的0,具体看实际的使用需求而定。1、threshold()threshold的接口形式如下:cv2.threshold(src, thresh, maxval, type[, dst]) ->retval, dst该方法返回2个值,第1个值retval为阈值,第2个值dst为阈值化后的图像。 参数含义:原创 2021-07-16 19:07:11 · 1911 阅读 · 1 评论 -
OpenCV-Python教程:高斯平滑、双边平滑(GaussianBlur,bilateralFilter)
返回Opencv-Python教程图像在生成、传输或存储过程中可能因为外界干扰产生噪声,从而使图像在视觉上表现为出现一些孤立点或者像素值突然变化的点,图像平滑处理的目的就是为了消除图像中的这类噪声。在讲平滑处理前,先来了解下在OpenCV中平滑处理用到的“滑动窗口”的概念,下面的这个例子中选择了一个ksize=3x3的滑动窗口(或称滤波器模板、kernel),如黄色部分所示。用这个ksize=3x3的窗口作用于原始图像上的每一个像素,如下图的绿色部分所示,被这个窗口覆盖的9个像素点都参与计算,这样在原创 2021-07-26 20:35:22 · 6287 阅读 · 0 评论 -
OpenCV-Python教程:平滑处理–均值平滑、中值平滑(blur,medianBlur)
返回Opencv-Python教程图像在生成、传输或存储过程中可能因为外界干扰产生噪声,从而使图像在视觉上表现为出现一些孤立点或者像素值突然变化的点,图像平滑处理的目的就是为了消除图像中的这类噪声。在讲平滑处理前,先来了解下在OpenCV中平滑处理用到的“滑动窗口”的概念,下面的这个例子中选择了一个ksize=3的滑动窗口(滤波器模板),如黄色部分所示。用这个ksize=3的窗口作用于原始图像上的每一个像素,如下图的绿色部分所示,在该像素点上就会得到一个新的像素值,当窗口沿着图像逐个像素进行计算,就原创 2021-07-26 20:32:40 · 6448 阅读 · 1 评论 -
OpenCV-Python教程:几何空间变换~缩放、转置、翻转(resize,transpose,flip)
原文链接:http://www.juzicode.com/archives/6228返回Opencv-Python教程在OpenCV-Python教程:色彩空间变换一文中我们介绍了在色彩空间对图像进行转换的方法,比如BGR转换为GRAY格式的灰度图,BGR色彩空间转换为HSV色彩空间,这篇文件将介绍图像在几何空间的转换,包括图片的缩放、转置、翻转等等。1、缩放resize()resize()可以实现图片大小的缩小或放大,接口形式:dst=cv2.resize(src, dsize[..原创 2021-06-28 21:49:46 · 896 阅读 · 0 评论 -
OpenCV-Python教程:几何空间变换~仿射变换、旋转(warpAffine、rotate)
原文链接:http://www.juzicode.com/archives/6500返回Opencv-Python教程在前一篇几何空间变换~缩放、转置、翻转文章中我们介绍了转置、缩放、翻转,其中水平或垂直方向的翻转实际上对图像进行了镜像操作,本文介绍的仿射变换可以对图像进行任一角度的旋转、图像矫正、平移。1、仿射变换warpAffine()仿射变换的接口形式如下:dst=cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[..原创 2021-07-02 22:52:22 · 1903 阅读 · 1 评论 -
OpenCV-Python教程:色彩空间变换(cvtColor)
在数字图像中,最常见的彩色模型是RGB模型(红、绿、蓝,在OpenCV中彩色图像组织的顺序是B-G-R,仍然是RGB模型),这种模型是硬件处理的常用模型,比如采集图像的CCD传感器、显示图像的显示器等等,符合描述人类眼睛观察的则是HSV(色度、饱和度、亮度)模型。1、色彩转换cvtColor()OpenCV则提供了各种彩色模型(色彩空间)相互转换的接口,比如可以从BGR转换为HSV,HSV转换为BGR,也可以从BGR转换为灰度图。色彩空间的转换函数cvtColor()的接口形式:dst=c原创 2021-06-18 22:58:32 · 3196 阅读 · 2 评论 -
OpenCV-Python教程:通道分离、通道合并(split、merge)
原文链接:http://www.juzicode.com/archives/5612返回Opencv-Python教程彩色图像是包含多通道的图像,比如用BGR三通道表示的彩色图像,或者是包含了alpha通道的BGRA四通道图像。有时做图像处理时如果多通道同时处理,可能并不能达到很好的效果,但是如果分离出某一个通道出来处理可能会有更好的效果,一个例子是在来看看怎么用OpenCV解构Twitter大牛jagarikin的视觉错觉图一文中可以看到在做二值化时只处理HSV色彩空间中的S分量效果更好。..原创 2021-05-31 21:21:55 · 4957 阅读 · 1 评论 -
OpenCV-Python教程:绘制多边形、输出文字(polylines,putText,解决中文乱码问题)
原文链接:http://www.juzicode.com/archives/5575返回Opencv-Python教程在OpenCV-Python教程:绘制直线、圆形、方形一文中介绍了怎么绘制直线、圆形、方形,这里介绍下怎么绘制多边形、输出文字。1、多边形cv2.polylines()用来画多边形。第1个参数为图像对象; 第2个参数为包含一个三元组元素的列表,包含了多边形的各个顶点; 第3个参数为Bool型参数表示是否闭合; 第4个参数为颜色; 第5个参数为线条宽度,注意...原创 2021-05-31 21:19:00 · 10378 阅读 · 5 评论 -
OpenCV-Python教程:绘制直线、圆形、方形(line,circle,rectangle)
原文链接:http://www.juzicode.com/archives/5323返回Opencv-Python教程因为绘图操作需要用到起点、终点坐标等参数,绘图前需要先了解在OpenCV中图像像素位置的坐标表示方法。一般我们用的直角坐标系x轴向右增长,y轴向上增长,但是在OpenCV图像中,y却是向下增长的,也就说一张图片左上角顶点的坐标为(0,0),这样的处理也符合人类从左到右、从上到下的阅读习惯。另外有点和常识不同的地方是我们常说“R-G-B”三原色,一个像素可以用R、G、B三种像素原创 2021-05-31 21:17:55 · 2926 阅读 · 4 评论 -
OpenCV-Python教程:像素操作
原文链接:http://www.juzicode.com/archives/5631返回Opencv-Python教程图像的像素级操作包括读某个或某些像素值、以及写像素值。因为在OpenCV-Python中图像是以numpy数组形式表示的,所以可以使用下标索引的方式来访问像素。1、numpy数组的访问在做像素操作前需要先搞清楚下标索引的方法,下面以一个宽高为16×10的灰度图(单通道)为例。在图片中x轴方向的大小为0~15,y轴方向的大小为0~9且是向下的,我们通常描述一个二维空间的原创 2021-05-31 21:21:04 · 1845 阅读 · 1 评论 -
OpenCV-Python教程:图像加减乘除运算的共性问题
原文链接:http://www.juzicode.com/archives/6109返回Opencv-Python教程在前面的4篇文章中我们分别介绍了图像的加减乘除四种运算,这四种运算函数接口长得比较像,用法类似,有必要总结对比下。1、函数接口OpenCV-Python是OpenCV的Python接口,通过对比原生的C++接口,可以更详细地了解函数的使用方法。运算方式 C++接口 Python接口 加法 void cv::add ( InputArray src1,原创 2021-06-14 22:19:40 · 685 阅读 · 0 评论 -
OpenCV-Python教程:图像的位运算
原文链接:http://www.juzicode.com/archives/5816返回Opencv-Python教程图像的位运算是指对图像的数值按照二进制值逐位进行取反、与、或、异或操作。1、按位取反bitwise_not()按位取反就是将数值根据每个bit位1变0,0变1,比如0xf0按位取反就变成了0x0f,如果是uint8类型的数据,取反前后的数据相加结果为0xff(255)。下面的例子将lena.jpg和opencv-logo.png分别按位取反:import cv2pri原创 2021-06-15 20:13:40 · 933 阅读 · 4 评论 -
OpenCV-Python教程:图像的乘法运算(multiply)
原文链接:http://www.juzicode.com/archives/6052返回Opencv-Python教程1、图像乘法multiply()multiply()用法:dst=cv2.multiply(src1, src2[, dst[, scale[, dtype]]]),src1和src2为图像对象,可选参数scale为放大倍数。结果dst=saturate(scale*src1*src2)multiply()遵循饱和运算规则,比如uint8类型的数据如果超过255会被截断到原创 2021-06-06 19:43:52 · 5694 阅读 · 1 评论 -
OpenCV-Python教程:图像的除法运算(divide)
原文链接:http://www.juzicode.com/archives/5321返回Opencv-Python教程通过前面的几篇文章我们了解了图像的加法、减法和乘法,今天就来聊聊除法。1、图像除法divide()divide()有2种用法:dst = cv2.divide( src1, src2[, dst[, scale[, dtype]]] ):第1个和第2个位置参数都是图像对象,可选参数scale参数指定src1的放大倍数,dst=saturate(src1*scale/src原创 2021-06-08 19:29:39 · 3947 阅读 · 1 评论 -
OpenCV-Python教程:图像属性(高宽,通道,size,数据类型)
原文链接:http://www.juzicode.com/archives/5399返回Opencv-Python教程在OpenCV-Python中图像表示成numpy数组,图像的属性也可以通过numpy的属性获得。1、图像行列数、通道数(shape属性)一个图像像素的行列数(高、宽)、通道数可以通过shape属性获取,需要注意的是numpy数组的shape属性下标0表示的图像的行数(rows,高),下标1表示的是列数(cols,宽),下标2表示的是通道数,但是如果是灰度图shape是一个二原创 2021-05-31 21:19:57 · 9384 阅读 · 1 评论 -
OpenCV-Python教程:从视频文件、相机获取图像、写视频文件(VedioCapture,VedioWrite)
返回Opencv-Python教程原文链接:http://www.juzicode.com/archives/5380OpenCV-Python教程:读取图像、显示、写入图像一文介绍了怎么处理静态图像文件,这篇文件介绍怎么从相机、视频文件、动态图片文件获取图像,以及写入视频文件的方法。1、从视频文件获取图像使用cap = cv2.VideoCapture(‘文件名称’)构建视频文件的cap实例。cap.read()方法逐帧提取视频,每一帧为一幅图像,cap.read()方法返回的是一个.原创 2021-05-31 21:16:48 · 1544 阅读 · 0 评论 -
OpenCV-Python教程:读取图像、显示、写入图像(imread,imshow,imwrite,waitKey)
原文链接:http://www.juzicode.com/archives/5395返回Opencv-Python教程这篇文件介绍怎么用OpenCV-Python从静态图片文件中获取图像、显示图像,以及怎么保存静态图像文件。在OpenCV-Python教程:从视频文件或相机获取图像、写视频文件一文中介绍怎么读取和保存视频文件。1、读取图片imread()imread()方法在第1个位置参数传入图像文件的路径,如果读取文件成功返回一个numpy数组,如果获取失败将返回None。这里..原创 2021-05-31 21:15:07 · 5721 阅读 · 4 评论 -
OpenCV-Python教程:模块安装
原文链接:http://www.juzicode.com/archives/5331返回Opencv-Python教程可以使用pip安装opencv-python,注意安装模块名称是:“opencv-python”pip install opencv-pythonimport导入模块的名称为“cv2”,检查安装的opencv-python版本判断是否安装完成:Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC原创 2021-05-31 21:10:54 · 240 阅读 · 0 评论 -
OpenCV官方网站:这里可以白嫖教程、检索API、下载例程
原文链接:http://www.juzicode.com/archives/6339OpenCV作为一款开源图像处理库,提供了丰富的文档供开发者使用、查阅,在这些文档中提供了丰富的教程、API接口说明、例程、Q&A。教程在OpenCV的官方网站(www.opencv.org)首页上找到在线文档的入口Online Documentation(docs.opencv.org),以当前(21.6)最新稳定版4.5.2为例,进入4.5.2版本的文档主页:在网页上方也能看到当前进入原创 2021-06-23 08:22:33 · 11117 阅读 · 0 评论 -
CMake构建、编译OpenCV工程
原文链接:http://www.juzicode.com/opencv-note-cmake-project-vs-windowsOpenCV除了提供二进制包,还可以下载其源码手动编译二进制文件,不过源码中并没有提供可以直接编译的工程文件,需要借助CMake工具完成工程文件的构建。获取源码从官网opencv.org找到github链接,或者直接进入https://github.com/opencv/opencv/releases找到相应的版本,这里以4.5.3为例:在该版本下有多个发原创 2021-08-10 21:50:19 · 381 阅读 · 0 评论