opencv
Loading_create
有问题请私信联系。
展开
-
最快速度写出一个识别效果——OpenCV模板匹配(含代码)
在上述代码中,我们首先读取原图像和模板图像,并使用cv2.matchTemplate()函数进行模板匹配。然后使用cv2.minMaxLoc()函数寻找匹配程度最高的位置,并根据模板图像的尺寸计算出目标区域的左上角和右下角坐标。最后,在原图像中使用cv2.rectangle()函数标记目标区域。当我们需要在图像中查找特定的目标时,模板匹配(Template Matching)是一种常用的方法。通过比较模板图像(即目标图像)和原图像中各个位置的像素值,找到最相似的位置,即可定位目标区域。原创 2023-05-29 08:05:39 · 863 阅读 · 0 评论 -
pyqt圆形label显示摄像头
如何在PyQt5中制作出圆形显示框。原创 2022-06-16 17:29:33 · 866 阅读 · 4 评论 -
学会opencv(十七)最终章——模板匹配
模板匹配(Template Match)模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。matchTemplate(InputArray image,// 源图像,必须是8-bit或者32-bit浮点数图像InputArray templ,// 模板图像,类型与输入图像一致OutputA原创 2022-03-16 20:26:32 · 152 阅读 · 0 评论 -
三天学会opencv(十六)——霍夫直线检测
霍夫变换-直线前提条件 – 边缘检测已经完成平面空间到极坐标空间转换APIcv::HoughLines(InputArray src, // 输入图像,必须8-bit的灰度图像OutputArray lines, // 输出的极坐标来表示直线double rho, // 生成极坐标时候的像素扫描步长double theta, //生成极坐标时候的角度步长,一般取值CV_PI/180int threshold, // 阈值,只有获得足够交点的极坐标点才被看成是直线double srn=0;原创 2022-03-16 20:24:54 · 255 阅读 · 0 评论 -
三天学会opencv(十五)——边缘处理
边缘处理主要内容卷积边缘问题处理边缘卷积边缘问题因为卷积核的大小问题,导致的边缘不能被操作到,这就是卷积边缘问题。所以我们在之前必须要进行一个处理。处理边缘在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。openCV中默认的处理方法是: BORDER_DEFAULT,此外常用的还有如下几种:BORDER_CONSTANT – 填充边缘用指定像素值BORDER_REPLIC原创 2022-03-16 20:00:52 · 197 阅读 · 0 评论 -
三天学会opencv(十四)——自定义线性滤波
自定义线性滤波主要内容卷积概念常见算子自定义卷积模糊卷积概念卷积是图像处理中的一个操作,是kernel在图像中的每个像素的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点。说白了Kernel就是卷积核。卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值成为卷积处理。个人理解首先,我认为卷积可以是3x3的,但是不限于3x3的一个矩阵(可以更大)。他可以贴在图像的左上角开始一点一点移动,操作图像。但是我的原创 2022-03-16 19:57:54 · 3602 阅读 · 0 评论 -
三天学会opencv(十三)——阈值操作
基本阈值操作主要内容图像阈值阈值类型图像阈值(threshold)阈值类型一阈值二值化(threshold binary)图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值我们可以理解为,只要你的图像像素值高于了我的阈值,那就把你拉高到我的上限。否则就把你降低到下限。阈值类型一阈值反二值化(threshold binary Inverted)我们可以理解为,只要你的图像像素值高于了我的阈值,那就把你降低到到我的下限。否则就把你拉高到下限。与阈值二值化正好相反。阈值类型原创 2022-03-16 19:56:31 · 3717 阅读 · 0 评论 -
三天学会opencv(十二)——图像上采样和降采样
图像上采样和降采样主要内容图像金字塔概念采样API图像金字塔概念我们在图像处理中常常会调整图像大小,最常见的就是放大和缩小,尽管几何变换也可以实现图像放大和缩小。但是我们这个暂时介绍图像金字塔。一个图像金字塔是一系列的图像组成,最底下一张尺寸最大,最上方的尺寸最小。就像那么一个金字塔一样。采样相关API上采样(cv::pyrUp) – zoom in 放大降采样 (cv::pyrDown) – zoom out 缩小pyrUp(Mat src, Mat dst, Size(src原创 2022-01-19 10:03:43 · 1206 阅读 · 0 评论 -
三天学会opencv(十一)——形态学操作应用-提取水平与垂直线
形态学操作应用-提取水平与垂直线主要内容原理方法实现步骤原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像素值提取步骤输入图像彩色图像 imread转换为灰度图像原创 2022-01-19 10:02:15 · 131 阅读 · 0 评论 -
三天学会opencv(十)——形态学操作
先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色所以开操作可以去除白色噪点。让我们图像处理起来更加的方便。先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色闭操作可以把整块的白色区域内的黑色噪点填充上,因为先进行了膨胀将噪点挤没了,再腐蚀外轮廓,不会有影响。膨胀减去腐蚀又称为基本梯度(其它还包括-内部梯度、方向梯度)作用:突出高亮区域的外围为轮廓查找提供新思路顶帽 是原图像与开操作之间的差值图像作用:一般用于背景提取。顶帽运算往往用来分离原创 2022-01-19 10:01:10 · 1440 阅读 · 0 评论 -
三天学会opencv(九)——膨胀与腐蚀
图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段个人总结:膨胀的效果一般可以用在两个距离近,但是断开的目标上进行连通使用。腐蚀一般是用在存在噪点或者两者相连接的情况下,但是更好的效果。但是上述情况往往在开和闭上会有更好的效果。...原创 2022-01-19 09:58:23 · 1012 阅读 · 0 评论 -
三天学会opencv(八)——模糊图像
模糊图像主要内容均值模糊高斯模糊中值滤波双边滤波均值模糊blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));高斯模糊GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);其中Size(x, y), x, y 必须是正数而且是奇数中值滤波中值对椒盐噪声有很好的抑制作用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(im原创 2022-01-19 09:57:01 · 128 阅读 · 0 评论 -
三天学会opencv(七)——绘制形状与文字
绘制形状与文字主要内容使用cv::Point与cv::Scalar绘制线、矩形、园、椭圆等基本几何形状随机生成与绘制文本使用cv::Point与cv::ScalarPoint表示2D平面上一个点x,yPoint p; // 定义一个点pp.x = 10; // 设置点p的xp.y = 8; // 设置点p的yp = Pont(10,8); // 设置点p的x和yScalar表示四个元素的向量Scalar(a, b, c); // a = blue, b = green, c原创 2022-01-19 09:56:06 · 65 阅读 · 0 评论 -
三天学会opencv(六)——调整图像亮度与对比度
图像变换可以看作如下:这里我们可以看出我们对图像的BGR三个通道都进行了增益,也就是在每一个像素上,对这三个值都加上了beta,这样就达到了增益的效果。同时为了限制像素值在0-255之间,我们上定了一个限制。也就是saturate_cast()函数。...原创 2022-01-19 09:55:06 · 2104 阅读 · 0 评论 -
三天学会opencv(五)——图像混合
理论线性混合操作相关API这个看看就好了,没啥太大的帮助。addWeighted()函数参数1:输入图像Mat – src1参数2:输入图像src1的alpha值参数3:输入图像Mat – src2参数4:输入图像src2的alpha值参数5:gamma值参数6:输出混合图像注意点:两张图像的大小和类型必须一致才可以...原创 2022-01-19 09:54:13 · 1616 阅读 · 0 评论 -
三天学会opencv(一)——加载,修改,保存图像
加载,修改,保存图像主要内容1. imread()函数2. cvtColor()函数3. imwrite()函数imread()函数imread函数的功能是加载一张图像,并将其存储至一个Mat类型的对象中。第一个参数为图像文件名称,可以是相对路径,也可以是绝对路径。第二个参数就是加载图像时,读入的类型。这里我们几个参数选择。如下图所示:示例代码:int main(){ Mat src; // 定义一个Mat类型对象 src = imread("./1.jpg", IMRE原创 2022-01-16 23:35:56 · 1074 阅读 · 0 评论 -
三天学会opencv(二)——矩阵的掩膜操作
Mat.ptr(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar* current= myImage.ptr(row );获取当前像素点P(row, col)的像素值 p(row, col) =current[col]这个函数可以确保RGB的值的范围再0-255之间。说的简单一点就是:图像是像素集合到一起的产物,那么我们的掩膜操作就是找到一个3*3的矩阵中的中心点像素,将他的上下左右加起来,再用中间像素的五倍去减,然后赋值给中间像素。代码示原创 2022-01-19 09:48:23 · 1175 阅读 · 0 评论 -
三天学会opencv(三)——Mat对象
Mat对象学习内容Mat对象与IplImage对象Mat对象使用Mat定义数组Mat对象与IplImage对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题。总结一下:说白了就是IplImage这个对象他对于操作的容错性比较差,但是Mat类型就没原创 2022-01-19 09:50:28 · 95 阅读 · 0 评论 -
三天学会opencv(四)——图像操作
图像操作主要内容读写图像读写像素修改像素值读写图像imread 可以指定加载为灰度或者RGB图像Imwrite 保存图像文件,类型由扩展名决定imread函数的功能是加载一张图像,并将其存储至一个Mat类型的对象中。第一个参数为图像文件名称,可以是相对路径,也可以是绝对路径。第二个参数就是加载图像时,读入的类型。imwrite()函数的功能是将图像保存到指定的路径下。参数有两个。第一个是存储路径,第二个是待存储的Mat对象。这个函数比较简单没什么好解释的。读写像素读一个GRAY像原创 2022-01-19 09:51:42 · 255 阅读 · 0 评论 -
Qt中实时调取摄像头(含代码)
Qt中实时调取摄像头(含代码)pro文件QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use# any Qt feature that has been marked deprecated (the exact warnings# depend原创 2021-12-09 18:07:09 · 4202 阅读 · 2 评论 -
Qt配置opencv
首先创建一个基本的项目,然后我们会发现有Pro文件,这个Pro文件我们可以发现,它里面包含了我们有那些文件,ui,等等。所以我们可以理解为一个配置文件,也就是config文件。然后我们在pro文件的最下面加上我们的opencv编译的文件的路径。...原创 2021-12-09 17:53:45 · 2391 阅读 · 0 评论 -
Qt中实时调取摄像头(利用OpenCV)
Qt中实时调取摄像头(利用OpenCV)主要思路首先我们要先在Qt下把OpenCV跑通。然后我们再进行摄像头的调取。这里我写一个C++的基本代码,其实OpenCV单纯用C++去调取一个摄像头还是很简单的。代码如下:#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){ Mat image; VideoCapture cap; cap.open(0);原创 2021-12-08 19:00:11 · 6236 阅读 · 31 评论 -
超详细OpenCV 教学1(python语言版本)---安装OpenCV
超详细OpenCV 教学1(python语言版本)—安装OpenCV既然选择了Python语言的OpenCV教学,那么就不要再纠结到底C++好还是Python这样的问题了。首先你一定对OpenCV有一定的认知了对么?那么我们就不再过多赘述,什么是OpenCV这样的问题了。首先我们本节教学就是介绍一些基本的库如何安装以及这些库到底有什么作用。那么接下来我们就开始讲解:NumPy:这个库提供数值计算函数,矩阵计算函数。SciPy:这个库在处理Opencv库的数据方面非常的方便。OpenNI:该库是Op原创 2021-05-28 14:09:36 · 320 阅读 · 0 评论