最近需要对图片进行批量预处理,写了个Python脚本
import cv2
import numpy as np
import os
import sys
def scanimgfile(path):#扫描图片文件并返回图片名的列表
filelist=[]
for file in os.listdir(path):
if file.endswith(".png"):
filelist.append(file)
return filelist
def processimg(imgname)://opencv图像处理
oriimg=cv2.imread(imgname)
grayimg=cv2.cvtColor(oriimg, cv2.COLOR_BGR2GRAY)
_, binaryimg=cv2.threshold(grayimg, 60, 255, cv2.THRESH_BINARY)
kernel=np.ones((25,25), np.uint8)
openimg=cv2.morphologyEx(binaryimg, cv2.MORPH_OPEN, kernel)
rows, cols=openimg.shape
for row in range(rows):
for col in range(cols):
if openimg[row, col] == 0:
oriimg[row, col] = (0, 0, 0)
#cv2.imshow("res", openimg)
#cv2.waitKey(0)
return oriimg
if __name__=="__main__":
if sys.argv[-1] == "":
pass
else:
imglist=scanimgfile(sys.argv[-1])
for img in imglist:
res=processimg(img)
cv2.waitKey(1)
cv2.imwrite("./afterprocess/"+img, res)
输入图片

输出效果图片

效果还可以,可以根据需要自行修改,比如照片换背景颜色啥的
该博客介绍了一个使用Python和OpenCV进行批量图片预处理的脚本,包括图片扫描、灰度转换、二值化、形态学操作以及替换黑色像素。脚本适用于照片背景替换等图像处理需求。
1096

被折叠的 条评论
为什么被折叠?



