信电1&
China Computer&Communication 软件卄域;与龛用
2021年第2期
基于OpenCV的电子相册制作APP的设计与实现
郑苑丹
(广东海洋大学数学与计算机学院,广东湛江524000)
摘要:本文基于OpenCV软件库和Android开发技术,借助OpenCV提供的边缘检测、轮廓识别、图像处理等功能,实现一个融合相册背景模板和用户照片的电子相册APP.该APP通过识别出相册背景模板的相框轮廓,便能和用户加载的照片进行融合,进而得到用户可以自行调整的照片相册。
关键词:OpenCV;边缘检测;轮廓识别;电子相册
中图分类号:TP391.41;TP183文献标识码:A文章编号:4003-9767(2021)02-075-03
Design and Implementation of Electronic Album APP Based on OpenCV
ZHENG Yuandan
(Department of Mathematics and Computer,Guangdong Ocean University,Zhanjiang Guangdong524000,China)
Abstract:This article is based on OpenCV software library and Android development technology,with the help of edge detection,contour recognition,image processing and other functions provided by OpenCV,to realize an electronic photo album APP that integrates photo album background templates and user photos.The APP recognizes the outline of the photo frame of the album background template,and can be integrated with the photos loaded by the user to obtain a photo album that the user can adjust by themselves.
Keywords:OpenCV;edge detection;contour recognition;electronic album
0引言
随着时代的不断进步,纸质相册已经不能满足人们随时随地拍照存储相册的需求,电子相册的出现极大地满足了人们的需求,其形式也变得多种多样m。目前,大多的相册制作软件都是让用户选择若干张照片,然后加上动态效果和背景音乐,制作成动态的电子相册。这种电子相册更多是注重整体效果,对于每张相册图片,用户可以调整的幅度不大。
电子相册制作APP基于OpenCV软件库,将相册模板看成一个带有背景图片的相框,用户可以选择自己喜欢的相册模板和照片,让照片在相册模板的相框中显示,并可以调整照片的大小和位置。
OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,可以在Linux、Windows、Android和Mac OS操作系统上运行。OpenCV用C++语言编写,拥有C++、Python、Java和MATLAB接口,实现了图像处理和计算机视觉方面的很多通用算法[2]o电子相册制作APP是通过调用OpenCV 软件库的Java接口,借助OpenCV的图像处理函数实现的。1系统总体功能
电子相册制作APP通过OpenCV提供的图像处理函数识别出相册模板中的相框轮廓,将用户选择的照片融合到相册模板中,并提供照片放大、移动等功能,用户可以根据自己的需要调整照片,最后得到一个融合的照片相册。系统功能模块如图]所示。
图1系统功能模块图
基金项目:教育部2018年第二批产学合作协同育人项目(项目编号:201802153156)。
作者简介:郑苑丹(1981—),女,广东湛江人,硕士研究生,讲师。研究方向:移动编程、网络安全。
China Computer&Communication2021年第2期1.1加载相册模板
第一,可以从手机的内存或外存中加载图片作为相册背
景模板,也可以从网络上下载图片保存在手机上,作为相册
背景模板备选。第二,在相册背景模板被处理为一个带有背
景图片的相框时,要求选用的相册背景模板必须有可以放置
照片的相框轮廓,否则APP无法识别。
1.2加载用户照片
用户可以从手机相簿中选取照片,并加载到APP中。选
取的照片将显示在相册背景模板放置照片的相框轮廓中。
1.3照片缩放处理
在默认情况下,选取的照片是整张图片显示在相册模板的相框轮廓中。照片显示在相框轮廓后,可以对照片进行放大处理和缩小处理。
1.4照片移动处理
在默认情况下,选取的照片是以照片的中心为基准显示在相框轮廓中,若想调整显示的部分,可以在照片显示在相框轮廓后对照片进行移动处理。最后,通过移动照片将想显示的部分放置在相框轮廓中。
2系统关键技术
电子相册制作APP的基本处理流程如图2所示。通过OpenCV软件库的图像处理功能,获得用户加载进来的相册背景模板的相框轮廓,并通过OpenCV的图片融合等功能,将用户加载进来的照片和相册模板融合,进而得到照片相册。
图2系统基本处理流程
2.1轮廓识别
对于相册背景模板,需要识别出其相框轮廓,供照片显示。OpenCV提供了边缘检测和轮廓识别功能。边缘为图像中灰度发生急剧变化的区域边界,边缘点能够给出目标轮廓的位置。边缘检测的本质是利用各种算法得到图像中对象与背景之间的相交线[3]o Canny边缘检测算法是由John Canny 在20世纪80年提出的,是一种基于Sobel梯度的边缘检测算法。该算法包含3个步骤:第一,借助高斯滤波器对原始图像进行平滑和去噪;第二,使用Sobel算子计算梯度;第三,非最大抑制和阈值处理,消除杂散边缘检
测的效果,使边缘更加突出和准确⑷。根据OpenCV开发库提供的相关函数,本系统的轮廓识别流程如图3所示。
图3轮廓识别流程图
(1)图像灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法,边缘检测主要对图像的灰度变化进行度量、检测和定位国。因此,Canny边缘检测算法处理的图像为灰度图,由于相册背景模板通常是彩图像,所以先要将相册背景模板转换成灰度图。
(2)对转换后的灰度图进行Canny边缘检测,并返回图片的边缘检测结果,如图4所示。从检测结果可以看到,图片中的边缘均被用点连成线条标识出来。
图4a原灰度图
图4b边缘检测后的图片
图4边绦检测结果图片
(3)根据边缘检测结果可以进行轮廓识别。OpenCV提供findContours函数进行轮廓识别,并将识别出来的所有轮廓存在轮廓数组中。
(4)OpenCV将一条连续线条围起来的区域识别为一个轮廓,通常一幅图片会被识别出多个轮廓结果,需要对识别出的轮廓进行筛选,选择一个合适的轮廓用于显示照片。从图4可以看出,只有中间那部分区域可以作为显示照片的轮廓,其余的小轮廓均不适合显示图片。因此,需要对轮廓数
信fit与电岡
China Computer&Communication 2021年第2期
组里的轮廓按面积进行排序,然后选取面积最大的轮廓用于显示照片。
2.2图像融合
在识别出相册背景模板的相框轮廓后,将轮廓和用户加载进来的照片融合,使得照片显示在相框轮廓区域。OpenCV提供了图像的基本运算,比如图像的叠加、按位操作等,可以实现图像融合。图像叠加是当两个输入的图像数组具有相同的大小和通道数时,得到两个数组的和。图像的按位运算包括AND、OR、NOT、XOR运算,用于计算每个元素的按位运算问。在处理过程中,首先需要确定将图片的哪部分设置为ROI(感兴趣区域),然后在ROI中对图片进行基本运算,最后用运算后的ROI部分替换原图片的ROI,实现图像融合。
电子相册制作APP将相册背景模板的相框轮廓部分设置为ROI,如图5中的(1)所示。将识别出来的轮廓部分作为掩膜,如图5中的(2)所示,相册背景模板的ROI与掩膜进行图像的按位AND运算,得到相册背景模板的轮廓外部分,如图5中的(3)所示。将照片以中心为基准截取与ROI 同样大小的部分作为照片的ROI,如图5中的(4)所示,对掩膜进行图像的按位NOT运算,得到掩膜的反掩膜,如图5中的(5)所示。照片的ROI与反掩膜进行图像的按位AND 运算,得到照片的轮廓部分,如图5中的(6)所示。最后将相册背景模板的轮廓外部分和照片的轮廓部分进行图像叠加运算,得到融合的图像,如图5中的(7)所示。
(1)(2)(3)
(4)(5)(6)
图5图像ROIE域触合
2.3照片缩放和移动
为了增加用户对照片的调整幅度,在图像融合过程中用户可以对照片进行缩放处理和移动处理。如果对照片不进行缩放处理,则相册背景模板的轮廓和原照片进行融合;如果设置照片的缩放比率,则将照片按比率缩放后,以照片中心为基准截取与ROI同样大小的部分,与相册背景模板的轮廓融合。为了获得比较好的融合效果,照片缩放比率最大为照片的3倍,最小为整个照片显示在轮廓区域。
对照片的移动处理也需要和图片融合一起实现。如果对照片不进行移动处理,则相册背景模板的轮廓和原照片进行融合,如果设置X轴和Y轴的移动距离,则将照片按距离移动,再将移动后的照片和相册背景轮廓融合。对于照片移动,为了得到融合后的相册图片,需要计算移动后轮廓ROI覆盖的照片部分。
3实现效果
电子相册制作APP默认加载一张相册背景模板,用户可以根据自己需要加载相册背景模板,并在屏幕居中显示。在用户加载相册背景模板时,系统在后台自动对相册背景模板进行轮廓识别,识别出相册背景模板的轮廓以备后续使用。用户可以加载自己喜欢的照片。用户加载照片后,默认是原图显示在相册背景模板的轮廓位置。用户可以通过滑动屏幕对照片进行缩放和移动,缩放或移动后的照片按照缩放的比率和移动的距离显示在相册背景模板的轮廓位置。
4结语
电子相册制作APP主要基于OpenCV软件库,利用OpenCV提供的边缘检测、轮廓识别、图像处理等功能,实现了识别相册背景模板的轮廓,将照片和相册背景模板融合,得到照片相册。在本设计的轮廓识别过程中,选择最大面积的轮廓用于显示,有些相册背景模板可能有多个用于显示的相框轮廓,只选择最大面积的轮廓并不能适应所有的相册背景模板。接下来的研究将进一步优化轮廓识别算法,使得可以识别多个用于显示的相框轮廓。
参考文献
[1]王萌.基于云的HTML5+JQ跨平台交互式电子相册研
究[D],西安:西安理工大学,201&
[2]百度百科.opencv[EB/OL].(2018-07-04)[2021-01-20].https:〃
baike.baidu/item/o pencv/10320623?fr=aladdin.
怎么用java编写app软件⑶度国旭.OPENCV轮廓识别研究与实践[J].装备制造技
术,2020(1):101-103,131.
[4]Wang S,Wu S,Wang X5et al.A Canny operator road edge
detection method based on color features[Z].2O2O.
[5]OpenCV.Operations on arrays[EB/OL].(2019-09-01)[2020-
01-20].docs.opencv.Org/3.3.0/d2/de8/group_core_ array.html.
⑹向涛,杨乾辉,邓云,等.结合canny边缘检测算法与k・
means算法的图像文字识别[J].内江科技,2020,41(10):39-41,61.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论