OPENCV QQ交流群:417288651
第一步,安装OPENCV 见最新openCV-Python安装教程(opencv-python版本4.4.0, Python版本: 3.9)_python安装opencv_这个人不是画家的博客-CSDN博客
第二步,下面是修正过后的Python 将文件夹下面所有的图片转换成灰色小图像,用于存正片用的。
import os
from skimage.color import rgb2gray
import numpy as np
import skimage.io as io
import matplotlib.pyplot as plt
import cv2
def convert_gray(f, **args): # 图片处理与格式化的函数
rgb = io.imread(f) # 读取图片
gray = rgb2gray(rgb) # 将彩色图片转换为灰度图片
Image = cv2.resize(gray, (50, 50)) # 调整大小,图像分辨率为40*40
# cv2.imshow("img-org", Image) # 显示该图像
return Image
if __name__ == '__main__':
'''
批量转灰度图
'''
datapath = r'D:\WORK\QT\OPENCV3.41\opencv_bin\samples\Tube' # 图片所在的路径
str = datapath +'\pos\\'+ '/*.jpg' # 识别.jpg的图像
coll = io.ImageCollection(str, load_func=convert_gray) # 批处理
print("===>",coll[0].shape)
# img_data = np.random.random((1000, 1000))
# plt.imshow(img_data)
# plt.show()
# plt.imsave('D:\WORK\QT\OPENCV3.41\opencv_bin\samples\Tube\pos-1\\'+np.str_(5)+'-runoob-test.png', img_data)
length = len(coll)
print("===>",length)
for i in range(length):
img_float = coll[i].astype(np.float32) * 255.0
#cv2.imshow("img-org", img_float) #io.show()
io.imsave(datapath+'\pos-1\\' + np.str_(i+1) + '.jpg', img_float.astype(np.uint8)) # 保存图片 coll[i]
#cv2.imwrite(datapath+'\pos-1\\' + np.str_(i+1) + '.jpg',img_float)
第三步 生成文件信息
这里要注意NEG负片的文件信息 要用绝对路径
import os
def create_pos_n_neg(path):
for file_type in ['neg-1']: #此处修改neg或pos即可
for img in os.listdir(file_type):
if (file_type == 'neg-1'):
line = path + file_type + '/' + img + '\n' # 这里必须绝对路径
with open('bg.txt', 'a') as f:
f.write(line)
elif (file_type == 'pos-1'):
line = file_type + '/' + img + ' 1 0 0 50 50\n'
with open('info.txt', 'a') as f:
f.write(line)
if __name__ == '__main__':
datapath = r'D:/WORK/QT/OPENCV3.41/opencv_bin/samples/Tube/' # 图片所在的路径
create_pos_n_neg(datapath)
print('描述文件已生成!')
第四步: opencv_createsamples.exe
建立一个createsamples.BAT执行 186 指有186张负片,也就是背影图片
opencv_createsamples.exe -vec info.vec -info info.txt -bg bg.txt -num 186 -w 50 -h 50
pause
第五步:opencv_traincascade.exe
建立一个traincascade.BAT
-numPos 13 指13张正片
-numNeg 186 186 指有186张负片
-w 50 -h 50 像素
opencv_traincascade.exe -data samples\Tube\xml -vec samples\Tube\info.vec -bg samples\Tube\bg.txt -numPos 13 -numNeg 186 -numStages 20 -w 50 -h 50 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -featureType LBP
pause