opencv
文章平均质量分 63
知来者逆
情不知所起,一往而深
展开
-
计算机视觉——OpenCV 使用分水岭算法进行图像分割
分水岭算法通过模拟自然地形来实现图像中物体的分类。在这一过程中,每个像素的灰度值被视作其高度,灰度值较高的像素形成山脊,即分水岭,而二值化阈值则相当于水平面,低于这个水平面的区域会被“淹没”。原创 2024-04-26 11:38:03 · 168 阅读 · 0 评论 -
计算机视觉—— OpenCV cornerSubPix亚像素角点检测
亚像素角点检测,在数字照片中,最小的可见单位是“像素”。尽管我们无法直接看到像素之间的信息,但有些应用场景需要比相机所提供的信息更加精确。例如,在从图像中重建三维(3D)对象时就需要进行精确的测量。为了提高角点识别的准确性,已经开发了一些数学策略。原创 2024-04-25 09:19:25 · 626 阅读 · 0 评论 -
计算机视觉——使用OpenCV GrabCut算法从图像中移除背景
GrabCut算法是一种用于图像前景提取的技术,由Carsten Rother、Vladimir Kolmogorov和Andrew Blake三位来自英国剑桥微软研究院的研究人员共同开发。该技术的核心目标是在用户进行最少交互操作的情况下,自动从图像中分割出前景对象。在GrabCut算法中,用户只需在图像上用矩形框选出包含前景对象的区域,算法随后会迭代地进行分割,直至得到最佳结果。在这个过程中,若算法错误地将某些前景区域标记为背景或反之,用户可通过在图像上绘制笔触进行修正,指导算法在下一次迭代中进行更准原创 2024-04-24 17:52:49 · 1258 阅读 · 1 评论 -
计算机视觉——OpenCV Python位运算与图像掩码
位运算与图像掩码的结合允许对图像的特定区域进行精确的操作。通过使用位运算(如AND、OR、XOR和NOT),可以基于掩码的选择性地修改图像数据。原创 2024-04-17 14:46:46 · 938 阅读 · 0 评论 -
计算机视觉——OpenCV Python基于颜色识别的目标检测
在HSV颜色模型中,色调的度量是以色轮为基础的,其中红色通常对应于0度(或360度,因为色轮是连续的),绿色对应于120度,蓝色对应于240度。色调的这种表示方式使得颜色的选择和调整变得直观,因为它与我们在日常生活中描述颜色的方式相一致。这种分离使得HSV颜色空间在处理光照变化时更为鲁棒,因为可以通过调整色调和饱和度的范围来检测特定颜色的物体,而不受亮度变化的影响。现在,检测的定义颜色范围。:在HSV颜色空间中,可以通过设置色调、饱和度和亮度的阈值来创建颜色掩码,从而过滤和检测特定颜色的物体。原创 2024-04-16 10:29:24 · 1361 阅读 · 0 评论 -
计算机视觉——基于OpenCV和Python进行模板匹配
模板匹配的主要目标是在一幅大图像中定位一个或多个与模板图像相匹配的区域。这个过程就像是用一个“放大镜”在大图像上移动,不断比较模板图像与大图像中相应位置的相似度。通过计算模板图像和大图像中各个位置的像素差异,可以找到与模板图像最为相似的区域。原创 2024-04-14 16:01:03 · 1600 阅读 · 5 评论 -
OpenCV图像处理——创建、读取、无损保存图像(C++/Python)
详细示例了OpenCV创建图像、读写图像、保存图像,保存高质量图像原创 2023-09-23 23:08:10 · 2566 阅读 · 0 评论 -
OpenCV图像处理使用笔记(五)——图像边界拓展
前言1.在OpenCV滤波和卷积算法中,在进行核运算的过程中,矩阵边界拓展是一个非常重要的处理,OpenCV提供的函数copyMakeBorder()来拓展边界。2.我的系统环境是Linux,加Qt creator,OpenCV的版本是3.30。边界拓展1.函数原型void copyMakeBorder( InputArray src, OutputArray dst, int top...原创 2019-06-20 17:39:55 · 2206 阅读 · 1 评论 -
OpenCV图像增强(三)——自适应对数映射
前言1.这是一种在低光照下对色彩恢复效果很好的算法,具体可以看《Adaptive Logarithmic Mapping For Displaying High Contrast Scenes》。2.代码不多,直接调用封装好的函数就可以了。代码void adaptiveLogarithmicMapping(const Mat& img, Mat &dst) { ...原创 2019-07-18 20:26:29 · 1315 阅读 · 1 评论 -
OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪
ORB算法通过结合FAST和BRIEF两种算法的优点,能够在图像中快速准确地检测到关键点,并生成对应的特征描述符。这使得ORB算法非常适合用于对象识别、跟踪和图像拼接等任务,尤其是在需要处理大量图像数据时,ORB的高效性尤为重要。原创 2024-04-05 22:02:25 · 1229 阅读 · 0 评论 -
OpenCV图像处理——基于背景减除实现多目标追踪
BackgroundSubtractorMOG2作为GMM算法的改进版本,在保持原有优点的基础上,通过增加阴影检测和提高算法效率,使得它在处理复杂场景时更加鲁棒和高效。原创 2024-04-05 11:50:20 · 922 阅读 · 0 评论 -
OpenCV图像处理——图像矩
图像矩的应用在图像分析中扮演着关键角色,它们不仅能够提供对象的几何信息,还能够辅助我们进行图像识别、分类和模式识别等任务。在处理复杂对象时,高阶矩的使用能够提供更加精确和详细的描述,从而提高对象重构的准确性。通过这些方法,我们可以更好地理解和分析图像中的内容,为各种视觉任务提供强有力的支持。原创 2024-03-27 13:51:12 · 629 阅读 · 0 评论 -
OpenCV图像处理——遍历图像像素的几种方式比对
在 OpenCV 中,访问图像像素有好几种,如:.at、.ptr、ptr()、.data、MatIterator_ 等,不同的像素访问方式的处理时间都不相同。对于实时性要求比较高的应用场景来说,处理的时间极为重要。原创 2024-01-10 14:14:26 · 569 阅读 · 0 评论 -
OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取
在图像处理中,亚像素插值常常用于提高对物体边缘位置的定位精度。一些常见的亚像素插值方法包括双线性插值、三次样条插值等。这些方法通过考虑像素之间的连续性,从而提供了比单纯使用离散像素更为精确的坐标信息。原创 2024-01-02 22:23:34 · 2150 阅读 · 1 评论 -
OpenCV数字图像处理——基于目标边缘适用于目标部分遮挡或不同光照模板匹配
模板匹配是一项具有挑战性的任务,主要受到其速度和可靠性的限制。当对象只有部分可见或与其他对象混合在一起时,解决方案必须具备鲁棒性,特别是对亮度变化要有稳健的适应能力。在此问题中,算法的计算效率也至关重要。为解决这一问题,存在两种主要方法:基于灰度值的匹配(或基于区域的匹配)和基于特征的匹配(非基于区域的匹配)。原创 2023-12-26 17:25:29 · 1180 阅读 · 0 评论 -
OpenCV数字图像处理——检测出图像中的几何形状并测量出边长、直径、内角
在自动化制造行业中,机器视觉技术广泛应用于工件尺寸测量。通过机器视觉系统,可以测量工件的长度、直径、角度、曲率等多个尺寸参数,甚至可以检测产品的相关区域的基本几何特征。这种技术不仅能够实时获取产品的尺寸参数,还能够进行在线实时判定和分拣,对自动化生产起到重要作用。原创 2023-11-28 11:55:15 · 3523 阅读 · 7 评论 -
Visual Studio 2019下编译OpenCV 4.7 与OpenCV 4.7 contrib
vs2019 c++使用opencv 和contrib、dnn,编译opencv的详细步骤。原创 2023-11-11 15:20:50 · 1013 阅读 · 0 评论 -
OpenCV图像处理——矩形(Rect)类的常用操作
矩形(Rect)常用属性、操作、处理原创 2023-09-07 09:00:19 · 2329 阅读 · 0 评论 -
轻量化实时语义分割LiteSeg——从算法原理到模型训练与部署
1.语义分割可用于代替传统算法的边缘检测,图像分割,多应用于自动驾驶、文档处理,工业缺陷检测等领域。2.LiteSeg是一种实时的轻量级的语义分割网络,为了在 移动端上能有更快的速度和更好的效果,在论文的基础上做了算法优化。2.博客详细的记录了LiteSeg这个网络从论文复现到优化模型、训练模型、模型部署推理的步骤与代码实现。原创 2022-05-04 18:30:33 · 6765 阅读 · 9 评论 -
直线检测——对比M-LSD直线检测(基于深度学习)与霍夫曼直线检测
对比基于深度学习和传统直线检测算法的精度与检测速度,OpenCV C++ 实现,深度学习更好的取代传统算法一个痛苦的调参过程。原创 2022-04-24 11:20:34 · 10155 阅读 · 2 评论 -
文档扫描识别——OpenCV与C++实现OCR文字识别
文档边缘检测与OCR文字识别原创 2022-01-17 23:49:15 · 12927 阅读 · 4 评论 -
智能证件照制作——基于人脸检测与自动人像分割轻松制作个人证件照(C++实现)
基于深度学习的智能证件照制作,导入一个照片自动剪切替换背景生成常用的证件照原创 2021-12-21 01:14:00 · 8626 阅读 · 22 评论 -
智能人像自动抠图——C++ 实现LFM 模型推理
前言关于抠图,首先想到的是PS的抠图,要美工手动一点点的把细节抠出来,抠图的好坏取决一个美工对PS的熟悉程度,在人像抠图方面,对头发的处理更是耗时耗力的一件事,在拍证件照的照像馆都有固定的绿幕来挡掉复杂的背景,以免增加后期的工作量,那么有没有一种完全自动的抠图办法呢? [A Late Fusion CNN for Digital Matting] CVPR 2019 上的一编论文, 作者提出了全自动抠图这个算法,不需要绿幕,也不需要输入trimap图(有了解传统抠图算法的应该知道这个图是干吗用的),背景原创 2021-11-30 01:04:43 · 4257 阅读 · 0 评论 -
图片找茬游戏——使用OpenCV查找两张图像的不同处并标记
前言有个小游戏,就是给出两张只有轻微的几处差异的图像,来大家来找出图像中的不同之处,之前曾经玩过,发现游戏明明告诉你有几处不同,但你什么也找不全,比如下面的几组图像,这几组图像每组都有三个不同的地方。不管你再什么认真找,也不容易找全其中差异的地方。以前试过从左到一块块的用眼睛扫描,但也是很容易漏掉细微的地方。可能是人的视觉感受野的问题吧。2.在数字图像处理里面,每张图像都被看成一个三维的矩阵,那么把两张图像矩阵一相减,就得到差异的地方,在OpenCV库里面有封装的函数subtract()原创 2021-11-26 22:34:02 · 12700 阅读 · 2 评论 -
Yolov5身份证检测——C++ OpenCV DNN推理
1.由于OpenCV DNN中的slice层不支持step为2,所以在转换模型时需要修改代码,修改的地方在models/common.py中Focus类修改前:class Focus(nn.Module): # Focus wh information into c-space def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding,原创 2021-07-12 14:23:39 · 2736 阅读 · 4 评论 -
Qt网络编程——使用OpenCV与TCP搭建图像处理服务器
前言前面的博客有写过如果使用TCP搭建一个客户端与服务器,连接并互发信息,这里主是演示,如何把客户端的图像发往服务器,服务器得到图像后,按指令做不同的处理,并返回给客户端处理之后的结果,客户端只负责打开和发送图像,所有关于图像的图像的处理,比如灰度图像,人脸检测啊,都经过服务器处理之后返回给客户端。代码注释比较多,具体流程可以看源码,就应该了解。代码1.客户端client.h#ifndef CLIENT_H#define CLIENT_H#include <QMainWindow&原创 2020-06-30 23:27:52 · 807 阅读 · 3 评论 -
QT网络编程——TCP客户端连接到服务器
Qt和C++实现的图像处理服务器原创 2020-05-24 01:12:54 · 9732 阅读 · 2 评论 -
OpenCV图像处理——深度学习样本制造
前言在做深度学习相关的项目时,往往最麻烦的是样本的收集,或者只有很少的一些样本,训练根本达不到想要的效果,很多网络模型的配置文件里面都有样本增强的定义,是对样本做旋转,变换之类的操作,但没有给样本加一些背景来制造增强样本的数量。一、样本准备1.我做一个发票检测位置到识别里面文字的项目,但我手里并没有多少张发票样本,在网上也很难找到能用的样本,我的应用场景是把发票放在桌面上拍照之后,检测识别。...原创 2020-03-31 20:27:59 · 911 阅读 · 2 评论 -
OpenCV图像处理——iOS端人脸检测
前言1.OpenCV有专门的iOS平台的包,可以真接下载导入工程,也可以用cmake把OpenCV源码编成.a文件,以静态库的形式导入工程。2.我这里用的Xcode11,OpenCV用的是最4.20这个版本。3.这里用到的人脸检测是OpenCV官方给的级联分类器,可以在OpenCV源码的Data目录中找到。iOS人脸检测1.新建一个iOS工程,把用于与C++混编的文件后缀.m改成.mm,...原创 2020-03-29 19:01:45 · 1579 阅读 · 1 评论 -
OpenCV的图像处理——iOS与OpenCV之间图像转换
前言1.OpenCV有专门的iOS平台的包,可以真接下载导入工程,也可以用cmake把OpenCV源码编成.a文件,以静态库的形式导入工程。2.我这里用的Xcode11,OpenCV用的是最4.20这个版本。图像转换1.iOS所支持的图像格式是UIImage,OpenCV的图像格式是Mat,如果要在iOS用OpenCV处理图像,那得先把UIImage转成Mat,才能使用OpenCV的库来做...原创 2020-03-29 13:18:27 · 754 阅读 · 1 评论 -
OpenCV图像处理——把图像指定颜色变成透明
概述PNG格式的图像是有透明通道,用PS打开的时候,透明的地方是没有像素的,可以的下面在ps里面显示的效果:黑色背景:白色背景:透明背景:把指定颜色变成透明代码:void toPng(cv::Mat &src, cv::Mat &dst, int mark){ cv::Mat cv_input = src.clone(); if (cv_input.cha...原创 2020-03-13 14:55:12 · 8236 阅读 · 1 评论 -
图像增强——基于OpenCV的图像色彩增强
前言这是一个增强图像色彩的demo,基于OpenCV,能很好的增强与锐化图像中的色彩。色彩增强1.代码void colorEnhancement(cv::Mat &src, cv::Mat &dst, int filter){ cv::Mat orig_img = src.clone(); cv::Mat simg; if (orig_img.channe...原创 2020-03-05 13:57:16 · 5181 阅读 · 1 评论 -
OpenCV图像处理——copyTo与mask(掩码)操作
概述Mat矩阵类的成员函数中copyTo()函数有两种原型,第一种是:image.copyTo(imageROI),作用是把image的内容复制粘贴到imageROI上;第二用法是:image.copyTo(imageROI,mask)。 作用是把mask和image重叠以后把mask中像素值为0的点对应的image中的同位置点变为0,而不为0的点保持不变。第二种办法最常用的一个场景是不规则R...原创 2020-02-28 14:13:49 · 4938 阅读 · 0 评论 -
OpenCV图像处理—— 凸包检测
前言凸包(Convex Hull)是一个计算几何(图形学)中的概念,在一个实数向量空间V中,对于给定集合X,所有包含X的凸集的交集S被称为X的凸包。通俗的讲就是把检测到一个平面的点以最大的外包多边形包进去。凸包检测1.C++ API 原型void convexHull(InputArray points, OutputArray hull, bool clockwise=false, bo...原创 2020-02-28 09:50:24 · 1278 阅读 · 1 评论 -
图像处理——基于深度学习HED实现目标边缘检测
前言使用传统的图像来检测目标边缘,受到干扰的因素太多了,而已鲁棒性不高,同样的参数,在这个环境下可以,换个环境就根本检测不到物体的边缘,或者把不是边缘的也检测进去了。ICCV2015有人提出了整体嵌套边缘检测,就通过深度学习模型执行图像到图像的预测。论文地址:https://arxiv.org/abs/1504.06375,github上的工程:https://github.com/s9xie/...原创 2020-02-26 11:39:29 · 6910 阅读 · 10 评论 -
图像处理——基于OpenCV的Scharr边缘检测
前言Scarry是sobel算子的特殊改进情况。当内核大小为3时,Sobel内核可能产生比较明显的误差,为了解决这一问题,Opencv提供了Scharr函数,但该函数仅作用于大小为3的内核,运行速度与Sobel函数一样,但结果却更加精确。 Scharr滤波器运算符计算x或y方向的图像差分。其实它的参数变量和Sobel基本上是一样的,只是有ksize核的大小。Scharr算子1.OpenCV ...原创 2020-02-25 22:12:26 · 1227 阅读 · 1 评论 -
图像处理——Edge Boxes边缘检测
前言传统的边缘检测对一些内容,色彩比较丰富的图像,提取出来的边缘并不理想,ECCV2014来自于微软研究院的Piotr等人的《Edge Boxes: Locating Object Proposals from Edges》这个文章,采用的是纯图像的方法实现了目标检测的算法,也是基于物体的边缘分割。这个算法对边缘的提取要好过传统的canny算法。如果想要深入了解可以看大神的论文。Edge Bo...原创 2020-02-25 20:42:41 · 5257 阅读 · 7 评论 -
图像处理——基于OpenCV的canny边缘检测
前言边缘检测是处理图像里面的比较重要的一个概念,现在的边缘有传统的处理算法,也有加入深度学习的边缘检测算法,这里把我用过的几种边缘检测做个对比。canny算子1.OpenCV canny() C++ APIvoid Canny(InputArray image, OutputArray edges, double threshold,double threshold2,int apertu...原创 2020-02-25 20:21:18 · 1053 阅读 · 0 评论 -
OpenCV图像处理——判断图像是否失焦模糊
前言在图像处理中,避免不了会碰到一些失焦模糊的图像,特别在读取和初始化摄像头的时候,对失焦模糊判断是避免不了的一步,那么如何使用opencv去判断一张图像是否模糊呢?判断是否失焦失焦的图片和对焦准确的图片最大的区别就是正常图片轮廓明显,而失焦图片几乎没有较大像素值之间的变化,对图像的横向,以及纵向,分别做差分,累计差分可以用来作为判断是否失焦的参考。代码//简单设定阈值判断是否失焦bo...原创 2020-01-31 22:51:08 · 7466 阅读 · 0 评论 -
OpenCV图像处理——修复失焦模糊的图像
前言这是一个图像去模糊的小demo,用OpenCV实现。标题代码:#include <iostream>#include "opencv2/imgproc.hpp"#include "opencv2/imgcodecs.hpp"#include "opencv2\highgui.hpp"using namespace cv;using namespace std;...原创 2020-01-31 13:32:16 · 2938 阅读 · 1 评论