python图像处理-一行代码实现灰度图抠图

本文介绍了使用Python的OpenCV库,通过大津法进行图像二值化分割来实现灰度图的快速抠图。虽然这种方法简单,但对噪声和目标大小敏感,当背景与前景像素接近时,分割效果可能不佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抠图是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()

抠图结果如下

 

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


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值