OPENCV 训练分类器一

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值