OpenCV_检测图像中的条形码

看了StackOverflow上的这篇文章后,加以改进,基于C++实现

先上几张效果图:

算法的主要流程为:

1、首先将读入图片归一化到640*480大小以内的,图片太大的话,一是运行速度慢,而是影响检测效果;

2、将彩色图转换成灰度图;

3、得到灰度图分别在水平方向和垂直方向上的梯度幅值;

4、将水平方向上梯度幅值减去垂直方向上的梯度幅值,得到高水平梯度和低垂直梯度的图片;

效果为:

5、对这个图像进行平均模糊,有助于平滑梯度图像中的高频噪声;

平滑后的效果为:

6、二值化。将模糊化后的图像进行二值化,梯度图中任何小于等于220的像素设为0,其余设为255(白色);

7、进行形态学闭运算,消除条形码中垂直条中的缝隙;

8、进行腐蚀膨胀操作,消除其他的干扰噪声点。

9、利用findContours()函数,找到条形码区域即可

时间: 2024-11-14 12:56:21

OpenCV_检测图像中的条形码的相关文章

Matlab实现Hough变换检测图像中的直线

Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各条曲线. 下面使用Matlab实现Hough变换对图像中的直线划痕进行检测. close all; clear all; I = imread('scratch.tif'); figure; subplot(1,3,1); imshow(I); BW = edge(I,'canny');%Canny

利用OpenCV检测图像中的长方形画布或纸张并提取图像内容

基于知乎上的一个答案.问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何提取这个图形里的内容呢?这是个很常见的场景,比如在博物馆里看到一幅很喜欢的画,用手机找了下来,可是回家一看歪歪斜斜,脑补原画内容又觉得不对,那么就需要算法辅助来从原图里提取原来的内容了.不妨把应用的场景分为以下: 纸张四角的坐标(图中红点)已知的情况 也就是上面的左图中4个红点是可以准确获取,比如手动标注,那么就简单了:用OpenCV的Perspective Trans

用 Python 和 OpenCV 检测图片上的条形码

  用 Python 和 OpenCV 检测图片上的的条形码 这篇博文的目的是应用计算机视觉和图像处理技术,展示一个条形码检测的基本实现.我所实现的算法本质上基于StackOverflow 上的这个问题,浏览代码之后,我提供了一些对原始算法的更新和改进. 首先需要留意的是,这个算法并不是对所有条形码有效,但会给你基本的关于应用什么类型的技术的直觉. 假设我们要检测下图中的条形码: 图1:包含条形码的示例图片 现在让我们开始写点代码,新建一个文件,命名为detect_barcode.py,打开并编

Max-Min Filter 实现及用于检测图像边缘

一. 边缘检测 边缘检测通常作用于灰度图像上.边缘检测用于检测图像中的线. 边缘检测结果 ↑ 二. 最大 - 最小滤波器(Max - Min) 3*3 Max-Min Filter 算法原理 ↑ 我们知道,图像的细节属于低频信息,图像的边缘属于高频信息.我们使用一定大小的 Max-Min 滤波器作用于图像,当滤波器作用于图像细节时,输出结果往往趋向于0(黑色):而滤波器作用于图像边缘时,Max-Min 输出结果往往趋向于255(白色).所以 最大-最小滤波器 能有效地用于检测图像的边缘和轮廓.

条形码读取控件Softek Barcode Reader Toolkit提取图像中条形码信息

Softek Barcode Reader Toolkit是一款功能强大的条形码读取控件,提取图像中条形码信息的综合工具包.可用在扫描.索引文件的应用程序中.条形码信息可高速准确地从文件中读取,无需介入操作,应用程序就可索引图像. 具体功能: 支持一维和二维条形码 shell(命令解析器)工具. C语言的API(应用程序接口). Perl(实用报表提取语言)模式. Java(TM)类. 图像消噪. 兼容常规的表达形式. 通过条形码的位置可分离多页的TIF文件. 支持彩色图像, 创建Code 39

图像物体检测识别中的LBP特征

1        引言 之前讲了人脸识别中的Haar特征,本文则关注人脸检测中的LBP特征,说是对于人脸检测的,其实对于其他物体也能检测,只需修改训练数据集即可.所以本文的题目是物体检测识别,比如可以检测是否汽车是否有车牌号等. 在opencv实现的haar特征的人脸识别算法中,LBP特征也被支持. haar特征的博文链接:http://blog.csdn.net/stdcoutzyx/article/details/34842233. 2        LBP的历史 1996年,Ojala老大

pencv_contrib里的Text(自然场景图像中的文本检测与识别)

平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake Issue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景图像中的文本检测与识别)模块. 原因: 解决办法: 目录: 一.下载地址汇总(OpenCV+OpenCV_contrib+CMake)二.中间遇到的Issue汇总三.主要参考链接 1)Win10+VS2017编译opencv3.2.0和opencv_contrib3.2.0来调用text模块——https://

图像中区域生长算法的详解和实现

区域生长算法的基本思想是将有相似性质的像素点合并到一起.对每一个区域要先指定一个种子点作为生长的起点,然后将种子点周围领域的像素点和种子点进行对比,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的像素被包括进来为止.这样一个区域的生长就完成了.这个过程中有几个关键的问题: 1 给定种子点(种子点如何选取?) 种子点的选取很多时候都采用人工交互的方法实现,也有用其他方式的,比如寻找物体并提取物体内部点或者利用其它算法找到的特征点作为种子点. 2 确定在生长过程中能将相邻像素包括进来的准则

多线程.NET条码读写控件自动检测条码的方位条形码控件VintaSoftBarcode

VintaSoftBarcode.NET Library 条形码控件是一个完美的条码读写.NET 库,支持从数码图片读取条码或者生成数码图片条码. 具体功能: 支持多线程 支持创建条码图片 支持为生成的条码指定大小和分辨率 拥有许多选项控制条码创建 支持从图片对象.图片文件.和PDF文档读取条码 编程环境:.NET 框架. 这是一个可完全操纵的.NET 库,保证在.NET 框架中实现快速工作. 能够识别图片中的所有条码. 确认已识别的条码类型. 返回条码的字符串值. 自动检测条码的方位. 返回条