前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python图像处理-一行代码实现灰度图抠图

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

原创
作者头像
程序员皮克
发布2022-01-05 14:32:58
6060
发布2022-01-05 14:32:58
举报
文章被收录于专栏:Python2Python2

抠图是ps的最基本技能,利用python可以实现用一行代码实现灰度图抠图。

基础算法是确定图像二值化分割阈值的大津法,将图像分成背景和前景两部分,最大化背景和前景之间的类间方差。具体理论部分可以搜索大津法了解一下,代码部分只要在调用threshold的函数中,参数选择THRESH_OTSU就可以调用大津法分割

代码语言:javascript
复制
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)

全部代码如下,将原图、直方图和分割后的图放在一起比较展示

代码语言:javascript
复制
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()

抠图结果如下

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档