本文实例为大家分享了python实现抠图的具体代码,供大家参考,具体内容如下
其中使用了opencv中的grabcut方法
直接上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# 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()
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/sinat_32547403/article/details/53611336