python和opencv实现抠图

yipeiwu_com5年前Python基础

本文实例为大家分享了python实现抠图的具体代码,供大家参考,具体内容如下

其中使用了opencv中的grabcut方法

直接上代码

# encoding:utf-8
# 图像提取
# create by 
 
import numpy as np
import cv2
from matplotlib import pyplot as plt
 
img = cv2.imread('1.jpg')
mask = np.zeros(img.shape[:2], np.uint8)
 
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
 
rect = (20, 20, 413, 591)
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 10, cv2.GC_INIT_WITH_RECT)
 
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
img = img * mask2[:, :, np.newaxis]
img += 255 * (1 - cv2.cvtColor(mask2, cv2.COLOR_GRAY2BGR))
# plt.imshow(img)
# plt.show()
img = np.array(img)
mean = np.mean(img)
img = img - mean
img = img * 0.9 + mean * 0.9
img /= 255
plt.imshow(img)
plt.show()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python比较2个时间大小的实现方法

Python中有time和datetime,不过二者都直接取出日期和时间。 当需要比较2个时间的先后时,这两个类的函数都显得有些过于复杂。因为它们都带上了日期。 如果仅想比较时间,取出当...

Python编程生成随机用户名及密码的方法示例

本文实例讲述了Python编程生成随机用户名及密码的方法。分享给大家供大家参考,具体如下: 方案一: import random global userName,userPasswo...

Python实现分段线性插值

Python实现分段线性插值

本文实例为大家分享了Python实现分段线性插值的具体代码,供大家参考,具体内容如下 函数: 算法 这个算法不算难。甚至可以说是非常简陋。但是在代码实现上却比之前的稍微麻烦点。主要体现...

python让图片按照exif信息里的创建时间进行排序的方法

本文实例讲述了python让图片按照exif信息里的创建时间进行排序的方法。分享给大家供大家参考。具体分析如下: 我们经常会从不同的设备里取出照片,比如照相机,手机,iphone等等,操...

为什么选择python编程语言入门黑客攻防 给你几个理由!

为什么选择python编程语言入门黑客攻防 给你几个理由!

如果选择一门编程语言来入门黑客攻防的话,你觉得哪个最合适?不如来试试Python,或许会是一次很好的尝试哦~ Python 语言的优点 目前,Python 在各领域都有着广泛的应用。由此...