资源简介
去除图像中的白色背景,得到透明背景的保留主体的png图像的python代码;
代码片段和文件信息
import cv2
import numpy as np
import os sys
def CropImage(img x y):
minx = x
maxx = 0
miny = y
maxy = 0
for i in range(x):
for j in range(y):
if img[ij3] != 0:
minx = min(minx i)
maxx = max(maxx i)
miny = min(miny j)
maxy = max(maxy j)
ret = img[minx:maxx+1 miny:maxy+1]
return ret maxx-minx+1 maxy-miny+1
def remove_white_bg_as_contours(img_list output_dir):
#print(img_list)
for img_path in img_list:
#print(img_path)
img = cv2.imread(img_path)
if img is None:
print(img_path)
continue
## (1) Convert to gray and threshold
gray = cv2.cvtColor(img cv2.COLOR_BGR2GRAY)
th threshed = cv2.threshold(gray 230 255 cv2.THRESH_BINARY_INV)
## (2) Morph-op to remove noise
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE (1111))
morphed = cv2.morphologyEx(threshed cv2.MORPH_CLOSE kernel)
## (3) Find the max-area contour
cnts = cv2.findContours(threshed cv2.RETR_EXTERNAL cv2.CHAIN_APPROX_SIMPLE)[-2]
whc=img.shape
img=np.transpose(img[201])
z = np.ones([1wh]).astype(img.dtype)*255
img = np.vstack((imgz))
img = np.transpose(img[120])
stencil = np.zeros([wh4]).astype(img.dtype)
color = [255 255 255255]
cv2.fillPoly(stencil cnts color)
result = cv2.bitwise_and(img stencil)
output_path = os.path.join(output_dir os.path.split(img_path)[-1]+‘.png‘)
- 上一篇:python 调用sftp断点续传文件
- 下一篇:计算机视觉应用开发流程
评论
共有 条评论