利用条码的特征即白色背景,不同宽度的黑色条码进行图书条码提取

1、首先是读取图像,默认是(B,G,R)图像:

import cv2 as cv
#bgr通道顺序的彩色图像
origin_image = cv.imread("E:/PythonFiles/images/shu.bmp")
cv.imshow("image",origin_image)
#复制图片 保留原图
image = origin_image.copy()
image_background = origin_image.copy()

读取图像之后,根据后续的需要进行多次的图像复制,保留原图用于最后的操作。

2、获得图像的宽、高:

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
h,w = gray.shape
#h,w,_ = image.shape

3、提取b、g、r三个通道:

#提取 三个通道
b = image[:,:,0];g=image[:,:,1];r=image[:,:,2]

4、根据背景特征获得图片

白色的BGR通道值为(255,255,255)。
遍历三个通道每一个像素点的值时,考虑到灯光、拍摄角度等外界影响因素,可以给该值与255的差设置一个范围,可以更好得获得想要的结果。

for i in range(h):for j in range(w):if (abs(b[i,j]-255)<50) and (abs(g[i,j]-255)<50) and (abs(r[i,j]-255)<50):image[:,:,:][i,j] = 255else:image[:,:,:][i,j] = 0

此时获得为三通道的图片!

5、灰度、二值化处理

gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
_,binary = cv.threshold(gray,0,255,cv.THRESH_OTSU)
#cv.imshow("binary",binary)

6、形态学处理

可以更改结构元的大小,获得不同的处理效果。

#膨胀操作 进行连接
kernel = cv.getStructuringElement(cv.MORPH_RECT,(20,1))
binary = cv.dilate(binary,kernel)
#cv.imshow("dilate",binary)
#腐蚀操作 去噪
kernel =  cv.getStructuringElement(cv.MORPH_RECT,(1,15))
binary = cv.erode(binary,kernel)
#cv.imshow("erode",binary)

膨胀效果:

腐蚀效果:

7、根据轮廓特征在原图上绘制最小包围矩形

找出轮廓后,遍历全部的轮廓并用最小矩形包围;然后根据条码宽、高的比例范围,得出最终结果;再利用返回的四个值(x、y、w、h)在原图上绘制出矩形框。

contours,_ = cv.findContours(binary,cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
for contour in contours:rect = cv.boundingRect(contour)x = rect[0];  y = rect[1];  w = rect[2];  h = rect[3]if (w>1.2*h) and (w<1.6*h):cv.rectangle(image_background,(x,y),(x+w,y+h),(0,0,255),3)
cv.imshow("jieguo",image_background)

8、提取条码图片

提取图片时,注意左上角坐标位置(x,y),图片宽高(w,h)与矩阵行列(r,c)三者的关系。

ROI = origin_image[y:y+h,x:x+w]
cv.imshow("ROI",ROI)
cv.waitKey()
cv.destroyAllWindows()


写在最后:
在该过程中是利用目标区域的颜色特征进行提取,根据这一方法,整个的提取流程也就可以用到其他方面,例如车牌的提取,感兴趣的可以试一下。

OpenCV提取图书条码(ISBN码)相关推荐

  1. ISBN码识别-DA数据结构二级项目

    ISBN码识别 输入图像 灰度化处理 去噪处理 二值化处理 倾斜图像修正 截取 ISBN 号所在行 字符分割处理 字符识别处理 某些可以使用的函数 国际标准书号.这个号码印刷在每本图书封底(或护封)的 ...

  2. 什么是ISBN码及其如何制作

    国际标准书号(International Standard Book Number),简称ISBN,是国际上通用的出版物标识编码. 中国标准书号由标识符ISBN和十三位数字编码组成.十三位数字编码又分 ...

  3. Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示

    Python,OpenCV提取图片中的多个茄子种子轮廓,并按从左到右排序后显示 1. 效果图 2. 源码 写这篇博客源于博友的提问,期望把下图中的多个茄子种子按从左到右的顺序提取出来: 1. 效果图 ...

  4. PHP校验ISBN码的函数

    国际标准书号(International Standard Book Number,ISBN:拟发音is-ben),是国际通用的图书或独立的出版物(除定期出版的期刊)代码.出版社可以通过国际标准书号清 ...

  5. python更改图片中物体的颜色_Python Opencv提取图片中某种颜色组成的图形的方法...

    Python Opencv提取图片中某种颜色组成的图形的方法 主要目标识别图中红色的裂缝,尝试了几种不同的方法,最后发现比较每一点的RGB差值可以很好的解决这个问题,也就是提取图片中的红色相关信息.处 ...

  6. jsp+servlet+mysql实现的图书管理系统源码

    此篇给大家推荐的是jsp+servlet+mysql实现的图书管理系统源码: 随着社会信息量的与日俱增,作为信息存储的主要媒体之一的图书,数量,规模比以往任何时候都大的多 不论个人还是图书管理部门都需 ...

  7. java爬取当当网所有分类的图书信息(ISBN,作者,出版社,价格,所属分类等)

    java爬取当当网所有分类的图书信息(ISBN,作者,出版社,价格,所属分类等) 顺手写的,没有建立新项目,放我自己的项目的一个文件夹里了,有兴趣的朋友可以拉下来试试 https://gitee.co ...

  8. 出版图书二维码,要如何制作呢?

    在出版图书中使用二维码已经非常普遍.且印刷在图书上的二维码类型也更加多样化.出版社可以通过一个简单的二维码,来向读者传递更加有趣的和丰富的内容,同时更加方便和读者进行互动沟通,还能实现私域引流的目的. ...

  9. 金蝶云星空二维码整体解决方案 金蝶云星空条码管理系统 金蝶ERP移动解决方案 金蝶云星空条码扫描 金蝶云星空WMS仓库移动扫码 金蝶安卓PDA扫码方案 金蝶云星空出入库盘点出货条码扫码 提供源码

    本人在ERP实施公司做顾问四五年,参与企业实施ERP十多个项目,非常熟悉企业ERP流程,在实施过程遇到众多问题,提出了不少根据企业具体情况的解决方案.          最近定制开发了一套适合企业的条 ...

  10. JAVA采集图书的ISBN编号编码、出版社、出版时间、版次、正文语种、定价等信息

    今天分享我的一个练手项目,用来采集图书的ISBN编号编码.出版社.出版时间.版次.正文语种.定价等信息. 本项目介绍了如何使用代理IP和多线程采集公开数据,项目尚不具备使用条件,仅供学习参考. 项目需 ...

最新文章

  1. pandas筛选dataframe列名称中包含特定字符串的数据列(select columns contains specifiec substring in dataframe)
  2. ES6基础之——对比两个值是否相等Object.is()
  3. html 未来元素绑定事件,jquery on如何给未来元素绑定事件?
  4. 【机器学习】什么是机器学习?(上)
  5. Could not set property 'xxx' of 'class 'xxx' with value 'xxx'
  6. C语言字符5,C语言编程(练习5:字符串与字符串函数)-Go语言中文社区
  7. js计算工时,去周末,设置上下班时间
  8. 基于消息中间件RabbitMQ实现简单的RPC服务
  9. Java 并发编程之内置锁 synchronized
  10. 【定时任务|开机启动】Windows Server 2008/2012 计划任务配置(任务计划程序)每分钟执行BAT...
  11. [分组背包]Luogu1064 金明的预算方案
  12. linux添加Qt的fontconfig,qt – 如何在Red Hat 5.3中将fontconfig更新为更新版本?
  13. 敏捷转型中的敏态与稳态
  14. BurpSuite使用详解(三)Spider功能
  15. 路由器不同网段虚拟服务器设置,局域网中不同网段互访?静态路由表必须要学会设置...
  16. PCB_元件模型创建
  17. stm32 KEIL AC6 优化0程序不运行问题解决
  18. 微信蓝牙设备开发教程之获取蓝牙设备deviceid和设备二维码(2)
  19. 新型勒索软件Phobos利用弱安全性攻击目标
  20. 简单理解 tr069协议

热门文章

  1. centOS下mysql主从配置
  2. 5python 体脂率计算(优化版)
  3. matlab里调节触发角度,电机与拖动基础及MATLAB仿真陈亚爱第4章直流电机.ppt
  4. 移动web前端开发注意事项
  5. 移动开发者必须了解的10大跨平台工具
  6. VS2010 专业版本安装步骤
  7. 同文输入法 android,同文输入法下载-同文输入法 v3.0-beta2_手机乐园
  8. 金蝶KIS专业版 反过账脚本
  9. 大文件上传插件webupload插件
  10. MAC 破解百度网盘限速