AI炮灰
这个作者很懒,什么都没留下…
展开
-
C++执行程序计时函数详解
通常计时函数主要有两个,分别是getTickCount()和getTickFrequency().原创 2023-08-09 09:14:55 · 1442 阅读 · 0 评论 -
C++和OpenCV从基础到实战视频课程“开讲了”
由于市面上的书本或者视频、博客等大多是以Python为基础进行OpenCV讲解,以这种方式的目的主要是Python的语言较为简单、上手容易。但是在工业上大多数图像处理都是基于C++进行开发,这样在真正步入企业的时候大多数人对C++都很茫然(本人就是),因此本人准备开设一个基于C++和OpenCV的课程。原创 2023-05-10 09:04:32 · 236 阅读 · 0 评论 -
C++OpenCV实现二值化图像轮廓区域不连接没有闭合
【代码】C++OpenCV实现二值化图像轮廓区域不连接没有闭合。原创 2023-04-19 09:58:43 · 1257 阅读 · 0 评论 -
基于残差网络的CNN模型进行人脸识别实战实战项目
人脸识别完整项目:从上一步存下来的图像文件中, 提取人脸数据存入 CSV / Extract features from face images saved in step 1;这一步将调用摄像头进行实时人脸识别;进行人脸信息采集录入 Tkinter GUI / Face register with Tkinter GUI。(对每一帧都进行检测+识别), 只有人脸出现的时候进行识别;UI设计,可以实时采集,实时检测,但是作者不想上镜,所以……只会对初始帧做检测+识别, 对后续帧做检测+质心跟踪。原创 2022-12-13 13:24:54 · 869 阅读 · 0 评论 -
车牌识别系统代码+UI设计+数据集
车牌识别完整程序原创 2022-12-13 11:34:06 · 400 阅读 · 0 评论 -
C++opencv气泡检测
【代码】C++opencv气泡检测。原创 2022-09-28 10:01:36 · 959 阅读 · 0 评论 -
C++两个图像对比,并输出轮廓
【代码】C++两个图像对比,并输出轮廓。原创 2022-09-28 09:51:29 · 1404 阅读 · 0 评论 -
C++局部阈值二值化(自适应阈值)手撕代码
【代码】C++局部阈值二值化(自适应阈值)手撕代码。原创 2022-09-26 13:37:59 · 766 阅读 · 0 评论 -
C++OpencvPCB板子引脚缺陷检测
首先感谢杉木~,若侵权,请联系删除。论文里面提出利用区域生长法获取引脚的总数及各个引脚主体部分的形心坐标及面积。通过与实际引脚总数进行对比, 判断是否存在引脚缺失的缺陷, 并和实际引脚的间距、面积的设定值进行对比, 当测定值超过设定值一定范围时, 认为该芯片存在引脚位置偏移以及高度偏移等缺陷。与作者不同之处在于我使用提取轮廓,构建掩膜图像的方式获取引脚的主体部分,其余部分均按照论文思路判别缺陷。步骤:...原创 2022-07-01 16:56:43 · 1299 阅读 · 1 评论 -
基于RGB图像阈值分割并利用滑动调节阈值
目录1.颜色分割概述 2.实战案例原创 2022-06-23 21:30:05 · 916 阅读 · 0 评论 -
C++Opencv——哪些不为人所知的形态学骚操作
你可能不知道的形态学骚操作原创 2022-06-04 01:05:26 · 337 阅读 · 1 评论 -
C++OpenCV凸包检测实战
1.概述凸包作为计算几何入门必学的知识非常重要,那么什么是凸包呢?凸包的定义可以理解为给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。在找凸包的时候需要使用向量,因为两向量的叉积的正负可以判断两个向量所处的方位。向量以及相应的操作建议写成结构体的形式封装起来,包括运算符重载。2.实现流程先将图像转化为灰度图像 转为二值图像 找到图像全部轮廓点 使用凸包API从全部轮廓点中找到最优轮廓点 连接凸包轮廓点3.完整实验程序#include&原创 2022-05-28 00:44:06 · 1070 阅读 · 0 评论 -
C++OpenCV对色调接近的图像进行轮廓提取与计算面积与周长
1.概述本文所使用的图像如下所示:设计步骤如下所示:高斯模糊 灰度化 二值化 形态学操作 轮廓查找 面积周长计算2.具体实现2.1高斯模糊由于陨石的周围有许多的小块,因此当做噪点处理,可以使用高斯模糊GaussianBlur(image, gaussianImage, Size(7, 7), 0, 0);2.2二值化由于图像的色调比较接近,所以这张图像是一张单峰图。所以进行自动化阈值操作时,选择THRESH_BINARY|THRESH_TRIANGLE。如下原创 2022-05-27 00:08:28 · 956 阅读 · 0 评论 -
C++OpenCV生成一个滑块自动调节阈值来控制边缘检测
有时候经常我们不好确定阈值,因此定义一个滑块进行阈值调节是一个很好的注意。本文做一个小实验在图像中生成一个滑块来对阈值进行调节生成一个图像的边缘。#include<iostream>#include<opencv2\opencv.hpp>using namespace cv;using namespace std;int edgeThresh = 1;// 声明 原始图片,灰度图片,和 canny边缘图片Mat image, cedge;Mat gray,原创 2022-05-26 23:11:10 · 600 阅读 · 0 评论 -
10分钟学会C++OpenCV图像处理
1.读取视频数据和摄像头数据1.1读取视频数据#include<iostream>#include<opencv2/highgui.hpp>#include<opencv2/imgcodecs.hpp>#include<opencv2/opencv.hpp>using namespace cv;using namespace std;/* 读取视频数据*/void main(){ string path = "F:/test原创 2022-05-24 12:16:16 · 1096 阅读 · 5 评论 -
C++OpenCV基于Camshift实现颜色范围内的车辆跟踪
基本概念camshift("continuously adaptive mean-shift"的缩写),即连续自适应的 算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视原创 2022-05-21 12:42:31 · 429 阅读 · 0 评论 -
C++OpenCV实现YOLO算法对目标进行检测实战
基本概念加载darknet框架的YoloV4模型做目标检测。OpenCV DNN模块支持常见深度学习框架如TensorFlowCaffe、Darknet等,对应的函数:readNetFromTensorflow、readNetFromCaffe.// 加载darknet网络Net net = readNetFromDarknet(config, weights);YoloV4对应的权重和配置文件如下,下载地址String config = "./model/yolov...原创 2022-05-21 11:39:53 · 1191 阅读 · 0 评论 -
C++OpenCV将视频处理成图像
#include<iostream>#include<opencv2/opencv.hpp>using namespace std;using namespace cv;void video2Image(){ //VideoCapture cap("1.avi"); VideoCapture cap("F:/testImage/1/output_1.2_result.mp4"); // 获取视频总帧数 long totalFrameN.原创 2022-05-12 21:04:02 · 939 阅读 · 2 评论 -
C++OpenCV利用鼠标点击事件选取指定的ROI区域图像修复实战
1图像修复概述在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏。如果我们想让这些受到破坏的额图片尽可能恢复到原样,Opencv能帮我们做到吗?OpenCV真的有这个妙手回春的功能!别以为图像修补的工作只能用PS或者美图秀秀那些软件去做,其实由程序员自己写代码去做更加高效!图像修复技术的原理是什么呢?简而言之,就是利用那些已经被破坏的区域的边缘, 即边缘的颜色和结构,根据这些图像留下的信息去原创 2022-05-12 18:21:40 · 678 阅读 · 0 评论 -
c++OpenCV对图像进行霍夫直线、圆检测并输出直线的位置和角度实战
1.霍夫直线检测我们如何在图像中快速识别出其中的圆和直线?一个非常有效的方法就是霍夫变换,它是图像中识别各种几何形状的基本算法之一。霍夫线变换霍夫线变换是一种在图像中寻找直线的方法。OpenCV中支持三种霍夫线变换,分别是标准霍夫线变换、多尺度霍夫线变换、累计概率霍夫线变换。在OpenCV中可以调用函数HoughLines来调用标准霍夫线变换和多尺度霍夫线变换。HoughLinesP函数用于调用累积概率霍夫线变换。我们都知道,二维坐标轴上表示一条直线的方程式y = a*x + b,我们想原创 2022-05-12 09:51:36 · 2116 阅读 · 0 评论 -
C++OpenCV利用不同的方式实现模板匹配实战
模板匹配的作用在图像识别领域作用可大了。那什么是模板匹配?模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术。说的有点抽象,下面给个例子说明就很明白了。原图如下,我们需要在原图上实现找到姚明的位置,模板图如下所示:可以,这就是模板匹配的要做的事情。其实模板匹配实现的思想也是很简单很暴力的,就是拿着模板图片(姚明头像)在原图(全明星照)中从左上至右下依次滑动,直到遇到某个区域的相似度低于我们设定的阈值,那么我们就认为该区域与模板匹配了,也就是我们找到了姚明的位置原创 2022-05-11 21:25:13 · 995 阅读 · 0 评论 -
C++OpenCV去除发票中红色的印章部分实战
1.背景最近一个客户要求去除发票中的红色印章部分: 就是票据上往往会有一些红色印章把一些重要信息区域给覆盖了,比如一些开发票人员盖印章时比较随意,容易吧一些关键区域给遮蔽了,这让接下来的票据识别很困难,因此,我们必须先对票据图像进行一定的预处理来移除印章干扰,再进行字符识别,这样子识别准确率才有保证。我们从简单例子说起,比如我们有以下一张票据,上面盖有红色印章,虽然该印章没有遮挡关键信息,但是我们还是打算将其移除,那该怎么办?首先想到的肯定移除红色像素点的方法,这种方法需要查到红色的颜色范围,然后遍历全原创 2022-05-11 19:59:20 · 3190 阅读 · 1 评论 -
C++OpenCV图像目标计数——以枣子为例
现在已经凌晨1点40,睡不着,心血来潮写一篇博客,但是效果一般,图像中有12个枣子,但是只识别出11个:原图如下所示:项目中需要用到距离变换,下面简单介绍以下:距离变换的定义是计算一个图像中非零像素点到最近的零像素点的距离,也就是到零像素点的最短距离。距离变换的处理图像通常都是二值图像,而二值图像其实就是把图像分为两部分,即背景和物体两部分,物体通常又称为前景目标!通常我们把前景目标的灰度值设为255,即白色,背景的灰度值设为0,即黑色。所以定义中的非零像素点即为前景目标...原创 2022-04-30 01:41:35 · 789 阅读 · 0 评论 -
C++OpenCV——利用三种不同算法实现图像白平衡操作
最近接了一个单子要求使用三种不同的算法实现图像的白平衡操作:本人选取了一下三种:灰度世界 完美反射 动态阈值1.灰度世界Mat myFun::GM(Mat srcImage){ Mat dstImg; vector<Mat>Channels; split(srcImage, Channels); Mat B = Channels[0]; Mat G = Channels[1]; Mat R = Channels[2]; double Baver = mean(B原创 2022-04-24 12:39:00 · 937 阅读 · 0 评论 -
C++OpenCV实战——车牌去雾、车牌检测、分割
最近接了一个单子,具体任务是首先进行去雾操作,然后进行车牌的检测和分割,话不多说具体的代码如下所示:、myFun.h文件#pragma once#ifndef FUNCTION_H#define FUNCTION_H #include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include&l原创 2022-04-24 12:27:27 · 9348 阅读 · 0 评论 -
3DAOI原理及编程手册(1)——工作原理
1.3DAOI工作原理 矩子 3D AOI 采用 2D 和 3D 技术相结合的方式, 在保留原有二维成像、 图像分析、 检测能力等的同时, 进一步加入了数字投影测量技术用于高度的测算。针对以上特点, 本章在描述矩子 3D AOI 工作原理时, 将兼顾二维和三维两部分。 包括二维的成像原理、 检查原理, 三维的测算原理, 以及坐标系的定位方式。这些作为本设备最基础和最核心的部分, 对于了解和掌握软件的编程有着重要的作用1.1二维成像原理1.1.1 照...原创 2021-08-04 09:47:24 · 5092 阅读 · 0 评论 -
Qt设计的图像处理系统
add_mask.h#ifndef ADD_MASK_H#define ADD_MASK_H#endif // ADD_MASK_H#include <opencv2/opencv.hpp>using namespace std;using namespace cv;class Need{public: //灰度标定 Mat AddGrayMask(Mat &image); // RGB给图像打掩膜 Mat AddRBG(M..原创 2021-08-17 12:43:06 · 368 阅读 · 0 评论 -
qt实现加载图片画圆和画矩形
DrawQWidget.h#ifndef DRAWQWIDGET_H#define DRAWQWIDGET_H#include <QWidget>#include <QKeyEvent>#include <qpoint.h>#include <qpen.h>/* * */typedef enum draw_shap_e{ DRAW_RECT, //画矩形 DRAW_ELLIPSE, //画椭圆 ...原创 2021-08-17 12:55:45 · 615 阅读 · 0 评论 -
C++OpenCV对摄像头进行实时处理——消除摄像头的背景
背景消除建模有2种方式:1、MOG2------高斯混合模型2、kNN---------k最近邻在OpenCv中也有相关的API:1、createBackgroundSubtractorMOG2(int history=500, double varThreshold=16,bool detectShadows=true);2、createBackgroundSubtractorKNN(int history=500, double dist2Threshold=400.0, bool dete原创 2022-04-11 21:36:38 · 506 阅读 · 0 评论 -
C++OpenCV基于颜色对视频中的对象进行跟踪
现在有如下几步:1、inRange()过滤------------过滤掉绿色飞盘以外的颜色;2、形态学操作---------------去噪点,强化飞盘轮廓;3、轮廓查找---------------查找飞盘轮廓;4、查找最大外接矩形---------------在轮廓查找的基础上,找到最大外接矩形;5、绘制最大外接矩形。原图1、inRange过滤:OpenCv中有这个函数可以查找所需要的颜色:inRange()我们要查找绿色部分,则只要这样写:inRange(frame, S原创 2022-04-11 21:23:59 · 279 阅读 · 0 评论 -
C++OpenCV进行轮廓提取及计算图像的面积周长
C++项目实战,计算周长、面积、轮廓原创 2022-04-11 18:02:28 · 3236 阅读 · 0 评论