基于openCV的H型钢计数算法的制作方法

文档序号:33037612发布日期:2023-01-24 20:27阅读:33来源:国知局
基于openCV的H型钢计数算法的制作方法
基于opencv的h型钢计数算法
技术领域
1.本发明涉及钢材计数技术领域,具体为基于opencv的h型钢计数算法。


背景技术:

2.钢材行业发展带来“大量钢材清点”问题,传统人工清点将会带来人力资源的浪费,时间成本的提高、容易带来经济纠纷,传统的钢管计数行业没有针对h型钢计数的算法且识别准确率较低。


技术实现要素:

3.针对上述情况,为弥补上述现有缺陷,本发明提供了基于opencv的h型钢计数算法,通过将图像转换成灰度图,前后景分割算法,霍夫变换直线检测,形态学滤波,霍夫圆检测等一系列方法,最终完成计数,配合微信小程序,使用户可以通过拍照上传系统,由系统识别图片中的钢管数量,从而实现自动计数,从而节省人力成本,提升工作效率,顺应了智慧工业的发展大趋势。
4.本发明提供如下的技术方案:本发明提出的基于opencv的h型钢计数算法,具体包括下列步骤:
5.(1)载入图像,先利用cvtcolor函数(用于将图像从一个颜色空间转换到另一个颜色空间的转换)将图像转换成灰度图,再利用自适应阈值函数即adaptivethreshold函数用于二值化处理图像,获得二值图;
6.二值化处理图像是指将图像转换成图像上的每一个像素点只有黑色或白色两种可能的取值,即二值图,其占用空间少,重点展示图像的边缘信息;
7.(2)形态学操作提取二值图中的竖线
8.采用getstructuringelement函数提取二值图中的竖线,其中getstructuringelement函数为element=cv2.getstructuringelement(cv2.morph_cross,(x,y)),在该函数中morph_cross即函数返回十字形卷积核,(x,y)表示该卷积核有x行y列,getstructuringelement函数的参数设定为(cv2.morph_rect,(1,int((src.shape[0])/64)),(-1,-1));
[0009]
形态学操作,例如腐蚀,膨胀,开运算,闭运算等,是根据图像形状进行的简单操作,一般情况下对二值化图像进行操作,形态学操作使用getstructuringelement函数,其功能是获取结构化元素;在本技术中用来提取二值图中的竖线;
[0010]
(3)清除背景中的无关竖线—前后景分割算法
[0011]
python中的rembg库是用来去除图片背景的,利用python中的rembg工具箱对步骤(2)处理之后的图像进行前后景分割,实现图像抽取,使得在计数钢材时不会将背景中的无关竖线计入,从而提高准确率;
[0012]
(4)进行计数
[0013]
measure.find_contours函数检测图像中所有竖线的轮廓,measure.find_
contours函数原型为skimage.measure.find_contours(array,level),在该函数中array是一个二值数组图像,level是在图像中查找轮廓的级别值,measure.find_contours函数的参数设定为(dst,0.5),最后返回轮廓列表集合,可用for循环取出每一条轮廓,即可得到钢材的总数量。
[0014]
采用上述结构本发明取得的有益效果如下:本发明提出的基于opencv的h型钢计数算法的创新点在于对h型钢材的识别和计数上,首先利用cvtcolor函数和adaptivethreshold函数将正常图像转化为灰度图和二值图,调试出合适的参数并通过getstructuringelement函数提取出图像中的竖线,接着运用rembg工具箱将钢材与背景分离,来清除不必要的竖线,最后通过measure.find_contours函数检测竖线的轮廓,从而进行钢材的计数。
[0015]
目前市场上同类型算法只能实现对圆型钢材的识别和计数,而不包括h型钢材,本方案提供的算法完善并改进了对圆型钢材识别的准确度,并创新性地加入了对h型钢材的识别和检测。
[0016]
本技术精准度优于市场同类产品,目前市场产品精准度大多为60%,本技术精准度可以达到90%以上,同时本产品一大特点是可以计算异型钢,例如:对h型钢以及工字钢进行高精度数量计算。
附图说明
[0017]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0018]
图1为本发明的原图、灰度图以及二值图的示意图;
[0019]
图2为本发明前后景分割效果展示图;
[0020]
图3为本发明的钢材技术示意图。
具体实施方式
[0021]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0022]
需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向,词语“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。
[0023]
如图1~3所示,本实施例提供了基于opencv的h型钢计数算法,具体包括下列步骤:
[0024]
(1)载入图像,先利用cvtcolor函数(用于将图像从一个颜色空间转换到另一个颜色空间的转换)将图像转换成灰度图,再利用自适应阈值函数即adaptivethreshold函数用于二值化处理图像,获得二值图;
[0025]
(2)形态学操作提取二值图中的竖线
[0026]
采用getstructuringelement函数提取二值图中的竖线,其中getstructuringelement函数为element=cv2.getstructuringelement(cv2.morph_
cross,(x,y)),在该函数中morph_cross即函数返回十字形卷积核,(x,y)表示该卷积核有x行y列,getstructuringelement函数的参数设定为(cv2.morph_rect,(1,int((src.shape[0])/64)),(-1,-1));
[0027]
(3)清除背景中的无关竖线—前后景分割算法
[0028]
python中的rembg库是用来去除图片背景的,利用python中的rembg工具箱对步骤(2)处理之后的图像进行前后景分割,实现图像抽取,使得在计数钢材时不会将背景中的无关竖线计入,从而提高准确率;
[0029]
(4)进行计数
[0030]
measure.find_contours函数检测图像中所有竖线的轮廓,measure.find_contours函数原型为skimage.measure.find_contours(array,level),在该函数中array是一个二值数组图像,level是在图像中查找轮廓的级别值,measure.find_contours函数的参数设定为(dst,0.5),最后返回轮廓列表集合,可用for循环取出每一条轮廓,即可得到钢材的总数量。
[0031]
要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物料或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物料或者设备所固有的要素。
[0032]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1