利用OpenCV识别图片背景是否透明

本文介绍了一种通过Python和OpenCV快速识别大量图片中背景透明的方法。作者最初尝试识别图片轮廓,但转而选择检查图片的4个角和2个中间点的透明度。如果超过2个点透明,则认为图片背景可能透明。虽然这种方法存在一定的误判可能,但对于处理大量图片来说,是一种简单实用的解决方案。同时,文章也提到了OpenCV读取大体积PNG图片时的资源消耗问题以及JPG格式可能导致的识别不准确性。
摘要由CSDN通过智能技术生成

因为公司的需求,有几百万张图片需要识别,筛选出背景是透明的图片,我上网找了一圈也没看到成熟的方案,于是自己想了一个比较简陋但是还算是挺好用的方案.

大概的图片就是这些种类吧,图一图三是我想要筛选出来的,图二这种就是我要过滤掉的.

最初的想法是先识别出来图片的轮廓,然后把轮廓外的像素识别一遍,看看是不是透明的.

但是我发现这个想法很好,但是好像比较适合大神级别的人物来处理.

于是就耍了小聪明,我只要识别4个角,只要有一个角是透明的,那他的背景肯定就不是非透明的了,哈哈哈感觉自己好机智.

然后就发现了图三.....居然四个角全是非透明的委屈     

但是没关系,我再多识别几个点 把两个长的中间点也识别一下,这样6个点,超过2个点是透明的,就暂时认为他是透明的吧.

下面是获取6个角的代码

 # 读取图片,显示每个像素的rgba值,cv2.IMREAD_UNCHANGED代表显示全部属性,默认是不显示透明度a的值
    img = cv2.imread("jingyu.png", cv2.IMREAD_UNCHANGED)
    # 获取图片的大小(长,宽,属性(4代表显示rgba
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值