自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 opencv 十九 python下实现多线程间rtsp直播流的复用

在多线程拉流的任务场景中,有时需要将一个rtsp拉取多次,每重新打开一次rtsp视频流就要多消耗一次带宽,为此基于类的静态对象实现rtsp视频流的复用。

2024-03-28 21:06:03 624

原创 opencv 十八 python下实现0缓存掉线重连的rtsp直播流播放器

使用opencv打开rtsp视频流时,会因为网络问题导致VideoCapture掉线;也会因为图像的后处理阶段耗时过长导致opencv缓冲区数据堆积,从而使程序无法及时处理最新的数据。为此对cv2.VideoCapture进行封装,实现0缓存掉线重连的rtsp直播流播放器,让程序能一直处理最新的数据。

2024-03-23 12:58:32 989

原创 ubuntu环境pyinstaller打包fastdeploy程序报错解决记录(tensorrt/lib/libnvcaffe_parser.so.8 by an unprivileged user)

警告:root:非特权用户无法创建指向 /root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/libnvcaffe_parser.so.8 的符号链接。根据报错信息的翻译,是跟/root/YXZTSB/dist/yxztsb/_internal/fastdeploy/libs/third_libs/tensorrt/lib/目录下的一个so文件有关,故而进入目录进行查看。通过以上拷贝后,原始的报错解决了。

2024-03-02 19:19:00 954 1

原创 基于python-socket构建任务服务器(基于socket发送指令创建、停止任务)

在实现ia业务服务器时需要构建一个python-socket客户端,1、要求能与服务器保持心跳连接,每10秒钟发送一次心跳信号;2、要求能根据socket服务器发送的指令创建或终止一个定时任务。为此以3个类实现该功能,分别为socket通信类(用于实现通信连接与任务创建)、任务池类(用于管理任务)、任务类(用于实现具体任务)。

2024-02-21 19:37:06 676

原创 curl工具的入门级使用

cURL是常用的命令行工具, 它的名字就是客户端(client)的 URL 工具的意思。1997年首次发行。它支持文件上传和下载, 是综合传输工具。

2024-01-31 21:17:14 2556

原创 opencv 十七 使用cmake配置opencv c++项目

cmake是什么CMake是一个开源、跨平台的编译(Build)工具,是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。CMake并不直接生成最终的软件,而是产生标准的建构文件(如Unix的Makefile或Windows Visual ,C++的projects/workspaces),这些文件可以被一般的编译工具所使用。cmake能做什么。

2024-01-30 14:08:49 2140

原创 使用pyinstaller打包生成exe(解决gradio程序的打包问题)

Python打包生成可执行文件的工具有很多,以下是一些常用的工具,根据对工具效果的调研,发现PyInstaller是最简单易用的。然而使用pyinstaller打包生成exe程序时,常常存在生成的exe占用空间较大的情况。这是因为pyinstaller打包是将环境内的不相干的库都打包进去了,故而需要创建干净的虚拟python环境。PyInstaller:PyInstaller是一个开源的Python应用程序打包工具,可以将Python代码打包为可执行文件。

2024-01-09 21:21:36 2643 17

原创 数据处理四 基于图像hash进行数据整理(删除重复图片、基于模版查找图片)

哈希相似度算法(Hash algorithm),它的作用是对每张图片生成一个固定位数的Hash 值(指纹 fingerprint)字符串,然后比较不同图片的指纹,结果越接近,就说明图片越相似。图像Hash算法准确的说有三种,分别为平均哈希算法(aHash)、感知哈希算法你(pHash)和差异哈哈希算法(dHash)。`图像hash与上文中描述的hash算法目的不同,图像hash主要可用于判断或查找相似的图片,我们要尽可能的是图像hash值具有意义,与内容相关。`他应当具备以下特点:* 1、高效计算,能

2024-01-06 22:58:14 1641

原创 opencv 十六 python下各种连通域处理方法(按面积阈值筛选连通域、按面积排序筛选连通域、连通域分割等方法)

本博文基于python-opencv实现了按照面积阈值筛选连通域、按照面积排序筛选topK连通域、 连通域细化(连通域骨架提取)、连通域分割(基于分水岭算法使连通域在细小处断开)、按照面积排序赛选topK轮廓等常见的连通域处理代码。并将代码封装为shapeUtils类,在自己的python代码中import shapeUtil后即可使用相应的连通域处理方法。

2023-12-16 17:08:19 3038 2

原创 c++ 中多线程的相关概念与多线程类的使用

当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。(non-blocking):可以简单理解为需要做一件事能不能立即得到返回应答,如果不能立即获得返回,需要等待,那就阻塞了(进程或线程就阻塞在那了,不能做其它事情),否则就可以理解为非阻塞(在等待的过程中可以做其它事情)。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

2023-12-15 20:12:20 898

原创 opencv 十五 红外图像中虹膜的提取

在医在拍摄过程瞳孔需要进行运动,其通常不在正前方,无法形成圆形,不能使用常规的霍夫圆检测进行提取定位。且在在红外图像中,虹膜区域与巩膜区域差别不明显(具体如下图所示),故需要设计出算法提取红外图像中的虹膜区域。然后获取轮廓并进行椭圆拟合,然后将拟合的椭圆绘制在原图与mask上(画在原图上的椭圆要使用原始值,而画在mask上的椭圆需要对长轴和短轴值进行放大,使其能尽可能的盖住虹膜区域)其先通过二值化方法,获取瞳孔区域(包含闭运算操作,使瞳孔的圆闭合【瞳孔经常出现反光的情况】),最后在对瞳孔区域进行霍夫圆检测。

2023-12-13 20:39:46 790

原创 数据处理三 数据类别平衡(难易样本平衡)

在使用paddlseg进行训练时常常会出现针对于某一类数据预测效果不佳,这些样本通常被称为难样本。在设计loss时可以使用FocalLoss与BootstrappedCrossEntropyLoss作用损失函数进行训练,也可以自行对难样本进行过采样然后再进行训练。增强了难样本的频率,则在一个epoch中增加了难样本的迭代次数,使模型在训练过程中学习到更多的难样本特征。

2023-12-07 22:02:30 482

原创 海康威视MVS客户端及虚拟相机c++开发案例

机器视觉工业相机客户端MVS是为支持海康机器视觉相机产品而开发的软件应用程序,适用于所有海康机器视觉面阵以及线阵相机产品。MVS包含了客户端,IP配置工具,固件升级工具,导入/导出属性工具、日志查看工具、网卡配置工具,驱动管理工具,系统信息工具,诊断工具,带宽管理工具,SDK和Demo。操作系统:Windows 7/10/11 32/64bit功能特性1、网口和USB相机可自动搜寻同子网下连接的所有设备,CameraLink相机可手动搜寻所连接设备2、支持查看和修改相机设备参数、搜索指定参数。

2023-12-04 21:53:31 6333 4

原创 使用zbar库识别条形码与二维码

QR 码是一种高密度矩阵条码,Quirc是一个基于C/C++的一个二维码库 ,从图像中提取和解码QR 码。其部分功能还需依赖OpenCV库共同实现,比如quirc-demo-opencv(即图形的显示);inspect-opencv(测试)。1.足够快,可以用于实时视频:在现代x86内核上,从VGA帧提取和解码大约需要50毫秒。2.具有鲁棒且宽容的识别算法。可以正确识别和解码旋转和/或倾斜于相机的QR码。它还可以区分和解码同一图像中的多个代码。

2023-12-01 21:41:36 3198

原创 数据处理二 模型预测结果转json标注

在进行深度学习过程中,数据标注是一个繁琐的工作。我们可以借鉴半监督学习的思路,将数据划分为两部分,对少量数据进行人工标注,然后基于此训练模型。有预训练模型后,可以对剩余的未标注图像进行预测。预训练模型的性能可能不是很准,部分结果需要进行调整。

2023-11-27 22:44:30 1008

原创 opencv 十四 二维码的粗定位提取

在进行二维码识别时,二维码成像区域太小,很容易导致识别失败。手机软件(如微信或支付宝)在识别二维码时,发现二维码较小,会自动缩放摄像头。具体实现步骤为:1、读取图片为灰度图,并优化图像质量(使用滤波尽可能减少图像背景的复杂度)2、对图像进行自适应二值化(其可以根据图像局部空间,计算每一个区域的二值化阈值)3、图形显著化,使用大kernel进行均值滤波,使二维码图形在原二值化中变得十分显著【该操作可以提升二维码区域的显著度,弱化背景】4、显著区域提取,根据均值滤波结果进行二值化,并找出最大面积连通域,然

2023-11-26 22:58:43 1265

原创 Open3d 二 点云转mesh并实现空洞修复、mesh简化、mesh细化

点云是由大量的点组成的三维数据集,而mesh是由三角形组成的三维模型。点云转换为mesh的过程称为曲面重建。曲面重建的目的是从点云数据中提取出表面的形状信息。曲面重建的方法有很多种,其中一种常用的方法是贪心投影三角化法。该方法的大致流程如下:将点云通过法线投影到某一二维坐标平面内,对投影得到的点云做平面内的三角化,从而得到各点的拓扑连接关系。最后根据平面内投影点的拓扑连接关系确定各原始三维点间的拓扑连接,所得三角网格即为重建得到的曲面模型(mesh)。

2023-11-17 20:10:53 6980 7

原创 Open3d 一 点云mesh的入门级操作

点云数据是指在一个三维坐标系中的一组向量的集合。这些向量通常以X,Y,Z三维坐标的形式表示,一般主要代表一个物体的外表面几何形状,除此之外点云数据还可以附带RGB信息,即每个坐标点的颜色信息,或者是其他的信息(强度信息)。

2023-11-14 22:02:45 2084

原创 数据处理一 使用python对文本形式数据进行处理

以下数据是深度相机拍摄的点云数据,其为为n行6列的文本数据,分别对应x、y、z、r、g、b,列与列之间用‘→’分割。list2str函数通过遍历数据将二维数组转化为字符串,其中需要注意的是float型的数组要转换为str型的数组才能进行数组转字符串操作。该过程需要我们自己写函数完成数据的解析,数据的修改和数据的保存。由于数据有固定统一的格式,可以直接使用numpy库里的函数进行文本数据的读写,该方式最为简单。以下代码使用原始的python操作进行数据解析,将文本格式的数据转为二维数组。

2023-11-13 12:59:10 96

原创 基于ffmpeg模拟监控摄像头输出rtsp视频流并opencv播放

在进行视频流项目(视频监控)研发时,通常是在台式机上研发,并不能与摄像头直接进行连接,故需要使用ffmpeg将已经录制好的mp4视频推送为rtsp视频流,然后进行模拟开发。本博文涉及到ffmpeg(推流)、EasyDarwin(视频流服务器)、oepncv(代码拉流)、vlc(播放rtsp视频流)。

2023-09-23 20:54:22 2940 1

原创 opencv 十三 基于模板匹配实现复杂环境下的车牌区域提取

5、cv::TM_CCOEFF:相关性系数匹配方法,该方法使用源图像与其均值的差、模板与其均值的差二者之间的相关性进行匹配,最佳匹配结果在值等于1处,最差匹配结果在值等于-1处,值等于0直接表示二者不相关。6、cv::TM_CCOEFF_NORMED:归一化的相关性系数匹配方法,正值表示匹配的结果较好,负值则表示匹配的效果较差,也是值越大,匹配效果也好。3、cv::TM_CCORR:相关性匹配方法,该方法使用源图像与模板图像的卷积结果进行匹配,因此,最佳匹配位置在值最大处,值越小匹配结果越差。

2023-09-20 21:59:51 235 1

原创 opencv 十二 计算圆弧图形的起点角度与终点角度

要得到圆弧的起始点与终点,则需要遍历所有拐点,计算其与圆心的夹角,找出其中最大角度(圆弧的终点)与最小角度(圆弧的起点)。在二值图中计算圆弧图形的起点角度与终点角度存在一定困难(opencv没有直接提供相关api接口),需要自行找出圆弧图形的所有像素点,并计算其与圆心的夹角。上述步骤找到的轮廓线上的点太多,需要对其进行拟合,只保留轮廓线上的拐点,这样可以 减少轮廓线上的点,减少运行时间。根据圆上一点的坐标和圆心坐标,求点与圆心之间的夹角的计算公式如下图所示:根据圆心建立坐标系,并以x轴的正方向为起点。

2023-09-16 23:08:33 968 6

原创 使用yolov8对自行标注的数据进行训练

yolov8的安装命令安装命令:pip install ultralytics (不推荐)推荐方式,源码安装:pip install -e . (下载代码,并进入目录)

2023-09-09 23:22:13 771 2

原创 labelme标注的json文件转yolo格式

labelme标注的json文件是在数据标注时产生,不能直接应用于模型训练。各大目标检测训练平台或项目框架均有自己的数据格式要求,通常为voc、coco或yolo格式。由于yolov8项目比较火热,故此本博文详细介绍将json格式标注转化为yolo格式的过程及其代码。

2023-09-08 23:16:33 7461 5

原创 opencv 十一 霍夫圆检测原理及高级使用案例(含优化步骤)

霍夫圆检测与霍夫变换密切相关,霍夫变换是基于极坐标系(是由半径与夹角所描述的一种坐标系)与笛卡尔坐标系(普通的平面坐标系)的相互转变而实现的。笛卡尔坐标系上的一个点,变换到极坐标系上就变成了一条线;反之亦然。然而,基于霍夫变换的霍夫圆检测方法计算量极大,不适合实际应用。在opencv的实现中,是使用霍夫梯度算法进行圆检测。参考链接:https://www.cnblogs.com/bjxqmy/p/12333022.html。

2023-09-03 22:18:25 7824 4

原创 橡胶林识别研究报告

因为橡胶林与其它树林存在易混淆的状态,故此需要给可见光遥感影像中的橡胶林做一个基本定义。训练与测试中,涉及到hardnet、segformerb0、segformerb1、segformerb2共4个模型。在同样的数据划分情况下,segformerb1是性能最佳模型。

2023-08-28 22:39:23 56

原创 目标检测数据标注格式及工具软件简介

其中,train和val分别存放训练图像和验证图像,annotations存放标注,不同于VOC一张图像对应一个标注文件,COCO的标注文件是一个子目录下的所有图像的标注都保存在一个json文件中(即数据集内所有数据的标签存在一个json文件中)。第一次选择该模型时,要经过长时间的下载,请耐心等待。YOLO数据集格式的出现主要是为了训练YOLO模型, ,因为可以通过修改模型的配置文件进行数据加载,唯一需要注意的是YOLO数据集的标注格式是将目标框的位置信息进行归一化处理(此处归一化指的是除以图片宽和高),

2023-08-20 17:41:51 2199 2

原创 机器学习中的分类算法详细介绍一(KNN、决策树)

机器学习中的分类算法有:KNN算法、决策树、随机森林、SVM、极限学习机、多层感知机(BP神经网络)、贝叶斯方法。

2023-06-06 22:02:56 5326

原创 深度学习 基于aistudio平台从数据标注开始实现语义分割任务

深度学习 基于aistudio平台从数据标注开始实现语义分割任务

2023-05-05 13:11:12 814 1

原创 opencv 十 提取车辆照片中的车牌区域(基于颜色特征)

基于基于颜色特征多个图像提取车辆照片中的车牌区域,保证算法的通用性和算法效果稳定。需要对车牌的颜色和颜色空间有所了解。现有知识信息如下:1、车牌的场景颜色为为蓝色、黄色和绿色2、HSV颜色空间的H分量就是描述颜色值3、车牌的颜色在车辆照片中是较为显著的最终实现对各种颜色车牌的提取

2023-02-26 09:19:25 1749

原创 opencv 九 提取车辆照片中的车牌区域(基于纹理特征)

在车辆照片中提取车牌区域,需要对图像进行系列变化,移除图像的非车牌区域,使车牌区域在图像中变得显著。目前分析发现,在车辆照片中,车牌区域的特点如下:1、具有固定的颜色(一般车牌为蓝色、白色、黄色、和绿色)2、具备特定的字符(车牌号包含汉字、字母、数字)3、字符具备特定排列规则(车牌号都是水平排列的)目前不考虑考虑颜色实现算法,对于**字符**而言其特征就是**边缘特征丰富**,对于**水平排列**而言其特征就是**形态学算子可以较宽**

2023-01-30 20:46:06 1127

原创 opencv 八 液晶屏数字提取

提取特定仪器液晶屏显示区域中的数字。目标液晶屏显示区域为图中面积最大的连通域(将其表述为数字主体区域)。在数字主体区域和周围区域存在一些白点和黑色连通域,需要设法去除这些干扰因素。在得到完好的数字主体区域后,可以使用数字主体区域与原图做与运算,得到原图中的数字区域,然后进行形态学优化即可。

2023-01-29 16:32:49 939

原创 opencv 七 提取缝纫机布料的内轮廓线

在白色背景下拍摄布料的照片,使用图像处理算法找到布料的内轮廓线,用于缝纫机自动缝纫下针。上图的特点是背景区域为白色,目标缝纫区域基本为灰色或黑色。在目标缝纫区域存在一些白点或者白线,需要设法去除这些干扰因素。在得到完好的目标缝纫区域后,可以使用形态学算法求出目标轮廓线(具体为物体内靠近边缘的一条细线,不是外轮廓线)。1、读取图像为灰度图并进行二值化 【imread("filename",0),0:灰度图模式】 2、进行开运算与形态学优化 【通过开运算删除白色小孔洞;通过deleteMinWhiteArea

2023-01-18 14:59:52 323

原创 opencv 六 缺陷检测实战2(PCB缺陷检测——小面积缺陷)

使用opencv对PCB进行缺陷检测,具体缺陷类型有开路(断路)、短路、缺口、毛刺。上图为灰度图,黑色部分为电路板路线,其存在缺口、断路、毛刺、短路等缺陷。这些缺陷有的属于白色缺陷,有的属于黑色缺陷,但都属于小面积缺陷。故,可以使用opencv中的形态学算法,如:腐蚀、膨胀、开运算、闭运算等方法提取这些小面积缺陷。解决问题的核心思想如下:用开运算检测毛刺和短路(开运算会消除小面积的白色区域),用闭运算检测缺口和断路(闭运算会消除小面积的黑色区域),开运算与闭运算所的消除结果之和为全部缺陷。

2023-01-11 21:49:42 6427 7

原创 opencv 五 缺陷检测实战1(检测以连通域面积特征为缺陷)

上图为灰度图,由网格状排列黑点和大面积的黑点区域(即缺陷)组成,具体**缺陷类型为粘连**,其**形态学特征为 连通域面积较大**。查找图中缺陷(大面积的黑点)**算法的核心思想为:遍历所有的轮廓,根据面积判断缺陷**,当连通域面积大于一定的值(面积比普通的黑点大),即判断为缺陷,并在原图上标出缺陷轮廓

2023-01-09 21:11:20 4464 1

原创 opencv 四 Mat的基本操作3(高通滤波、低通滤波、对比度调节)

图像滤波分为高通滤波和低通滤波,高通滤波用于求图形的边缘,低通滤波用于图像去噪、图像模糊化等。这里的频是指变化(相邻像素值的变化),高通滤波是指使变化大也就是图像的边缘)的通过(低通滤波是指使变化小(也就是图像中图形)的通过。高通滤波部分涉及到Sobel、Scharr、Laplacian、canny等方法低通滤波 部分涉及: 均值滤波,方框滤波、中值滤波、高斯滤波和双边滤波。

2023-01-07 15:59:07 3761 1

原创 opencv 三 Mat的基本操作2(图像读取保存、颜色空间、裁剪、缩放、旋转)

Opencv中对彩色图的操作同样可以应用于灰度图和二值图,彩色图与灰度图直接的区别在于颜色类型空间类型的不同,这里以彩为操作示例。RGB、BGR、LAB、HSV是常见的3通道(CV_8UC3、CV_32FC3)彩色图类型,灰度图通常是一个通道的图像,二值图的数据类型与灰度图是一样的(CV_8UC1)。

2023-01-07 09:38:12 3821 1

原创 opencv 二 Mat的基本操作1(Mat初始化、基本属性、数学操作、位运算)

Mat的基本操作1(Mat初始化、基本属性、数学操作、位运算)

2023-01-07 09:35:32 2561 1

原创 opencv 一 基本运行环境配置(下载安装、编写代码、配置环境)

从0开始下载opencv并配置环境变量,然后在vs2019中新建c++项目,并配置opencv。最后新建代码,测试opencv的完整教程。

2023-01-02 22:30:04 13520 1

海康威视虚拟相机1.3.1

虚拟相机是对应工业相机实物而言,它是软件模拟出来的相机,本质上是 运行在 pc 上的一段程序。 使用工业相机 SDK 开发需连接工业相机。而搭建真实的相机物理环境,有 时候颇费周章。为了解决有时不方便搭建真实环境的问题,我司开发了虚 拟相机小工具。工业相机 SDK 对虚拟相机和工业相机实物的访问完全一 致,这样用户在开发阶段就可以使用虚拟相机来代替工业相机实物进行开 发调试。该压缩包包含虚拟相机程序与说明文档。

2023-12-04

ZBar库(含64位库与32位库文件)免安装版

下载解压后放在指定目录下即可,然后将ZBar\bin目录添加到系统环境变量path就算是完成了ZBar的安装。里面包含bin目录、include目录与lib目录

2023-12-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除