opencv
文章平均质量分 63
Lucas在澳洲
悉尼大学在读硕士 Master of Data Science
有问题可以直接添加绿泡泡:user_StevenS
古月居签约作者,目前仍然接商业合作。
展开
-
最快速度写出一个识别效果——OpenCV模板匹配(含代码)
在上述代码中,我们首先读取原图像和模板图像,并使用cv2.matchTemplate()函数进行模板匹配。然后使用cv2.minMaxLoc()函数寻找匹配程度最高的位置,并根据模板图像的尺寸计算出目标区域的左上角和右下角坐标。最后,在原图像中使用cv2.rectangle()函数标记目标区域。当我们需要在图像中查找特定的目标时,模板匹配(Template Matching)是一种常用的方法。通过比较模板图像(即目标图像)和原图像中各个位置的像素值,找到最相似的位置,即可定位目标区域。原创 2023-05-29 08:05:39 · 1098 阅读 · 0 评论 -
pyqt圆形label显示摄像头
通过本文的介绍,我们学会了如何使用PyQt5和OpenCV来捕获摄像头并在QLabel上显示图像,同时使用掩膜操作将矩形图像优化成圆形显示。原创 2022-06-16 17:29:33 · 931 阅读 · 4 评论 -
学会opencv(十七)最终章——模板匹配
模板匹配(Template Match)模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。所以模板匹配首先需要一个模板图像T(给定的子图像)另外需要一个待检测的图像-源图像S工作方法,在带检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。matchTemplate(InputArray image,// 源图像,必须是8-bit或者32-bit浮点数图像InputArray templ,// 模板图像,类型与输入图像一致OutputA原创 2022-03-16 20:26:32 · 169 阅读 · 1 评论 -
三天学会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 · 292 阅读 · 1 评论 -
三天学会opencv(十五)——边缘处理
边缘处理主要内容卷积边缘问题处理边缘卷积边缘问题因为卷积核的大小问题,导致的边缘不能被操作到,这就是卷积边缘问题。所以我们在之前必须要进行一个处理。处理边缘在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充1个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。openCV中默认的处理方法是: BORDER_DEFAULT,此外常用的还有如下几种:BORDER_CONSTANT – 填充边缘用指定像素值BORDER_REPLIC原创 2022-03-16 20:00:52 · 215 阅读 · 0 评论 -
三天学会opencv(十四)——自定义线性滤波
自定义线性滤波主要内容卷积概念常见算子自定义卷积模糊卷积概念卷积是图像处理中的一个操作,是kernel在图像中的每个像素的操作。Kernel本质上一个固定大小的矩阵数组,其中心点称为锚点。说白了Kernel就是卷积核。卷积如何工作把kernel放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点覆盖下像素点值成为卷积处理。个人理解首先,我认为卷积可以是3x3的,但是不限于3x3的一个矩阵(可以更大)。他可以贴在图像的左上角开始一点一点移动,操作图像。但是我的原创 2022-03-16 19:57:54 · 3636 阅读 · 1 评论 -
三天学会opencv(十三)——阈值操作
基本阈值操作主要内容图像阈值阈值类型图像阈值(threshold)阈值类型一阈值二值化(threshold binary)图表示图像像素点Src(x,y)值分布情况,蓝色水平线表示阈值我们可以理解为,只要你的图像像素值高于了我的阈值,那就把你拉高到我的上限。否则就把你降低到下限。阈值类型一阈值反二值化(threshold binary Inverted)我们可以理解为,只要你的图像像素值高于了我的阈值,那就把你降低到到我的下限。否则就把你拉高到下限。与阈值二值化正好相反。阈值类型原创 2022-03-16 19:56:31 · 3782 阅读 · 1 评论 -
三天学会opencv(十二)——图像上采样和降采样
图像上采样和降采样主要内容图像金字塔概念采样API图像金字塔概念我们在图像处理中常常会调整图像大小,最常见的就是放大和缩小,尽管几何变换也可以实现图像放大和缩小。但是我们这个暂时介绍图像金字塔。一个图像金字塔是一系列的图像组成,最底下一张尺寸最大,最上方的尺寸最小。就像那么一个金字塔一样。采样相关API上采样(cv::pyrUp) – zoom in 放大降采样 (cv::pyrDown) – zoom out 缩小pyrUp(Mat src, Mat dst, Size(src原创 2022-01-19 10:03:43 · 1260 阅读 · 0 评论 -
三天学会opencv(十一)——形态学操作应用-提取水平与垂直线
形态学操作应用-提取水平与垂直线主要内容原理方法实现步骤原理方法图像形态学操作时候,可以通过自定义的结构元素实现结构元素对输入图像一些对象敏感、另外一些对象不敏感,这样就会让敏感的对象改变而不敏感的对象保留输出。通过使用两个最基本的形态学操作 – 膨胀与腐蚀,使用不同的结构元素实现对输入图像的操作、得到想要的结果。膨胀,输出的像素值是结构元素覆盖下输入图像的最大像素值腐蚀,输出的像素值是结构元素覆盖下输入图像的最小像素值提取步骤输入图像彩色图像 imread转换为灰度图像原创 2022-01-19 10:02:15 · 160 阅读 · 0 评论 -
三天学会opencv(十)——形态学操作
先腐蚀后膨胀可以去掉小的对象,假设对象是前景色,背景是黑色所以开操作可以去除白色噪点。让我们图像处理起来更加的方便。先膨胀后腐蚀(bin2)可以填充小的洞(fill hole),假设对象是前景色,背景是黑色闭操作可以把整块的白色区域内的黑色噪点填充上,因为先进行了膨胀将噪点挤没了,再腐蚀外轮廓,不会有影响。膨胀减去腐蚀又称为基本梯度(其它还包括-内部梯度、方向梯度)作用:突出高亮区域的外围为轮廓查找提供新思路顶帽 是原图像与开操作之间的差值图像作用:一般用于背景提取。顶帽运算往往用来分离原创 2022-01-19 10:01:10 · 1480 阅读 · 0 评论 -
三天学会opencv(九)——膨胀与腐蚀
图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学形态学有四个基本操作:腐蚀、膨胀、开、闭膨胀与腐蚀是图像处理中最常用的形态学操作手段个人总结:膨胀的效果一般可以用在两个距离近,但是断开的目标上进行连通使用。腐蚀一般是用在存在噪点或者两者相连接的情况下,但是更好的效果。但是上述情况往往在开和闭上会有更好的效果。...原创 2022-01-19 09:58:23 · 1040 阅读 · 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 · 145 阅读 · 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 · 88 阅读 · 0 评论 -
三天学会opencv(六)——调整图像亮度与对比度
图像变换可以看作如下:这里我们可以看出我们对图像的BGR三个通道都进行了增益,也就是在每一个像素上,对这三个值都加上了beta,这样就达到了增益的效果。同时为了限制像素值在0-255之间,我们上定了一个限制。也就是saturate_cast()函数。...原创 2022-01-19 09:55:06 · 2136 阅读 · 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 · 1643 阅读 · 0 评论 -
Qt中实时调取摄像头(含代码)
该项目展示了如何使用 Qt 和 OpenCV 实现实时摄像头视频捕获。通过配置.pro文件引用 OpenCV 库,我们可以使用 OpenCV 的功能捕获摄像头视频,并通过 Qt 的QImage和QPixmap实现视频流的显示。这个项目可以作为一个基础模板,进一步扩展,可以添加更多功能,如图像处理、视频录制、或对视频流进行分析(如人脸检测等)。原创 2021-12-09 18:07:09 · 4308 阅读 · 2 评论 -
Qt配置opencv
通过在Qt项目中正确配置OpenCV,你可以结合两者的强大功能,进行丰富的图像处理和计算机视觉开发。Qt 提供了友好的界面开发工具,而 OpenCV 提供了丰富的图像处理算法库,两者的结合使得开发跨平台、可视化的图像处理应用程序变得十分简单。接下来,你可以根据项目需求,进一步探索 OpenCV 的高级功能,如视频处理、深度学习模型的加载与推理等。同时,Qt 也提供了强大的信号槽机制、跨平台文件处理等功能,可以进一步提升应用的实用性和可扩展性。原创 2021-12-09 17:53:45 · 2475 阅读 · 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 · 6568 阅读 · 33 评论