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

2023-11-11

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.urlopen(req
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv——训练自己的小狗分类器 的相关文章

  • 使用Python的工业视觉相机[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 python 2 和 3 的spyder之间切换

    根据我在文档中了解到的内容 它指出您只需使用命令提示符创建一个新变量即可轻松在 2 个 python 环境之间切换 如果我已经安装了 python 2 7 则 conda create n python34 python 3 4 anaco
  • 蟒蛇 |如何将元素随机添加到列表中

    有没有一种方法可以将元素随机添加到列表中 内置函数 ex def random append lst a lst append b lst append c lst append d lst append e return print ls
  • 我可以使用 openCV 比较两张不同图像上的两张脸吗?

    我对 openCV 很陌生 我看到它可以计算出脸部并返回一个矩形来指示脸部 我想知道 openCV 是否可以访问两张包含一张脸的图像 并且我希望 openCV 返回这两个人是否相同的可能性 Thanks OpenCV 不提供完整的人脸识别引
  • 使用 Python 抓取维基百科数据

    我正在尝试从以下内容中检索 3 列 NFL 球队 球员姓名 大学球队 维基百科页面 http en wikipedia org wiki 2008 NFL draft 我是 python 新手 一直在尝试使用 beautifulsoup 来
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 熊猫记忆

    我有冗长的计算 我重复了很多次 因此 我想使用记忆 诸如jug http packages python org Jug and joblib http packages python org joblib memory html 与Pan
  • 如何在 Keras 中使用部分输入进行训练,其余部分用于损失函数

    我是 Keras 新手 正在尝试实现神经网络机器学习模型 输入张量看起来像 X1 X2 和输出 Y 注意 X1 和 X2 是相关的 在模型中 只有 X1 将用于训练 但 X1 和 X2 都将传递给损失函数 该损失函数是 X1 X2 y pr
  • 将具有不同大小的行的数据加载到 Numpy 数组中

    假设我有一个包含如下数据的文本文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 如何将它加载到 numpy 数组中 使其看起来像这样 1 2 3 4 5 0 6 7 8 0 0 0 9 1
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • Docker 日志中的 Python 异常标记为流:stdout

    我想解析和处理来自 docker 容器的所有错误 但当我期望 stderr 时 Python 异常标记为 stdout 举个简单的例子app py raise Exception 然后我在 docker 容器中运行这个文件 但在 var l
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 在 python 查询参数中使用 %20 而不是 + 作为空格

    我使用 python requests 编写了以下 python 脚本 http requests readthedocs org en latest http requests readthedocs org en latest impo
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 如何使用 FastAPI 在 HTMX 前端中使用 HX-Redirect?

    我试图在登录后在前端重定向 我像这样从我的 htmx 前端发出请求
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • Python 中的迭代器 (iter()) 函数。 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 对于字典 我可以使用iter 用于迭代字典的键 y x 10 y 20 for val in iter y print val 当

随机推荐

  • pandas的引入及Series的基础操作、读取外部文件

    作用 相对于numpy pandas更进一步能帮助处理数值型数据之外的其他类型数据 比如时间序列 字符串等 常用数据类型 Series 一维 带标签数组 DataFrame 二维 Series容器 Series 创建Series数组 语法结
  • 【实用工具】利用MyBatisX插件自动生成代码

    文章目录 1 概述 2 基本使用 2 1 插件安装 2 2 集成数据库 1 概述 MybatisX 是一款基于 IDEA 的快速开发插件 为效率而生 在开发过程中 相信大家都遇到过一个数据库内有着十几张或比之更多的数据表的情况 而面对这众多
  • PHP基础

    php语法初步 php是一种运行在服务器端的脚本语言 可以嵌入到html中 php代码标记 在PHP历史发展中 可以用多种标记来区分php脚本 asp标记 短标记 以上两种基本弃用 如果要使用那么需要在配置文件中开启 脚本标记
  • Jenkins 简介

    Jenkins 简介 为什么要使用 Jenkins 是 Jenkins 还是 Hudson 从 Hudson 到 Jenkins 一个简短的故事 应该使用 Jenkins 还是 Hudson Jenkins 简介 Jenkins 最开始被称
  • failed to accept an incoming connection: connection from 127.0.0.1

    一 报错详细信息 root host 47 98 97 124 tail f tmp zabbix agentd log 11822 20180707 094214 749 Starting Zabbix Agent host 47 98
  • [javascript] Box2D JS初探(一个控制小球的游戏例子)。学习用!

    Box2D 开源物理引擎 第一次接触 主要用途应该是做游戏 不过也可以作些简单的页面特性 比如切割粉碎 拖动带弹性系数 从写了个控制小球运动 可以方向键控制左右和弹跳 碰到障碍物就死掉的DEMO来试试 演示地址 null 这里注意的是 市面
  • 在树莓派和Ubuntu等Linux发行版平台上使用OpenCV原生API调用摄像头等设备时虚拟机崩溃的问题及解决方案

    在树莓派和Ubuntu等Linux发行版平台上使用OpenCV原生API调用摄像头等设备时虚拟机崩溃的问题及解决方案 摘要 本文讨论了在树莓派和Ubuntu等Linux发行版平台上使用OpenCV原生API调用摄像头等设备时可能导致虚拟机崩
  • Quartus II 13.1的安装及使用

    文章目录 一 下载安装注册 二 设计D触发器 2 1 新建工程 2 2 创建原理图和VWF文件 2 3 时序波形仿真 三 调用D触发器 3 1 新建工程 3 2 创建原理图和VWF文件 3 3 波形仿真 四 用Verilog语言写D触发器
  • vue预览tiff格式文件

    vue 预览tiff格式的文件 1 下载tiff js tiff js官网 npm 安装 npm i tiff js S yarn 安装 yarn add tiff js S 安装完成之后通过 img 标签使用即可 div fileInfo
  • 数据结构:手撕图解二叉树(含大量递归图解)

    文章目录 写在前面 二叉树的创建 二叉树的遍历 前序遍历 中序遍历 后序遍历 层序遍历 二叉树的销毁 二叉树节点个数 二叉树叶子节点的个数 二叉树查找值为x的节点 二叉树是否为完全二叉树 写在前面 二叉树的几乎所有实现都是依靠递归实现 递归
  • 51单片机:独立按键控制数码管计数

    按键动作的前沿和后沿会都有大约10ms的抖动 人在按下按键到松开至少需要50ms以上 待考证 此代码实现的功能为给按键计数 并给按键消抖 欢迎邮箱交流 bglei foxmail com 作者 CHNfisher include
  • JS压缩图片

    作者 wuwhs https segmentfault com a 1190000023486410 说明 js image compressor 是一个实现轻量级图片压缩的 javascript 库 压缩后仅有 5kb 在前端页面即可实现
  • 【数据挖掘】特征化分析(信息增益)

    目录 前言 数据预处理 导入库 读取样本数据 计算过程 计算每个属性的熵 计算给定的样本分类所需要的期望信息 计算所有属性的信息增益 结果可视化 信息增益较大的属性下的结果 信息增益较小的属性下的结果 写在后面 前言 这是一个数据挖掘选修课
  • ubuntu系统中新建文件的默认权限

    在ubuntu系统中 当我们使用touch 和 mkdir 新建文件和目录时 并没有指明要赋予它们的权限 在man的帮助手册中也没有找到相应选项 虽然后续我们可以使用chmod 修改文件的权限 但是清楚新建文件的默认权限的来源是十分有必要的
  • 根据采购订单IDN进行MIGO过账的BAPI逻辑

    客户需求 根据ALV上的采购订单IDN进行过账 如果有IDN 就根据IDN过账 如果没有 就根据采购订单过账 BAPI ITEM数据填充如下 DATA ls goodsmvt item TYPE bapi2017 gm item creat
  • 黑马程序员——多线程笔记

    a target blank href http www itheima com android培训 a a target blank href http www itheima com java培训 a 期待与您交流 多线程 一 概念 进
  • python数据分析-Pandas数据清洗

    数据的格式请参考前面Pandas常见操作中数据的格式 数据清洗 1 重复值的处理 重复值一般采取删除法来处理 但有些重复值不能删除 例如订单明细数据或交易明细数据等 data data duplicated 判断重复数据并取出 data d
  • 区块链技术体系,快捷学习路径?

    这两年 数字货币和区块链很火 年初写过一些区块链与比特币的文章 反响也很不错 不少网友催我继续写区块链 我在这个方向未曾深耕 也不敢造次 结合自己的经验 写写区块链涉及的技术体系 以及学习区块链的途径和方法 一 区块链技术体系 数据层 数据
  • JVM的内存区域

    JVM的内存区域 不知不觉都大三了 回头看看以前的Android开发过程 遇到的很多问题都需要深入到源码去解决 这也促使我不断地深入学习Java的相关知识 首先要学习的肯定是JVM 不过JVM的知识体系十分庞杂 JVM的内存区域的划分是学习
  • opencv——训练自己的小狗分类器

    opencv python图像识别 训练自己的分类器 opencv支持训练自己的分类器 闲话少说 训练步骤 准备样本图像数据 样本数据预处理 正反样本数据生成正反txt vec文件 训练 测试结果 注意以下几点 首先应该注意样本数据量 预处