OpenCV
文章平均质量分 81
一个热爱学习的深度渣渣
本科软件工程,目前从事算法相关工作,欢迎志同道合的伙伴交流~
展开
-
基于C++的OpenCV项目实战——零部件的自动光学检测
多窗口展示背景去除连通图的实现轮廓边缘检测并且在实际的C++代码中,还涉及了智能指针等高阶知识;工业质检项目作为视觉领域较为成熟的落地项目,其大部分都是基于深度学习的方式实现了,但如果能掌握一些OpenCV的方法,也可以在项目中起到优化效果的作用;原创 2022-09-14 11:06:34 · 3274 阅读 · 2 评论 -
基于C++的OpenCV项目实战——文档照片转换成扫描文件
基于OpenCV的C++版本的实战项目,涉及霍夫变换、Canny边缘检测、透视变换、单应性矩阵、鼠标事件等知识点;目的在于提取图像中的指定区域,并且进行文档化的展示;原创 2022-09-13 10:40:21 · 2527 阅读 · 2 评论 -
【OpenCV学习】(十三)机器学习
【OpenCV学习】(十三)机器学习背景OpenCV中也提供了一些机器学习的方法,例如DNN;本篇将简单介绍一下机器学习的一些应用,对比传统和前沿的算法,能从其中看出优劣;一、人脸识别主要有以下两种实现方法:1、哈尔(Haar)级联法:专门解决人脸识别而推出的传统算法;实现步骤:创建Haar级联器;导入图片并将其灰度化;调用函数接口进行人脸识别;函数原型:detectMultiScale(img,scaleFactor,minNeighbors)scaleFactor:缩放尺原创 2022-01-25 16:43:28 · 6979 阅读 · 1 评论 -
【OpenCV学习】(十二)图像分割与修复
【OpenCV学习】(十二)图像分割与修复背景图像分割本质就是将前景目标从背景中分离出来。在当前的实际项目中,应用传统分割的并不多,大多是采用深度学习的方法以达到更好的效果;当然,了解传统的方法对于分割的整体认知具有很大帮助,本篇将介绍些传统分割的一些算法;一、分水岭法原理图如下:利用二值图像的梯度关系,设置一定边界,给定不同颜色实现分割;实现步骤:标记背景 —— 标记前景 —— 标记未知区域(背景减前景) —— 进行分割函数原型:watershed(img,masker):分水岭算法,原创 2022-01-24 21:44:07 · 8175 阅读 · 4 评论 -
【OpenCV学习】(十一)图像拼接实战
【OpenCV学习】(十一)图像拼接实战背景图像拼接可以应用到手机中的全景拍摄,也就是将多张图片根据关联信息拼成一张图片;实现步骤1、读文件并缩放图片大小;2、根据特征点和计算描述子,得到单应性矩阵;3、根据单应性矩阵对图像进行变换,然后平移;4、图像拼接并输出拼接后结果图;一、读取文件第一步实现读取两张图片并缩放到相同尺寸;代码如下:img1 = cv2.imread('map1.png')img2 = cv2.imread('map2.png')img1 = cv2.resi原创 2022-01-15 22:35:09 · 3341 阅读 · 0 评论 -
【OpenCV学习】(十)特征点检测与匹配
【OpenCV学习】(十)特征点检测与匹配背景提取图像的特征点是图像领域中的关键任务,不管在传统还是在深度学习的领域中,特征代表着图像的信息,对于分类、检测任务都是至关重要的;特征点应用的一些场景:图像搜索:以图搜图(电商、教育领域)图像拼接:全景拍摄(关联图像拼接)拼图游戏:游戏领域一、Harris角点哈里斯角点检测主要有以下三种情况:光滑区域:无论向哪个方向移动,衡量系数不变;边缘区域:垂直边缘移动时,衡量系数变化强烈;角点区域:不管往哪个方向移动,衡量系数变化强烈;函原创 2022-01-15 19:33:22 · 4359 阅读 · 0 评论 -
【OpenCV学习】(九)目标识别之车辆检测与计数
【OpenCV学习】(九)目标识别之车辆检测及计数背景本篇将具体介绍一个实际应用项目——车辆检测及计数,在交通安全中是很重要的一项计数;当然,本次完全采用OpenCV进行实现,和目前落地的采用深度学习的算法并不相同,但原理是一致的;本篇将从基础开始介绍,一步步完成车辆检测计数的项目;一、图像轮廓本质:具有相同颜色或强度的连续点的曲线;作用:1、可用于图形分析;2、应用于物体的识别与检测;注意点:1、为了检测的准确性,需要先对图像进行二值化或Canny操作;2、画轮廓的时候回修改输入的图像原创 2022-01-14 09:37:34 · 21113 阅读 · 126 评论 -
【OpenCV学习】(八)图像形态学
【OpenCV学习】(八)图像形态学背景形态学处理方法是基于对二进制图像进行处理的,卷积核决定图像处理后的效果;形态学的处理哦本质上相当于对图像做前处理,提取出有用的特征,以便后续的目标识别等任务;一、图像二值化定义:将图像的每个像素变成两种值,如0和255;全局二值化的函数原型:threshold(img,thresh,maxVal,type)img:最好是灰度图像thresh:阈值maxVal:超过阈值,替换为maxValtype:有几种类型,THRESH_BINAR原创 2022-01-11 17:21:32 · 3490 阅读 · 1 评论 -
【OpenCV学习】(七)图像滤波
【OpenCV学习】(七)图像滤波背景图像滤波的作用简单来说就是将一副图像通过滤波器得到另一幅图像;明确一个概念,滤波器又被称为卷积核,滤波的过程又被称为卷积;实际上深度学习就是训练许多适应任务的滤波器,本质上就是得到最佳的参数;当然在深度学习之前,也有一些常见的滤波器,本篇主要介绍这些常见的滤波器;一、卷积相关概念卷积核大小一般为奇数的原因:1、增加padding的原因;2、保证锚点在中间,防止位置发生偏移;卷积核大小的影响:卷积核越大,感受野越大,提取的特征越好,同时计算量也越大;边界扩原创 2022-01-06 19:27:04 · 3463 阅读 · 2 评论 -
【OpenCV学习】(六)图像基本变换
【OpenCV学习】(六)图像基本变换背景图像的变换通常用于数据预处理部分,例如缩放旋转等常见的图像变换方法;在一些深度学习框架内部都分装了图像变换的方法,对训练集做统一的图像变换操作;一、图像缩放函数原型:resize(src,dsize,[fx,fy,interpolation])fx:x轴的缩放因子;fy:y轴的缩放因子;interpolation:插值算法;插值算法有以下几种:1、INTER_NEAREST:最近邻插值,速度快,效果差;2、INTER_LINEAR:双线性插原创 2022-01-06 11:01:19 · 2619 阅读 · 0 评论 -
【OpenCV学习】(五)图像运算
【OpenCV学习】(五)图像运算背景图像本质就是矩阵,对图像的处理往往就是矩阵的运算;常见的运算有加法、减法和位运算等,一些进阶的滤波等操作,也是基于这些简单运算而来的,只是修改了一些参数而已;一、加法运算实际上就是像素值的相加,起到一个调节亮度(曝光)的效果;案例代码:org = cv2.imread('./org.jpg')# 创建一个相同大小的背景图img = np.ones((1200, 1920, 3), np.uint8) * 30# 像素值相加result = cv2.a原创 2022-01-05 21:52:24 · 2266 阅读 · 0 评论 -
【OpenCV学习】(四)图形绘制
【OpenCV学习】(四)图形绘制背景使用OpenCV进行图形绘制是一种必备的技能,在图像的任务中,不管是图像检测还是图像识别,我们都需要通过绘制图形和绘制文字对处理的结果进行说明,本篇就详细介绍下图形的绘制;一、画线line(图像,起始点,终点,颜色,线宽,线形):一般只需要前面四个参数即可;代码案例:cv2.line(img, (20, 100), (20, 500), (0,0,255))画出了一条Y方向上的红色线段;二、画矩形这个相对来说是应用最多的一种方法了,往往在检测项目中返原创 2022-01-05 16:48:36 · 2085 阅读 · 0 评论 -
【OpenCV学习】(三)色彩及矩阵操作
【OpenCV学习】(三)色彩及矩阵操作背景之前主要介绍了数据的读取和展示操作,本篇将开始介绍数据的简单处理操作;一、颜色空间转换1、介绍一些常见的颜色空间RGB:人眼的色彩空间;BGR:OpenCV默认使用的色彩空间;HSV的说明:Hue:色相,即色彩如红色、绿色;Saturation:饱和度,颜色的纯度;Value:明亮度;2、转换色彩空间cvtColor(原始数据,变换格式);变换格式有很多种,例如:COLOR_BGR2RGB、COLOR_BGR2BGRA等;代码案例原创 2021-11-24 23:37:51 · 4919 阅读 · 0 评论 -
【OpenCV学习】(二)数据的加载和展示
【OpenCV学习】(二)数据的加载和展示背景在实际工程中,最重要的往往是数据的读取和展示,OpenCV能够支持图像和视频数据,并且给予了很好的支持;不管是做传统项目还是基于深度学习的项目,读取数据都是必不可少的;创建和显示窗口使用API:namedWindow():创建一个窗口,给定名字和传窗口类型;imshow():展示窗口;destroyAllWindows():销毁所有窗口;resizeWindow():代码案例:import cv2// cv2.WINDOW_NORMAL原创 2021-11-21 14:19:40 · 7247 阅读 · 0 评论 -
【OpenCV学习】(一)开篇
背景OpenCV作为图像领域最常用的工具,是从事图像行业工程师必不可缺的技能;在业界很多项目都是基于OpenCV这个强大的库进行开发的,随着深度学习的发展,在一些任务上拜托了传统算法的依赖,但对于前处理以及后处理来说,OpenCV还是一个高效可用的图像库;OpenCV涉及的领域相当广泛,例如目标识别、自动驾驶、医学影像、视频内容理解等;选择Python版本的原因本次学习统一采用Python版本,主要考虑以下几点:1、Python语言相对简单,开发速度快(相较C++版本开发容易些);2、底层使用原创 2021-11-20 09:20:31 · 866 阅读 · 0 评论