opencv——训练自己的小狗分类器

本文介绍了如何使用opencv和Python训练一个自己的图像分类器,专注于小狗的识别。内容涵盖样本数据的准备、预处理、训练以及测试过程,强调了数据量和预处理的重要性,并提供了从爬虫获取数据的示例。最后,给出了训练后的分类器调用代码。
摘要由CSDN通过智能技术生成

opencv+python图像识别——训练自己的分类器

opencv支持训练自己的分类器,闲话少说
训练步骤:

  1. 准备样本图像数据
  2. 样本数据预处理
  3. 正反样本数据生成正反txt、vec文件
  4. 训练
  5. 测试结果

注意以下几点:

  • 首先应该注意样本数据量
  • 预处理时也要注意原始样本数据的保留
  • 无论什么操作系统,需要首先明确操作步骤

准备图像数据(推荐两种方式)

  1. 采取爬虫方式爬取一定量图像数据
  2. 下载网上的样本集

下面是我自己的爬虫(从百度爬取数据,可能需要自己调试一下参数,即控制图片下载数量),获取正样本——狗的图像数据建议3000张,负样本——猫或其他建议5000张。

import urllib.request
import urllib.parse
import re
import os
import tkinter


#获得保存下载图片文件夹的路径
def Imgpath(word):
    file_path = os.getcwd()[:-4] + word            #获得当前的文件路径后创建带有关键词的路径
    if not os.path.exists(file_path):              #判断新建路径是否已经存在
        os.makedirs(file_path)                     #不存在,创建文件夹
    else:
        file_path = file_path + '1'                #存在,给文件夹重新命名
        os.makedirs(file_path )                    #创建文件夹
    return file_path

def Imgurl(word):
    rep_list = []
    #模拟浏览器,需要用到浏览器的信息和目标url
    header = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
        "referer": "https://image.baidu.com"
    }
    #将中文关键字加密成浏览器能识别的乱码
    content= urllib.parse.quote(word,encoding='utf-8')
    #依据pn的规律从30到121循环4次,间隔为30
    for num in range(30,151,30):
        gsm = hex(num)[2:]         #将十进制数num转换成16进制数并取后两位
        url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord='+content+'&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=&z=&ic=&word='+content+'&s=&se=&tab=&width=&height=&face=&istype=&qc=&nc=&fr=&pn='+str(num)+'&rn=30&gsm='+ gsm +'&1521707235798='    #根据规律每次循环生成正确的请求地址
        req = urllib.request.Request(url=url,headers=header)   #获得请求对象
        page = urllib.request<
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值