用python实现灰度图抠图操作的代码是什么
Admin 2022-08-25 群英技术资讯 881 次浏览
今天小编跟大家讲解下有关“用python实现灰度图抠图操作的代码是什么”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。
基础算法是确定图像二值化分割阈值的大津法,将图像分成背景和前景两部分,最大化背景和前景之间的类间方差。
具体理论部分可以搜索大津法了解一下,代码部分只要在调用threshold的函数中,参数选择THRESH_OTSU就可以调用大津法分割
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
全部代码如下,将原图、直方图和分割后的图放在一起比较展示
image = cv2.imread("pictures/dajin.jpg")
#先转化为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
plt.subplot(131), plt.imshow(image, "image")
plt.title("source image"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.hist(image.ravel(), 256)
plt.title("Histogram")
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) #方法选择为THRESH_OTSU
plt.subplot(133), plt.imshow(th1, "gray")
plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([])
plt.show()
抠图结果如下

但是这种算法对噪音和目标大小十分敏感,背景和前景像素接近的时候分割效果并不好

零基础学习python, 听了若干节入门免费课,即兴写了个程序,作为练习,实现抠图。
抠图的手工操作,是在PS软件中,将图片复制新建粘贴,主体保留,周围作为背景擦除,
被擦除区域,透明格式。成功后保存成 png 格式文件备用(png格式允许存储图层,保持透明区域)。手工操作费力费时,操作不当需要返回重新擦除,并且擦除精度随操作者熟练程度各异。擦除一个人物对象的周边,熟练者也需要几分钟。
python 语言,可以方便调用第三方功能包,实现抠图目的,主体对象周边比较平滑,程序执行仅需要几秒钟,大大节约了人力和时间。
抠图需要第三方功能包 removebg,安装后才可以操作。安装功能包需要在Windows 的dos 窗口,win+r 热键调出运行对话框,输入 cmd 命令,打开 dos 窗口。dos窗口输入:
pip install removebg<回车> (等待下载安装结束) os包、time 包为系统自带,无需安装。
RemoveBg函数调用,需要APIKEY 实参(可称密码),这是一个多位字符串。获取需要在 url = www.remove.bg 网站注册,获得免费APIKEY码。尴尬的是,每日仅允许处理50张图片。
1)要求允许处理多张jpg格式图片,显示运行进度, 适当的用户交互, 转成exe发布。
2)关键代码,处理单张图片的代码仅两行:
rmbg = RemoveBg('apiKey码', '错误信息记录文件名') #56行
向网站发出获取API 调用对象的请求,返回对象
rmbg.remove_background_from_img_file('./picture/' + item) #74行
使用 rmbg 对象的方法,抠一张图。
3)检查图片存放位置(文件夹存在否, 不存在则创建文件夹并退出)
4)检查文件夹中有没有文件,没有则显示信息并退出, 有则重新建表剔除非jpg格式文件。
5)检查与处理抠图定义了多个函数,避免程序条理混乱,不易阅读
readkey() -- 读取APIkey 码文件;founddir() -- 检查存放图片文件的文件夹是否存在,可发出提示信息;Cutout() -- 抠图,含检查图片文件是否存在,以及剔除非jpg格式文件,并有提示;6)主程序段,位于最后,明确提示操作准备,交互是否继续,或取消。
7) 打包成 exe 文件(略)
1 引用有关处理包

2 定义一个函数,自附带文件读取 apikye 码值

3. 定义搜索目录的函数,返回真/假。

4 定义抠图处理的主函数

4 主程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python中global关键字主要作用是声明变量的作用域,下面这篇文章主要给大家介绍了关于Python全局变量关键字global的简单使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
这篇文章主要介绍了Python Opencv中基础的知识点,主要包括创建窗口、保存图片、采集视频、鼠标控制的代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章给大家分享的是有关python怎样做一个简单的搜索引擎的内容,这也是很多学习python的朋友比较感兴趣的一个内容,因此分享一个实例给大家做个参考,一起跟随小编看看吧。
路径字符串磁盘将数据写入各个扇区中,使数据分散在各个未使用的块上来储存数据。并用一套文件系统对数据进行管理,微观上,文件系统使用INode结构体来记录这些块区的地址以及数据的先后顺序,实现对这些乱序储存的数据管理。宏观上,为了方便用户的管理,使用路径字符串的方式来“描述”文件的位置,但这只是一种逻辑位置,并不存在此种数据上的层级关系,一个文件字符串在将会映射到一个的INode结构体中,再使用iN
这篇文章主要介绍了教你怎么用Python实现自动生日祝福,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008