基于Python环境下的图片分层软件设计

2020-02-14 06:03朱荣刚翟震王晨曦高江岩
科技创新与应用 2020年2期
关键词:雕刻软件

朱荣刚 翟震 王晨曦 高江岩

摘  要:文章首先介绍了图片分层的应用领域,接着阐述了利用Python语言对图片进行分层的具体设计过程,包括编程语言的选择、二值化的设计思路,即先对图像进行灰度化,再进行阀值化处理,对图像特征按照灰度级进行提取,进而实现分层的操作及分层后的文件处理,最后给出了部分程序和运行结果。

关键词:Python;图片分层;软件;雕刻

中图分类号:TP312 文献标志码:A         文章编号:2095-2945(2020)02-0035-03

Abstract: This paper first introduces the application field of picture layering, and then expounds the specific design process of picture layering by using Python language, including the selection of programming language and the design idea of binarization, that is, graying the image first. Then it carries on the threshold processing, extracts the image features according to the grayscale, and then realizes the layered operation and file processing after layering. Finally, some programs and running results are given.

Keywords: Python; image layering; software; engraving

前言

隨着生活水平的提高,人们对手工艺品的需求日益增多,其中以木雕、烙画等居多。传统的生产模式是纯手工制作,不仅耗时耗力,而且次品率很高。目前,各类激光雕刻设备日趋增多,技术较为成熟,但基本上是雕刻平面图形。对于富有质感的雕刻画,需要对图片进行分层处理,确定每层的雕刻参数。如果利用PS等软件进行处理,过程复杂,速度慢,精度也差,因此需要编写专门的软件,该软件可以实现对JPG、PNG图片的快速分层。

1 方案设计

1.1 编程语言选择

Python是一种面向对象型脚本语言,Python具有语法简洁而高效、一次编译处处能运行、拥有包罗几乎所有常见功能的库、适合快速开发等特点,已经成为最流行的脚本语言之一[1]。

因为Python语言语法简洁、清晰,具有丰富强大的库[1],所以使用Python语言开发该图像分层软件最合适。通过Python语言可以设计出便于操作、实用性强的图片分层软件,该软件在后台对分层模式的参数设定,可以实现对图片的快速分层。软件以雕刻立体感图片为主要目的,编写出以Python脚本语言为依托的图片分层软件,该图片分层软件可以通过对模式的选择将输入的图片进行分层处理,之后将分层后的图片传送给雕刻机,雕刻机在木板等具有一定厚度的材料上雕刻出具有层次感的图画,如景区图片和人物肖像等,最终制作出高档的礼品或纪念品。

1.2 设计思路

软件采用二值化技术对图像进行分层处理。首先对图像进行灰度化,再进行阀值化处理,对图像特征按照灰度级进行提取,阀值化可以根据灰度图片本身设置阀值,也可以根据graythresh函数自动设置阀值[2]。为了减少工作人员的工作量、提高图片分层的效率、使软件具有较强的实用性、满足实际工作中对分层图片的特殊要求,可以根据图片的实际分层效果选择合适的分层模式,而且能根据客户要求随时对参数进行修改。分层处理后得到的分层图片格式、大小一致,可以在软件主界面观察分层图片并和原图进行对比,满足客户特定的打印需求[3]。该软件对于工艺品制造业、旅游景点的纪念品加工行业具有重大意义,将会带来巨大的经济效益。

系统主界面包含两大模块。第一个模块是图片处理程序,该模块可以将输入进来的图片进行二值化、阀值化处理,随后将分层后的图像自动保存到指定文件夹,之后可以将这些图片输送给雕刻机,指导雕刻机雕刻出具有立体感的工艺品[4]。第二个模块是图片预览程序,处理后的图片将会被保存到同一个指定文件夹下[5],该模块就是将指定文件夹内的图片导出显示在系统主界面的图片预览区域,并且按照图片生成时间排序,可以上下翻动预览图片[6]。

该系统主要适合对肖像图以及风景图片进行处理,打印出来的图片可以作为一种高档的礼物或者旅游纪念品,具有很高的经济前景。

2 软件设计

2.1 功能需求

要求输入图片文件的格式为:jpg、bmp、png,最大1080*1920(像素),经过分层后输出同样格式的文件3-7个(视精度情况选择)。同时要求对于输入的图片在后台的处理时间不超过2秒。

2.2 主界面设计

如图1所示,软件提供了三种分层模式可供选择。首先调入原始图片,点击相应的分层模式按钮后,就可以选择要处理的图片,选中的图片将会被扩大/缩小到指定大小,在原图位置处显示,方便与处理后的图片进行对比[7]。

软件主界面的右侧是图片预览区,图片预览程序将会把分层后的图片保存到默认的文件夹,文件夹里的图片按照生成时间先后进行排序,在主界面的图片预览区域显示,每次只显示一张图片。图片翻页时需要点击图片预览区域右侧的“上一张”、“下一张”按钮,当图片翻到最后一页时继续翻页将会有系统提示[8]。

2.3 程序设计

本软件使用了两个库进行设计:Tkinter库主要支持了该软件编写过程中所涉及到的核心窗口部件;cv2库主要引用于该软件在图片处理程序部分[9]。

因限于篇幅仅列出阀值程序。

def q0():#全局阈值

def threshold_demo(image):

gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY) #把输入图像灰度化

#直接阈值化是对输入的单通道矩阵逐像素进行阈值分割。

ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_TRIANGLE)

print(“threshold value %s”%ret)

cv.namedWindow(“binary0”, cv.WINDOW_NORMAL)

cv.imwrite('D:\w00.png', binary)

cv.imshow(“D:\w00.png”, binary)

cv.destroyAllWindows() #局部阈值

def local_threshold(image):

gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY)#把输入图像灰度化

#自适应阈值化能够根据图像不同区域亮度分布,改变阈值

binary=cv.adaptiveThreshold(gray,255,cv.ADAPTIVE_T

HRESH_GAUSSIAN_C,cv.THRESH_BINARY,25,10)

cv.namedWindow("binary1",cv.WINDOW_NORMAL)

cv.imwrite('D:\w01.png',binary)

cv.imshow("D:\w01.png",binary)

cv.destroyAllWindows()

def custom_threshold(image):#用戶自己计算阈值

gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY)#把输入图像灰度化

h,w=gray.shape[:2]

m=np.reshape(gray,[1,w*h])

mean=m.sum()/(w*h)

print("mean:",mean)

ret,binary=cv.threshold(gray,mean,255,cv.THRESH_B

INARY)

cv.namedWindow("binary2",cv.WINDOW_NORMAL)

cv.imwrite('D:\w02.png',binary)

cv.imshow("D:\w02.png",binary)

cv.destroyAllWindows()

src=cv.imread(filename)

cv.namedWindow('input_image',cv.WINDOW_NORMAL)

#设置为WINDOW_NORMAL可以任意缩放

cv.imshow('input_image',src)

threshold_demo(src)

local_threshold(src)

custom_threshold(src)

cv.waitKey(0)

cv.destroyAllWindows()

2.4 运行结果

该软件提供了三种分层模式,分别是粗略模式、普通模式和精细模式。图2列出了粗略模式的运行结果,该模式将所选图片进行3层细分,处理后将得到尺寸相同的三个图片文件[3]。

3 结束语

该软件实现了预期功能,能够一键对输入的图片进行分层处理,并且提供了三种分层模式供用户选择,实用性强,满足了用户的实际需求。不足之处在于需要安装Python系统及第三方库,图片处理的精度仍有提高的余地。

参考文献:

[1]王常衡,李嘉伟,罗钦,等.浅析Python语言及其应用前景[J].计算机产品与流通,2019(04):146.

[2](美)Watts S. Humphrey.软件工程规范[M].清华大学出版社,2004.

[3]李俊.python趣味图像处理[J].电子制作,2013(17):71.

[4]杨佩璐,宋强.Python宝典[M].电子工业出版社,2014.

[5]吕云翔,赵天云,张元.Python大学教程[M].电子工业出版社,2017.

[6]江开耀,张俊兰,李晔.软件工程[M].西安:电子科技大学出版社,2003.

[7]陈之尧.基于OpenCV-Python的图像分割技术的设计与应用研究[J].中国新通信,2018,20(19):89.

[8]戴维I.施奈德,车万翔.Python程序设计[M].机械工业出版社,2016.

[9]汤韬.Python库简介[J].程序员,2006(6):62-63.

猜你喜欢
雕刻软件
有趣的识花软件
雕刻树叶
雕刻时光
即时通讯软件WhatsApp
雕刻时光
丰富多彩的Android软件
如何在智能手机中安装软件
汉代雕刻