一种将任意字体字符转化成喷印点阵的方法技术

技术编号:23625030 阅读:38 留言:0更新日期:2020-03-31 22:46
一种将任意字体字符转化成喷印点阵的方法,获得带有给定字体字符的JPG格式或者PNG格式的图片后,先读取图片的宽度和高度,再获取图片的灰度信息,进行二值化处理,将二值化处理的结果保存在二维数组binary中,再提取二维数组binary中有字体字符的部分保存在字符数组dst_roi中,对字符数组进行缩放得到大小合适的喷印数组dst_zoom,最终将喷印数组dst_zoom输入到喷印设备的上位机中,控制喷印装置在产品表面进行喷印工作;本方法能够实现对任意字体字符的喷印工作,具有适应性强、方便和高效的特点。

A method of converting any font character into dot matrix

【技术实现步骤摘要】
一种将任意字体字符转化成喷印点阵的方法
本专利技术属于钢铁轧制与后处理
,特别涉及一种将任意字体字符转化成喷印点阵的方法。
技术介绍
带钢在国民经济中具有举足轻重的作用,广泛应用于汽车、家电、包装等领域。带钢一般通过热轧与冷轧进行生产,其产品形态为空心圆柱钢卷。钢卷在轧制生产过程中以及最终交货时,需要在钢卷的表面与侧面进行产品信息标注,这一标注工作在传统生产方式中由人工完成,但是存在效率低、风险性大等问题,因此,目前很多钢铁生产企业开始采用机器人完成这一工作。机器人通过喷码机将涂料从喷头直接喷印在带钢表面与侧面。常见的喷码机有矢量字符喷码机和点阵字符喷码机,矢量字符喷码机一般为单喷头结构,喷头安装在机器人手臂末端,通过程序控制喷头按照字符轨迹移动并喷写;点阵式字符喷码机可喷写点阵结构的字符,喷写速度快、原理简单。目前,学者们已经对点阵式喷印进行了相关研究。例如:“钢铁产品标识设备的现状及技术分析”参见《冶金设备》2001,第6期:33-36,文献介绍了国内外钢铁产品标识设备的种类和特点。“高速点阵式喷码系统研究”参见《现代电子技术》2013,36卷第13期:112-114,文献对高速点阵式喷印系统进行了研究。“钢铁产品点阵式打印机字符高度变换研究”参见《冶金设备》2004,第5期:43-44,文献分析了点阵式打印机字符高度变换原理。截止目前,已有的文献主要研究点阵式喷印系统设计与字符高度调节,通常只针对一种字体进行研究。如何将任意字体字符转化成喷印点阵的方法尚未见到相关报道,为此,提出一种将任意字体字符转化成喷印点阵的方法。
技术实现思路
为了解决上述现有技术存在的问题,本专利技术的目的在于提供一种将任意字体字符转化成喷印点阵的方法,能够在钢卷表面喷印任意字体或任意字符,具有使用方便、高效和快捷的特点。为了实现上述目的,本专利技术采用如下技术方案:一种喷印点阵的建立方法,包括以下步骤:步骤一,准备喷头和图片1.1根据需要喷印的字体大小来确定点阵字符喷码机高度方向上的喷头个数num;1.2获取需要在钢卷表面喷印的字体或字符的图片;步骤二,通过python语言对图片进行处理,具体包括如下步骤:2.1利用计算机通过cv2.imread()函数读入给定字体字符的图片,将宽度记为Width与高度记为Height;确定每个像素点的灰度值;2.2创建一个二维数组binary;2.3将灰度大于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为0;将灰度小于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为1;此时得到一个行索引为1~Height,列索引为1~Width的二维数组binary;步骤三、确定字符所在区域的起始行与起始列以及终止行和终止列,具体包括如下步骤:3.1定义长度为Height的一维数组max_rows,搜索二维数组binary每行的最大值,将其最大值存入一维数组max_rows;3.2定义长度为Width的一维数组max_columns,搜索二维数组binary每列的最大值,将其最大值存入一维数组max_columns;3.3定义长度为Width的一维数组columns;3.4令临时变量m=1,临时变量n=1;3.5判断数组max_columns中的第n个元素是否为1,若数组max_columns中的第n个元素为1,则将n值存为columns数组的第m个元素,并令m=m+1,n=n+1,再重复步骤3.5,若为否,则转入步骤3.6;3.6判断j是否等于Width,如果n=Width,则转入步骤3.7,否则令n=n+1,返回步骤3.5;3.7定义长度为Height的一维数组rows;3.8令临时变量k=1,临时变量L=1;3.9判断数组max_rows中的第L个元素是否为1,如果数组max_rows中的第L个元素为1,则将L值存为rows数组的第k个元素,并令k=k+1,L=L+1,再重复步骤3.9,若为否,则转入步骤3.10;3.10判断L是否等于Height,如果L=Height,则转入步骤3.11,否则令L=L+1,返回步骤3.9;3.11从数组columns中提取索引号为1的元素值,并将其赋值给临时变量starcol,即starcol=columns[1],从数组columns中提取索引号为m-1的元素值,并将其赋值给临时变量endcol,即endcol=columns[m-1];3.12从数组rows中提取索引号为1的元素值,并将其赋值给临时变量starrow,即starrow=rows[1],从数组rows中提取索引号为k-1的元素值,并将其赋值给临时变量endrow,即endrow=rows[k-1];步骤四:提取字符数组,具体包括如下步骤:4.1计算字符数组的行数Height_new=endrow-starrow+1;4.2计算字符数组的列数Width_new=endcol-starcol+1;4.3创建行数为Height_new,列数为Width_new的字符数组dst_roi;4.4令临时变量i=1,临时变量j=1;4.5、将数组binary的第i+starrow-1行第j+starcol-1列的元素赋值给字符数组dst_roi的第i行第j列的元素,即字符数组:dst_roi[i,j]=binary[i+starrow-1,j+starcol-1];4.6、判断j是否等于Width_new,如果是,则转入步骤4.7,如果否,则令j=j+1,转入步骤4.5;4.7、判断i是否等于Height_new,如果是,则输出字符数组dst_roi[i,j]并转入步骤五,如果否则令i=i+1,转入步骤4.5;步骤五、将字符数组缩放为与喷码机高度相匹配的喷印数组,具体包括如下步骤:5.1、令喷印数组的行数pq_Height=num;5.2、将Width_new/(Height_new/num)的值取整后赋值给喷印数组的列数pq_Width;5.3、创建行数为pq_Height,列数为pq_Width的喷印数组dst_zoom;5.4、令临时变量z=1,临时变量w=1;5.5、将z*(Height_new/pq_Height)取整后赋值给临时变量z_new,将w*(Width_new/pq_Width)取整后赋值给临时变量w_new,将字符数组dst_roi的第z_new行第w_new列的元素赋值给喷印数组dst_zoom的第z行w第列的元素,即喷印数组:dst_zoom[z,w]=dst_roi[z_new,w_new];5.6、判断z是否等于pq_Height,若为是,则转入步骤5.7,若为否则令z=z+1,转入本文档来自技高网
...

【技术保护点】
1.一种将任意字体字符转化成喷印点阵的方法,其特征在于,包括以下步骤:/n步骤一,准备喷头和图片/n1.1根据需要喷印的字体大小来确定点阵字符喷码机高度方向喷头个数num;/n1.2获取需要在钢卷表面喷印的字体或字符的图片;/n步骤二,通过python语言对图片进行处理,具体包括如下步骤:/n2.1利用计算机通过cv2.imread()函数读入给定字体字符的图片,将图片宽度记为Width与高度记为Height;确定每个像素点的灰度值;/n2.2创建一个二维数组binary;/n2.3将灰度大于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为0;将灰度小于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为1;此时得到一个行索引为1~Height,列索引为1~Width的二维数组binary;/n步骤三、确定字符所在区域的起始行与起始列以及终止行和终止列,具体包括如下步骤:/n3.1定义长度为Height的一维数组max_rows,搜索二维数组binary每行的最大值,将其最大值存入一维数组max_rows;/n3.2定义长度为Width的一维数组max_columns,搜索二维数组binary每列的最大值,将其最大值存入一维数组max_columns;/n3.3定义长度为Width的一维数组columns;/n3.4令临时变量m=1,临时变量n=1;/n3.5判断数组max_columns中的第n个元素是否为1,若数组max_columns中的第n个元素为1,则将n值存为columns数组的第m个元素,并令m=m+1,n=n+1,再重复步骤3.5,若为否,则转入步骤3.6;/n3.6判断j是否等于Width,如果n=Width,则转入步骤3.7,否则令n=n+1,返回步骤3.5;/n3.7定义长度为Height的一维数组rows;/n3.8令临时变量k=1,临时变量L=1;/n3.9判断数组max_rows中的第L个元素是否为1,如果数组max_rows中的第L个元素为1,则将L值存为rows数组的第k个元素,并令k=k+1,L=L+1,再重复步骤3.9,若为否,则转入步骤3.10;/n3.10判断L是否等于Height,如果L=Height,则转入步骤3.11,否则令L=L+1,返回步骤3.9;/n3.11从数组columns中提取索引号为1的元素值,并将其赋值给临时变量starcol,即starcol=columns[1],从数组columns中提取索引号为m-1的元素值,并将其赋值给临时变量endcol,即endcol=columns[m-1];/n3.12从数组rows中提取索引号为1的元素值,并将其赋值给临时变量starrow,即starrow=rows[1],从数组rows中提取索引号为k-1的元素值,并将其赋值给临时变量endrow,即endrow=rows[k-1];/n步骤四:提取字符数组,具体包括如下步骤:/n4.1计算字符数组的行数Height_new=endrow-starrow+1;/n4.2计算字符数组的列数Width_new=endcol-starcol+1;/n4.3创建行数为Height_new,列数为Width_new的字符数组dst_roi;/n4.4令临时变量i=1,临时变量j=1;/n4.5、将数组binary的第i+starrow-1行第j+starcol-1列的元素赋值给字符数组dst_roi的第i行第j列的元素,即字符数组:/ndst_roi[i,j]=binary[i+starrow-1,j+starcol-1];/n4.6、判断j是否等于Width_new,如果是,则转入步骤4.7,如果否,则令j=j+1,转入步骤4.5;/n4.7、判断i是否等于Height_new,如果是,则输出字符数组dst_roi[i,j]并转入步骤五,如果否则令i=i+1,转入步骤4.5;/n步骤五、将字符数组缩放为与喷码机高度相匹配的喷印数组,具体包括如下步骤:/n5.1、令喷印数组的行数pq_Height=num;/n5.2、将Width_new/(Height_new/num)的值取整后赋值给喷印数组的列数pq_Width;/n5.3、创建行数为pq_Height,列数为pq_Width的喷印数组dst_zoom;/n5.4、令临时变量z=1,临时变量w=1;/n5.5、将z*(Height_new/pq_Height)取整后赋值给临时变量z_new,将w*(Width_new/pq_Width)取整后赋值给临时变量w_new,将字符数组dst_roi的第z_new行第w_new列的元素赋值给喷印数组dst...

【技术特征摘要】
1.一种将任意字体字符转化成喷印点阵的方法,其特征在于,包括以下步骤:
步骤一,准备喷头和图片
1.1根据需要喷印的字体大小来确定点阵字符喷码机高度方向喷头个数num;
1.2获取需要在钢卷表面喷印的字体或字符的图片;
步骤二,通过python语言对图片进行处理,具体包括如下步骤:
2.1利用计算机通过cv2.imread()函数读入给定字体字符的图片,将图片宽度记为Width与高度记为Height;确定每个像素点的灰度值;
2.2创建一个二维数组binary;
2.3将灰度大于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为0;将灰度小于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为1;此时得到一个行索引为1~Height,列索引为1~Width的二维数组binary;
步骤三、确定字符所在区域的起始行与起始列以及终止行和终止列,具体包括如下步骤:
3.1定义长度为Height的一维数组max_rows,搜索二维数组binary每行的最大值,将其最大值存入一维数组max_rows;
3.2定义长度为Width的一维数组max_columns,搜索二维数组binary每列的最大值,将其最大值存入一维数组max_columns;
3.3定义长度为Width的一维数组columns;
3.4令临时变量m=1,临时变量n=1;
3.5判断数组max_columns中的第n个元素是否为1,若数组max_columns中的第n个元素为1,则将n值存为columns数组的第m个元素,并令m=m+1,n=n+1,再重复步骤3.5,若为否,则转入步骤3.6;
3.6判断j是否等于Width,如果n=Width,则转入步骤3.7,否则令n=n+1,返回步骤3.5;
3.7定义长度为Height的一维数组rows;
3.8令临时变量k=1,临时变量L=1;
3.9判断数组max_rows中的第L个元素是否为1,如果数组max_rows中的第L个元素为1,则将L值存为rows数组的第k个元素,并令k=k+1,L=L+1,再重复步骤3.9,若为否,则转入步骤3.10;
3.10判断L是否等于Height,如果L=Height,则转入步骤3.11,否则令L=L+1,返回步骤3.9;
3.11从数组columns中提取索引号为1的元素值,并将其赋值给临时变量starcol,即starcol=columns[1],从数组columns中提取索引号为m-1的元素值,并将其赋值给临时变量endcol,即endcol=colu...

【专利技术属性】
技术研发人员:张康武郭韡刘渭苗李联飞岳国富
申请(专利权)人:中国重型机械研究院股份公司
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1