- 博客(236)
- 资源 (1)
- 收藏
- 关注
原创 (零)多输入多输出通道
每个输入通道都有独立的二维卷积核,所有通道结果相加得到一个输出通道结果。第 i 个输出对应的输入和第 i 个核做卷积,从而得到多输出通道。多输入通道,如彩色图像,RGB三个通道。每个通道都有一个卷积核,结果就是所有通道卷积结果的和。无论多少输入通道,到目前为止,只用到单输出通道。并可以看作输入通道 核 识别并组合输入中的模式。可以有多个三维卷积核,每个核生成一个输出通道。不同通道的卷积核大小是一样的,计算上的好处。每个输出通道有独立的三维卷积核。不识别空间模式,只是融合通道。输出通道数是卷积层的超参数。
2022-08-23 21:57:59 981
原创 SVM训练(C++实现)
在很多文献中,都把HOG和SVM结合起来使用,可以得到很不错的分类效果,SVM就不用再复习啦,就是一个线性分类器,给一个简单的图就能很好理解,对于有标签的正样本和负样本,如果只有两个维度,也就是只有两个特征,要做的就是找到一条线,能够很好的划分为两个区域分别包含正负样本,并且这条线尽可能远离两个样本中心(摘自上课的PPT)但是这是针对二维的情况,如果扩展到多维,可能就无法找到一条线,即使找到了也可能有很多样本发生了错分,所以就需要在更高维度上考虑,高斯是最常用的。目前我是打算将23维图像降为1维,
2022-05-29 19:37:22 2371 1
原创 LBP特征提取(C++实现)
纹理特征中HOG和LBP是两大很重要的特征,利用好这两个特征的一些性质可以很好提高后续识别精度一、原理的简单解释LBP,是局部二值模式,最原始的LBP模式,可以很明显用下面的图描述对于中心像素点,一共有8个邻域值,大于中心则取值为1,小于中心则取值为0,只有0,1两种取值,一共有2^8=256种模式,可以反映这一块区域的纹理信息;值得注意的是,它具有旋转不变性(针对于顺时针的),也就是说无论从那个邻域值开始记录都是同样的结果;一般操作是将所有的8位二进制数旋转直至最小值,取最小值为最终模式,这
2022-05-29 16:17:43 928
原创 PCA 降维优化(C++实现)
前段时间写了一个HOG+PCA降维,在进行随机森林训练的时候,说得知道降维后信息保留了多少,以及得把降维后所有特征的重要性进行排序,于是删删改改终于解决了!代码及解释Mat pca_1(MatrixXd samFeatureMatrix, int featureNum, int k){ // samFeatureMatrix 为原始矩阵 // featureNum 为图像原始特征维度大小 // k 为可选的降维大小 //复制一份原始矩阵,便于后续得到投影矩阵后进行
2022-05-29 11:38:49 608
原创 基于vector容器的csv文件读取和写入
菜菜由于状态不好,一个简单的问题,也搞了好久,想想还是记录下来,万一哪天又转不过来了划重点,注意csv文件中是n行m列的数据,用vector实现,初始化一个二维vector就可以很容易实现了,用vector一部分原因是可以进行push操作,也就是直接调用vector的函数进行存取值;vector 的简单操作可以参考这篇博客:click me放上代码#include <iostream>#include <vector>#include <string>#in
2022-05-28 17:52:48 1479
原创 C++ 读入批量图片+HOG特征提取+PCA降维
主要分三个部分进行描述,代码运行无问题,个人遇到的细节问题在最后阐述一、读取保存在CSV中所有图片名,并从路径中读取相应图片1. 关于导入库若使用Qt或者C++进行编写程序,主要在官网下载opencv和eigen库,注意tar结尾文件为Linux系统相应配置,windows系统下载zip下载链接为opencv官网Eigen官网关于这两个库的导入,见另一篇博客库的简单导入操作#include <iostream>//涉及文件读取和字符串类型#include <strin
2022-04-29 15:40:46 1795 5
原创 C++ 和 Qt 的opencv库和eigen库的导入
首先说说库的下载下载链接为opencv官网Eigen官网下载自己想要的版本即可或者百度网盘自取链接:https://pan.baidu.com/s/1RUCydoRQXU1sXJ9QqGz5pw 提取码:9ede一、Qt 相关先说Qt,库的导入较为简单解压之后,在自己的项目名称那里右键,选择添加库,添加外部库添加库文件的路径,以及勾选自己的系统,例如我是windows,只勾选windows,找到.lib文件添加即可,就会发现自己的.pro里增加了路径,但是我们的eigen库没有l
2022-04-29 11:00:26 4405
原创 Qt5.9.6 + VS2017 + opencv5.4.0 安装及环境配置
一、安装链接Qt国内镜像源下载链接,选择自己想要的版本下载即可Qt官网VS 社区版,也可选择电脑自带的微软商店下载Windows SDK二、安装及配置Qt、VS、opencv确保都安装在同一个盘1. Qt安装1.先去Qt官网注册账号,收到邮件并激活账号2.下一步,组件部分只需选择自己要用的即可3.一直点击下一步,等待安装即可2. VS配置详细可参考这篇博客VS配置1.直接按照操作步骤安装,然后开始配置2.运行VS,点扩展与更新,等待3.搜索Qt,下载,插件自动安装,等待即可
2022-04-14 16:41:48 4911
原创 数据清洗 dropna drop fillna
机器学习最常用的数据清洗之 dropna drop fillna,存一份方便查资料用!dropna# axis=0 删除行,axis=1,删除列# how=any, 只要有缺失值,就删除该行或该列,how=all,所有值缺失才删除# thresh 至少有thresh个非缺失值,否则删除# subset 在哪些列中查看是否有缺失值# inplace 是否在原数据上操作,真则在原始数据上改,否返回新的copy,去掉了缺失值的作为副本df.dropna(axis=0, how='any', thre
2022-02-09 21:29:23 950
原创 5-selenium-frame切换及窗口切换
目录切换到 Frame切换到新的窗口切换到 Frame以这个链接例子为例例子如果要选择下面方框中的所有蔬菜,如果要使用 CSS 表达式,应该怎么表达?第一步,需要查一下所有蔬菜的 HTML 内容一般我们会这样写from selenium import webdriverwd = webdriver.Chrome(r'd:\webdrivers\chromedriver.exe')wd.get('http://cdn1.python3.vip/files/selenium/sample
2021-04-29 15:24:35 488
原创 4-selenium-CSS表达式
目录CSS 选择元素原理根据 tag 名、id、class 选择元素id 属性class 属性选择子元素和后代元素直接子元素后代元素根据属性选择CSS 选择元素原理HTML中经常要为某些元素指定显示效果,比如 前景文字颜色是红色, 背景颜色是黑色, 字体是微软雅黑等。那么CSS必须告诉浏览器:要选择哪些元素 , 来使用这样的显示风格。# 通过 CSS Selector 选择单个元素的方法是find_element_by_css_selector(CSS Selector参数)# 选择所有元素的
2021-04-22 20:02:14 517
原创 3-selenium-操控元素的基本方法
目录点击元素输入框获取元素信息获取元素的文本内容获取元素属性获取整个元素对应的 HTML获取输入框里面的文字获取元素中的文本内容操控元素通常包括点击元素在元素中输入字符串,通常是对输入框这样的元素获取元素包含的信息,比如文本内容,元素的属性点击元素点击元素其实就是调用对象的 click 方法。但要注意的是,当我们调用 WebElement 对象的 click 方法去点击 元素的时候, 浏览器接收到自动化命令,点击的是该元素的 中心点 位置 。这样一个例子,我们要点击 添加客户 这个按钮
2021-04-21 14:27:41 393
原创 2-selenium-选择元素的基本方法
目录根据 ID 选择根据 CLASS 选择根据 tag 名选择元素WebElement有一定前端基础的人会发现,F12 或 ctrl+shift+c 会进入源代码中,可以查看到每一部分对应的块(HTML 元素)。而我们进行每一部分操作的时候,就需要先找到对应的元素,后面才能进行操作。比如:进入百度首页,查看 HTML 元素。默认进入之后直接进到 elements 页面点击左上角的鼠标,然后点击页面的任意元素,就可以查看对应的 HTML 标签了。这里我点击了搜索框。就可以看到对应的 ID 以
2021-04-21 14:04:42 1360
原创 2-appium-一个简单例子
目录代码导入 packagewebdriver 实例操作步骤代码导入 packagefrom appium import webdriverfrom appium.webdriver.extensions.android.nativekey import AndroidKeywebdriver 实例desired_caps = { 'platformName': 'Android', # 被测手机是安卓 'platformVersion': '11', # 手机安卓版本 'devi
2021-04-15 20:35:59 737
原创 1-selenium-安装及模拟谷歌邮箱登录
安装命令行输入,安装 selenium 库pip install selenium接下来安装 chromedriver ,可以从这里下载 chromdriver需要和自己的浏览器的版本配套,先查看自己的浏览器版本,我这里是 89,下载解压之后记住该保存的路径接下来进行配置将该文件复制到 Chrome.exe 和 python.exe 所在的目录,注意不要复制到保存快捷方式的地方。又或者通过代码来实现from selenium import webdriverimport time
2021-04-15 19:51:00 1534 1
原创 1-appium-自动化环境搭建
目录appium 原理与安装安装 client 编程库安装 Appium Server安装 JDK安装 Android SDK连接手机主要是安卓 app 的自动化appium 原理与安装安装 client 编程库使用 pip 安装pip install appium-python-client安装 Appium ServerAppium Server 是用 node.js 运行的,基于 js 开发;Appium 为了方便大家安装使用,制作了一个可执行程序 Appium Desktop,把
2021-04-15 11:14:28 175 2
原创 0-appium-前导知识
目录appiumappiumappium 是手机 app 的自动化工具,完成一些重复的工作,爬取一些信息。特点:开源免费;支持多个平台;(安卓和 IOS)支持多种类型自动化;支持多种编程语言;
2021-04-14 20:34:12 258
转载 1-SSL
目录SSL单向认证双向认证单向认证和双向认证的区别SSL全称 Secure Socket Layer,安全套接层;目的:数据安全;主要作用:私密性,信息完整性和身份认证;位于应用层和 TCP 之间,数据传输会从应用层到 SSL,再由SSL 直接传到 TCP;单向认证过程(使用对称密钥)第 3 步 需要检查下面所列事项:a、证书是否过期b、发行服务器证书的CA是否可靠c、返回的公钥是否能正确解开返回证书中的数字签名d、服务器证书上的域名是否和服务器的实际域名相匹配若不合法,则终止通
2021-04-13 20:19:24 113
原创 2-非对称密钥
目录对称密钥非对称密钥RSA对称密钥对称密钥算法:数据加密和解密时使用相同的密钥。加密解密速度快,可加密内容较多。非对称密钥非对称密钥算法:数据加密和解密时使用不同的密钥,一个是公开的公钥,一个是由用户秘密保存的私钥。利用公钥(或私钥)加密的数据只能用相应的私钥(或公钥)才能解密。安全性更高,但加密解密更复杂。是密钥对。理解流程: 1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。3.A要给B发送信息时,
2021-04-13 18:44:03 683
原创 4-pytest-常见参数
目录常见参数解析常见参数解析-m :只运行被标记的测试用例;-k:只运行与给定字符串表达式匹配的测试用例;-s :显示标准输出,例如print()的语句;-v :显示详细报告;-q :显示简洁报告;–setup-show :显示fixture执行步骤;...
2021-04-07 16:50:40 182
原创 3-pytest-固件
目录什么是固件预处理和后处理作用域自动执行重命名参数化内置固件tmpdir & tmpdir_factorytmpdirtmpdir_factorypytestconfigcapsysmonkeypatchrecwarn什么是固件固件(Fixture)是一些函数,pytest 会在执行测试函数之前或之后加载运行它们。可以利用固件做很多事情,最常见的就是数据库的初始连接和最后关闭操作。举个例子:使用 pytest.fixture() 定义固件,只返回北京邮编# test_postcode.
2021-04-07 16:50:22 580 1
原创 2-pytest-测试函数
目录断言 assert捕获异常断言 assert编写测试的最基本工具。assert a == bassert a <= b捕获异常测试的过程中,需要测试是否如期抛出异常,来确定异常处理模块是否生效。使用 pytest.raises() 来进行异常捕获:...
2021-04-07 11:40:10 1215
原创 1-pytest-创建第一个测试
pytest安装 pytest创建第一个测试运行多个测试安装 pytest打开命令行pip install -U pytest查看是否安装成功pytest --version目前版本是 pytest 6.2.3官方文档 pytest创建第一个测试使用 sublime 编写一个源文件def func(x): return x + 1def test_answer(): assert func(3) == 5assert 语句验证测试期望。运行的话打开命令行,窗口切换到源
2021-04-06 20:21:21 200
原创 8-mySQL-一些常用语句表格处理
文章目录CREATE TABLECREATE VIEWCREATE INDEXALTER TABLESQL 主键SQL 外来键DROP TABLETRUNCATE TABLEINSERT INTOUPDATEDELETE FROMCREATE TABLE表格是数据库中储存资料的基本框架。格被分为栏位 (column) 及列位 (row)。每一列代表一笔资料,而每一栏代表一笔资料的一部份。CREATE TABLE 的语法是:CREATE TABLE "表格名"("栏位 1" "栏位 1 资料种类"
2021-03-12 16:09:04 198
原创 7-mySQL-一些常见语句
文章目录SELECTDISTINCTWHEREAND 和 ORINBETWEENLIKEORDER BYSQL 函数COUNTGROUP BYHAVINGALIASSQL 连接外部连接SubqueryUNIONUNION ALLINTERSECTMINUSCONCATENATEsubstringTRIMSELECTSQL 最常用的方式就是将资料从数据库中的表格内选出。而我们的 SELECT 就是从(FROM)数据库中的表格选出(SELECT)。SELECT 的最基本框架是SELECT "栏位名"
2021-03-12 11:57:58 431
原创 6-mySQL-数据类型
mySQL 数据类型主要有数值类型、日期和时间类型、字符串类型三种。数值类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC)以及 近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。关键字 INT 是 INTEGER 的同义词,关键字 DEC 是 DECIMAL 的同义词。BIT 数据类型保存位字段值。下表显示了需要的每个整数类型的存储和范围。类型大小范围(有符号)范围(无符号)用途TINYINT
2021-03-11 20:38:45 77
原创 5-mySQL-常见查询示例
举个例子,如果我们有一个表 shop,里面保存了某些交易(交易商)的每件商品(物品编号)的价格。假设每个交易者对于每件商品有一个固定的价格,假设(article, dealer)是记录的主键。我们选择 mysql 中的一个数据库:这里我们创建一个 test 数据库。use test;创建 shop 表并填充。CREATE TABLE shop( -> article INT UNSIGNED DEFAULT '0000' NOT NULL, -> dealer CHA
2021-03-11 18:44:17 142
原创 4-mySQL-创建和使用数据库
创建和选择数据库create database test;use test;数据库只需创建一次,但是每次开始mysql 会话时,都必须选择该数据库以供使用。也可以通过发出USE示例中所示的语句来完成此操作 。可以在调用mysql时在命令行上选择数据库。只需在您可能需要提供的任何连接参数之后指定其名称即可。mysql> mysql -h host -u user -p menagerieEnter password: ********创建表创建数据库是比较容易的,但是这个时候我们创建
2021-03-09 22:04:11 324 1
原创 3-mySQL-输入查询
输入查询,确保已经连接到服务器。这样做本身并不选择要使用的任何数据库。看一个简单的查询。要求服务器告诉您其版本号和当前日期。mysql> select version(), current_date;+---------------------------+--------------+| version() | current_date |+---------------------------+--------------+| 10.3.27-Maria
2021-03-09 16:51:37 221
原创 2-mySQL-连接到服务器和从服务器断开连接
连接到服务器如果我们想要连接mysql的话,是需要一个用户名和密码的,所以我们需要正确的连接参数mysql -h host -u user -pEnter password: *******host 和 user 代表运行 mySQL 服务器的主机名和 mySQL 账户的用户名。用适当的值替换您的设置,并且要输入你的账户密码。如果可行,就会出现shell> mysql -h host -u user -pEnter password: ********Welcome to the M
2021-03-09 16:12:19 153 2
原创 1-mySQL-基本操作
基本操作进入终端或者命令行输入,开启数据库service mysql start输入密码登陆mysql -u root -p # 使用 root 登录enter password: xxxxxx数据库基本操作show databases;可以显示有三个数据库。MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| infor
2021-03-09 15:38:08 80 1
转载 9-Vue-组件基础
9-Vue-组件基础基本示例自定义一个组件// 定义一个名为 button-counter 的新组件Vue.component('button-counter', { data: function () { return { count: 0 } }, template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'})组件是可复
2021-03-07 15:18:39 132
原创 八-Vue-表单输入绑定
八、表单输入绑定基础用法可以用 v-model 指令在表单 input 、textarea、select 元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。v-model 在内部为不同的输入元素使用不同的 property 并抛出不同的事件:text 和 textarea 元素使用 value property 和 input 事件;checkbox 和 radio 使用 checked property 和 change 事件;select 字段将 value 作为 pr
2021-03-06 21:52:42 125
原创 七-Vue-事件处理
七、事件处理监听事件v-on 指令监听 DOM 事件,并在触发时运行一些 Javascript 代码<div id="example-1"> <button v-on:click="counter += 1"> <p> Button clicked {{ counter }} times. </p> </button></div>var example1
2021-03-06 20:49:17 167
原创 6-Vue-条件渲染
六、列表渲染v-for看个简单例子<ul id="example-1"> <li v-for="item in items" :key="item.message"> {{ item.message }} </li></ul>var example1 = new Vue({ el: '#example-1', data: { items: [ { message: 'Foo' }, { mes
2021-03-06 19:42:24 115
原创 5-Vue-条件渲染
五、条件渲染v-if条件性渲染一块内容,只有返回 true 的时候才会被渲染。<h1 v-if="awesome"> Vue is awesome!</h1>当然也能增加 else 块:<h1 v-if="awesome"> Vue is awesome!</h1><h1 v-else> Oh no</h1>如果在 template 元素上使用 v-if 条件渲染分组:<templ
2021-03-06 16:20:48 111
原创 4-Vue-Class 与 Style 绑定
4、Vue-Class 与 Style 绑定绑定 HTML Class将 v-bind 用于 class 和 style 时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。对象语法我们可以传给 v-bind:class 一个对象,以动态的切换 class<div v-bind:class="{ active: isActive }"> </div>这里 class 是否存在取决于 isActive 是否 true当然我们也
2021-03-06 14:17:16 128
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人