CN110941944A - 一种将任意字体字符转化成喷印点阵的方法 - Google Patents
一种将任意字体字符转化成喷印点阵的方法 Download PDFInfo
- Publication number
- CN110941944A CN110941944A CN201910939871.2A CN201910939871A CN110941944A CN 110941944 A CN110941944 A CN 110941944A CN 201910939871 A CN201910939871 A CN 201910939871A CN 110941944 A CN110941944 A CN 110941944A
- Authority
- CN
- China
- Prior art keywords
- array
- height
- character
- width
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B41—PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
- B41M—PRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
- B41M5/00—Duplicating or marking methods; Sheet materials for use therein
- B41M5/0041—Digital printing on surfaces other than ordinary paper
- B41M5/0047—Digital printing on surfaces other than ordinary paper by ink-jet printing
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B41—PRINTING; LINING MACHINES; TYPEWRITERS; STAMPS
- B41M—PRINTING, DUPLICATING, MARKING, OR COPYING PROCESSES; COLOUR PRINTING
- B41M5/00—Duplicating or marking methods; Sheet materials for use therein
- B41M5/0041—Digital printing on surfaces other than ordinary paper
- B41M5/0058—Digital printing on surfaces other than ordinary paper on metals and oxidised metal surfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Record Information Processing For Printing (AREA)
- Ink Jet (AREA)
Abstract
一种将任意字体字符转化成喷印点阵的方法,获得带有给定字体字符的JPG格式或者PNG格式的图片后,先读取图片的宽度和高度,再获取图片的灰度信息,进行二值化处理,将二值化处理的结果保存在二维数组binary中,再提取二维数组binary中有字体字符的部分保存在字符数组dst_roi中,对字符数组进行缩放得到大小合适的喷印数组dst_zoom,最终将喷印数组dst_zoom输入到喷印设备的上位机中,控制喷印装置在产品表面进行喷印工作;本方法能够实现对任意字体字符的喷印工作,具有适应性强、方便和高效的特点。
Description
技术领域
本发明属于钢铁轧制与后处理技术领域,特别涉及一种将任意字体字符转化成喷印点阵的方法。
背景技术
带钢在国民经济中具有举足轻重的作用,广泛应用于汽车、家电、包装等领域。带钢一般通过热轧与冷轧进行生产,其产品形态为空心圆柱钢卷。钢卷在轧制生产过程中以及最终交货时,需要在钢卷的表面与侧面进行产品信息标注,这一标注工作在传统生产方式中由人工完成,但是存在效率低、风险性大等问题,因此,目前很多钢铁生产企业开始采用机器人完成这一工作。
机器人通过喷码机将涂料从喷头直接喷印在带钢表面与侧面。常见的喷码机有矢量字符喷码机和点阵字符喷码机,矢量字符喷码机一般为单喷头结构,喷头安装在机器人手臂末端,通过程序控制喷头按照字符轨迹移动并喷写;点阵式字符喷码机可喷写点阵结构的字符,喷写速度快、原理简单。
目前,学者们已经对点阵式喷印进行了相关研究。例如:“钢铁产品标识设备的现状及技术分析”参见《冶金设备》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,转入步骤5.5;
5.7、判断w是否等于pq_Width,若为是,则输出喷印数组 dst_zoom,即输出给定字体或给定字符的喷印点阵,否则令w=w+1,转入步骤5.5。
所述图片为JPG格式或者PNG格式。
本发明与现有技术相比具有如下优点:通过图片处理技术,可以建立任意字体或任意字符的喷印点阵,简单方便的创建各种字体的喷印字库,并可通过给定不同喷头个数实现喷印字符大小的调节。
附图说明
图1为本发明的程序流程图。
图2为Times New Roman字体下字符“2”的原始图片。
图3为Times New Roman字体下字符“2”的灰度图片。
图4为Times New Roman字体下字符“2”字符区域识别结果的图片。
图5为本发明实施例1中Times New Roman字体下字符“2”的喷印点阵图。
具体实施方式
下面结合附图对本发明做出进一步描述。
参见图1,一种将任意字体字符转化成喷印点阵的方法,包括以下步骤:
步骤一:准备喷头和图片
1.1根据需要喷印的字体大小来设定字符喷码机高度方向喷头个数num=20;
1.2获取Times New Roman字体下字符“2”的PNG格式图片;
步骤二、通过python语言对图片进行处理,具体包括如下步骤:
2.1、利用计算机通过cv2.imread()函数读入给定字体字符的图片,获取图片宽度Width=650,高度Height=704;通过cv2.threshold()函数对图片进行二值化处理;
2.2创建一个二维数组binary;
2.3将灰度大于127的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为0;将灰度小于127 的像素点按照其在图片上对应的行列位置记录在二维数组binary中,并将该位置上的数值记为1;此时得到一个行索引为1~Height,列索引为1~Width的二维数组binary;
步骤三、确定字符所在区域的起始行与起始列以及终止行和终止列,具体包括如下步骤:
3.1定义长度为Height的一维数组max_rows,搜索二维数组 binary每行的最大值,将其最大值存入一维数组max_rows,结果如表1;
3.2定义长度为Width的一维数组max_columns,搜索二维数组 binary每列的最大值,将其最大值存入一维数组max_column,结果如表2;
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]=92,从数组columns中提取索引号为m-1的元素值,并将其赋值给临时变量endcol,即endcol=columns[m-1]=535;
3.12从数组rows中提取索引号为1的元素值,并将其赋值给临时变量starrow,即starrow=rows[1]=4,从数组rows中提取索引号为 k-1的元素值,并将其赋值给临时变量endrow,即 endrow=rows[k-1]=690。
步骤四:提取字符数组,具体包括如下步骤:
4.1、计算字符数组的行数Height_new=endrow-starrow+1=687;
4.2、计算字符数组的列数Width_new=endcol-starcol+1=444;
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=20;
5.2、将Width_new/(Height_new/num)的值取整后赋值给喷印数组的列数pq_Width=12;
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,转入步骤5.5;
5.7、判断w是否等于pq_Width,若为是,则输出喷印数组 dst_zoom,即输出给定字体给定字符的喷印点阵,否则令w=w+1,转入步骤5.5。
参见图2,所述给定字体字符为Times New Roman字体的字符“2”的图片。
参见图3,所述Times New Roman字体的字符“2”经步骤2.1 灰度处理的结果。
参见图4,所述Times New Roman字体的字符“2”经步骤三字符区域识别的结果。
参见图5,所述Times New Roman字体的字符“2”变换到喷印点阵本发明实施例1中Times New Roman字体下字符“2”的喷印数组 dst_zoom的图片。
本发明的工作原理是:获得带有给定字体字符的JPG格式或者 PNG格式的图片后,先读取图片的宽度和高度,再获取图片的灰度信息,进行二值化处理,将二值化处理的结果保存在二维数组binary 中,再提取二维数组binary中有字体字符的部分保存在字符数组dst_roi中,对字符数组进行缩放得到大小合适的喷印数组dst_zoom,最终将喷印数组dst_zoom输入到喷印设备的上位机中,控制喷印装置在产品表面进行喷印工作。
一维数组max_rows输出结果如下:
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 |
表1
一维数组max_columns输出结果如下
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
表2
喷印数组dst_zoom输出结果如下:
0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
表3。
Claims (2)
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=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,转入步骤四5.5;
5.7、判断w是否等于pq_Width,若为是,则输出喷印数组dst_zoom,即输出给定字体或给定字符的喷印点阵,否则令w=w+1,转入步骤5.5。
2.根据权利要求1所述的一种将任意字体字符转化成喷印点阵的方法,其特征在于,所述图片为JPG格式或者PNG格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910939871.2A CN110941944B (zh) | 2019-09-30 | 2019-09-30 | 一种将任意字体字符转化成喷印点阵的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910939871.2A CN110941944B (zh) | 2019-09-30 | 2019-09-30 | 一种将任意字体字符转化成喷印点阵的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110941944A true CN110941944A (zh) | 2020-03-31 |
CN110941944B CN110941944B (zh) | 2023-04-25 |
Family
ID=69905864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910939871.2A Active CN110941944B (zh) | 2019-09-30 | 2019-09-30 | 一种将任意字体字符转化成喷印点阵的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110941944B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0603820A2 (en) * | 1992-12-22 | 1994-06-29 | Canon Kabushiki Kaisha | Character generating method and apparatus |
CN101419715A (zh) * | 2008-11-28 | 2009-04-29 | 深圳创维数字技术股份有限公司 | 生成文字或图形点阵的方法与装置 |
WO2017206248A1 (zh) * | 2016-05-31 | 2017-12-07 | 宇龙计算机通信科技(深圳)有限公司 | 一种信息输入方法和装置 |
CN109389123A (zh) * | 2018-08-14 | 2019-02-26 | 广东省智能制造研究所 | 一种基于先验知识的自适应喷码字符分割方法及其系统 |
-
2019
- 2019-09-30 CN CN201910939871.2A patent/CN110941944B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0603820A2 (en) * | 1992-12-22 | 1994-06-29 | Canon Kabushiki Kaisha | Character generating method and apparatus |
CN101419715A (zh) * | 2008-11-28 | 2009-04-29 | 深圳创维数字技术股份有限公司 | 生成文字或图形点阵的方法与装置 |
WO2017206248A1 (zh) * | 2016-05-31 | 2017-12-07 | 宇龙计算机通信科技(深圳)有限公司 | 一种信息输入方法和装置 |
CN109389123A (zh) * | 2018-08-14 | 2019-02-26 | 广东省智能制造研究所 | 一种基于先验知识的自适应喷码字符分割方法及其系统 |
Non-Patent Citations (1)
Title |
---|
孟爱华;周建军;潘玉良;: "大字符喷码机的字符点阵分析与应用" * |
Also Published As
Publication number | Publication date |
---|---|
CN110941944B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110561929B (zh) | 扫描式喷墨打印控制方法、装置、设备及存储介质 | |
CN111376626B (zh) | 打印图像的方法、装置、设备和存储介质 | |
TW201902724A (zh) | 一種噴墨列印方法 | |
EP2830883A1 (de) | Verfahren und eine anordnung zum bedrucken einer dreidimensionalen oberfläche | |
CN1270890A (zh) | 喷墨打印机 | |
CN104972743B (zh) | 喷墨印刷方法和装置 | |
US5119109A (en) | Method and apparatus for marking the inside surface of pipe | |
CN110941944A (zh) | 一种将任意字体字符转化成喷印点阵的方法 | |
CN103677686B (zh) | 信息处理装置、信息处理装置的控制方法 | |
CN100421940C (zh) | 打印系统和打印方法 | |
EP1870246B1 (de) | Verfahren zum Bedrucken eines Bedruckstoffs | |
EP1228885A3 (en) | Ink jet printer and image printing system as well as printing methods therefor | |
DE69835636T2 (de) | Druckersteuerung und Drucker, der anpassbare Objektstreifenverarbeitung verwendet | |
CN102627041B (zh) | 打印数据生成装置、打印数据生成方法 | |
CN113442581B (zh) | 一种打印方法、装置、设备和存储介质 | |
EP0678826B1 (en) | Serial printer | |
CN107234876A (zh) | 液滴喷出控制装置、液滴喷出控制方法以及液滴喷出装置 | |
CN101927611A (zh) | 点记录装置和方法以及记载有计算机程序的记录介质 | |
CN116080288B (zh) | 一种喷墨印刷装置及喷墨印刷方法 | |
US11481589B2 (en) | Onepass system inkjet printing control method, device and storage medium | |
CN113682061B (zh) | 一种打印控制方法、装置、设备和存储介质 | |
JP2002036517A (ja) | インクジェットプリンタ | |
DE69907470T2 (de) | Tintenstrahlschreibverfahren und-vorrichtung | |
CN114801487B (zh) | 一种消除打印图像锯齿的方法及系统 | |
JP2010143122A (ja) | 記録装置及び記録方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |