自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WHLOOK

主博客:cnblogs.com/whlook

  • 博客(63)
  • 收藏
  • 关注

原创 [置顶]Logger

用来记录零碎的知识 编辑1. Qt:设置pixmap的尺寸label->setPixmap(pixmap->scaled(300,200));2. Qt:隐藏tabWidget的tab标签tabWidget->tabBar()->hide();3. 使用DOS命令在注册表添加键值reg add HKLM\SYSTEM\ControlSet001\Services\NetBT\Para

2017-08-11 08:59:24 472

原创 opencv:图像的基本变换

0.概述图像变换的基本原理都是找到原图和目标图的像素位置的映射关系,这个可以用坐标系来思考,在opencv中,图像的坐标系是从左上角开始(0,0),向右是x增加方向(cols),向下时y增加方向(rows)。普通坐标关系:图像坐标关系:1.图像的平移图像的平移是比较简单的映射关系,对于原图像的某个像素点位置(X0,Y0),向右平移100个像素的话,变换之后的目标像素点位置(X =

2017-08-11 08:59:19 716

原创 Python:使用Kivy将python程序打包为apk文件

1.概述Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用它来将Python程序打包为安卓的apk安装文件。以下是在windows环境中使用。安装和配置的过程中会下载很多东西,确保你能够稳定地访问外网,另外推荐一个视频教程:Youtube2. 步骤第一当然是安装了Python,我的版本是Python 2.7.13,然后就是安装Kivy包:官网有详细的Kivy包

2017-08-11 08:59:14 8206 3

原创 自动化工具制作PASCAL VOC 数据集

1. VOC的格式VOC主要有三个重要的文件夹:Annotations、ImageSets和JPEGImagesJPEGImages 文件夹该文件夹下存放着所有的训练集图片,格式都是.jpg需要注意的是命名格式,虽然对命名没有特别要求,但是最好按照官方的命名方法,如000001.jpg,000123.jpg,然后在这个文件夹里就没有其他东西了。Annotations 文件夹

2017-08-11 08:59:09 1937

原创 C++:后缀表达式

1.基本概念后缀表示法也叫逆波兰表示法(前缀就是波兰表示法),由于所有的操作符都在操作数的后面,所以被称为后缀表示法。中缀表示法的操作符在操作数之间,也是最符合人的逻辑。前缀表示法的操作符在操作数之前,它和后缀表示法一样,都是为了方便计算机计算,因为在后缀或前缀中没有括号,也不存在优先级处理的问题,直接利用栈进行计算。示例:中缀:5+(1+2)*4-3后缀:512+4*+3-2.中缀表

2017-08-11 08:59:04 811

原创 python:使用itchat实现手机控制电脑

1.准备材料首先电脑上需要安装了python,安装了opencv更好(非必需)如果安装了opencv的话,在opencv的python目录下找到cv2.pyd,将该文件放到python的库搜索路径就可以导入了然后下载itchat:github2.开始使用下载了itchat后解压(建议先阅读该文件夹下的docs),然后在该文件夹下执行cmd命令来安装itchat库:python se

2017-08-11 08:58:59 1677

原创 C++:tinyxml的使用

1. 简介TinyXML2(最新版本)是一个开源的功能齐全的XML解析库 For C++,源码见:github。2. 开始使用首先从Github上获得源码,是一个完整的演示工程,我们只需要其中的tinyxml2.cpp和tinyxml2.h,将这两个文件拷贝到新建的VS工程目录下,然后就可以开始使用了,这是方法之一,也可以将源码编译为.lib然后链接到工程中。然后包含头文件tinyxml2

2017-08-11 08:58:55 384

原创 C++:获取指定目录下的所有文件

1.获得指定目录下的所有文件(不搜索子文件夹)需要包含的头文件#include #include #include #include 函数实现void getAllFiles(string path, vector& files) { // 文件句柄 long hFile = 0; // 文件信息 struct _finddata_t fil

2017-08-11 08:58:50 2355

原创 py-faster-rcnn:在windows上配置

0.先说一下本机配置opencv2+cuda7.5+cudnn+anaconda,这些基础的之前都是配置好了的,python环境建议使用anaconda,用到的库基本都有了,好像没有easydict,自己装一下就好。1.下载py-faster-rcnnrbg大神github上的py-faster-rcnn使用以下命令下载,直接download的话不完整git clone --recu

2017-08-11 08:58:45 1264

原创 caffe:自己搭建网络来训练

1.准备样本  要训练自己的样本,首先需要把样本准备好,需要准备的是训练集和测试集,caffe支持直接使用图片,当然把样本转换为leveldb或lmdb格式的话训练起来会更快一点。这里我先偷个懒,直接使用图片吧 [尴尬.jpg]  训练集和测试集是一样的,不过样本不要重叠。首先我把训练集的图片都放在一个目录,然后shift+右键选择该目录,打开cmd,使用命令 dir /s/b >trai

2017-08-11 08:58:38 436

原创 NPOI:操作总结

1.套路  使用了NPOI一段时间,也慢慢了解了操作的流程,或者说套路:  a.创建Workbook:HSSFWorkbook Workbook = new HSSFWorkbook();  b.在Workbook中创建一个工作表并获得该工作表的索引(暂且这么说吧):HSSFSheet sheet = (HSSFSheet)Workbook.CreateSheet(

2017-08-11 08:58:33 554

原创 NPOI:初次操作(新建Excel)

1. 由于在某些电脑上没有安装office,或者有权限限制,使用COM组件进行读写Excel的话会出现问题,为此,NPOI是一个很好的选择,NPOI可以在上述环境中满足Office的操作需求,并且功能也很完善。2.初次接触NPOI,花了一些时间来学习一下,以下代码功能是创建一个工作簿,修改然后保存。3.详细的代码和注释如下:namespace helloNPOI{ pu

2017-08-11 08:58:29 1104

原创 使用群晖NAS:配置Git server

1.首先在群晖的DSM的控制面板中创建一个用户例如是Git_test(我给了管理员权限)2.在套件中心安装 Git server3.打开Git server 勾选用户 Git_test4.在控制面板的“终端机和SNMP”中启动SSH功能5.在控制面板的共享文件夹中创建一个文件夹,例如 "GitRepo",也就是仓库6.然后再File station 中在GitRepo下创建一个

2017-08-11 08:58:24 3582

原创 Qt:串口通信

1.概述  因为项目需要,对Qt的串口通信进行了一些学习,这个项目的一个需求是将一个测温仪器的数据读取到电脑进行处理,根据这个仪器的通信协议,每次读取前都需要对它写入命令。这里用到了Qt进行了读写操作,其中遇到了关于十六进制Write问题并得以解决。使用到的Qt库:QtSerialPort2.详细  首先需要在mainwindow.h中添加头文件和串口类的声明,并写一个槽函数用来读取数

2017-08-11 08:58:19 364 1

原创 Qt:表格 tableWidget

1.设置行数和列数//设置行数tableWidget->setRowCount(8);//设置列数tableWidget->setColumnCount(1);2.隐藏表头tableWidget->verticalHeader()->setVisible(false); //列tableWidget->horizontalHeader()->setVisib

2017-08-11 08:58:11 1235

原创 Qt:添加点击事件的Label并显示图片

1.给label添加点击事件  Qt中原本的label是没有点击事件的,如果想添加点击事件的话,可以继承QLabel类并重载鼠标事件(比如mousePressedEvent),然后在鼠标事件中发送一个信号,具体如下:// clicklabel.h#ifndef CLICKEDLABEL_H#define CLICKEDLABEL_H#include #inclu

2017-08-11 08:58:06 2288 2

原创 caffe:使用C++来提取任意一张图片的特征(从内存读取数据)

0x00   关于使用C++接口来提取特征,caffe官方提供了一个extract_features.cpp的例程,但是这个文件的输入是blob数据,即使输入层使用的是ImageData,也需要在deploy.prototxt中指定图片的位置,很不方便。如果想要使用opencv来读取一个图片,然后用caffe训练好的model提取特征,就需要对输入层进行改写。另外官方例程默认的输出是lev

2017-08-11 08:58:01 1028

原创 python:控制鼠标和键盘

程序:## _*_ coding:UTF-8 _*_import win32apiimport win32conimport win32guifrom ctypes import *import timeVK_CODE = { 'backspace':0x08, 'tab':0x09, 'clear':0x0C, 'enter':0x

2017-08-11 08:57:56 1343

原创 .dll 文件编写和使用

1.基本概念  dll(dynamic-link library),动态链接库,是微软实现共享函数库的一种方式。动态链接,就是把一些常用的函数代码制作成dll文件,当某个程序调用到dll中的某个函数的时候,windows系统才把dll加载到内存中。也就是说当程序需要的时候才链接dll,所以是动态链接。  动态链接的好处是磁盘和内存的消耗减少,这也是dll的最初目的。同时dll也提供了模块化

2017-08-11 08:57:51 12480

原创 python:打包成exe程序

1.需要安装 py2exe2.示例代码:#exetest.py#创建一个gui界面,只用一个标签和按钮,无功能from Tkinter import *win = Tk()label = Label(win,text = 'hello')btn = Button(win,text = 'click')label.pack()btn.pack()win

2017-08-11 08:57:47 249

原创 python:小乌龟turtle

turtle的意思是乌龟,也是python中自带的图形函数,使用turtle的方法也很形象,就好像在画布上有一个小乌龟(在画布上是一个箭头),然后你可以让它动来动去,它经过的地方就被留下了记号。  例如画一个正方形: def drawSqure(x): turtle.forward(x) # 让乌龟向前走x距离 turtle.right(90) # 让乌龟向右转9

2017-08-11 08:57:44 7463

原创 python:input()和raw_input()

1.input()  接受各种合法类型的输入,比如输入字符串,则需要使用双引号,否则报错。  input()会自动判断类型,比如输入的是 1.1,则返回的类型是float。示例:2.raw_input()  raw_input()也接受各种类型的输入,不过都当作字符串对待

2017-08-11 08:57:41 219

原创 C++:哈希

1.基本概念  哈希一般用来快速查找,通过hash函数将输入的键值(key)映射到某一个地址,然后就可以获得该地址的内容。同样,如果要储存一对值(键值和数据),则也是通过hash函数获得地址来存入。见图例:   不过这其中会出现一些问题,最常见的是出现冲突。就是输入不同的key,经过hash之后得到同样的值,也就是在同一个地址要储存不同的data,例如使用上图的hash,输

2017-08-11 08:57:36 676

原创 C++:线程(std::thread)

1.创建一个线程  创建线程比较简单,使用std的thread实例化一个线程对象就创建完成了,示例: 1 #include 2 #include 3 using namespace std; 4 5 void t1() //普通的函数,用来执行线程 6 { 7 for (int i = 0; i 20; ++i) 8 { 9

2017-08-11 08:57:31 659

原创 GitHub:Git的使用

1.下载安装后设置姓名和邮箱地址$ git config --global user.name "yourGithubName"$ git config --global user.name "yourEmail@example.com"2.设置SSH Key$ ssh-keygen -t rsa -C "yourEmail@example.com"# 回车

2017-08-11 08:57:26 265

原创 链表

1.基本概念  链表 (Linked List)是一种线性表,但是在内存中不是按照线性的顺序储存数据,是通过每个节点的指针指向下一个节点的指针来链接。相对于顺序储存(例如数组),链表的插入操作更快( O(1) ),但是失去了随机读取的优点。  链表一般有单向链表,双向链表,循环链表这三种形式。2.单向链表  该种形式是链表中最简单的,每个节点包含了数据域和指针域,数据域用来保存该节

2017-08-11 08:57:22 335

原创 安装VMware Tools:Ubuntu

1.首先准备好linux.iso,在安装目录下应该可以找到,我使用的是这个:链接:http://pan.baidu.com/s/1nuGQyIt 密码:b5mn2.打开Ubuntu,CD中加载该iso,然后点击 虚拟机->安装VMware Tools,出现弹窗点是。3.可以看到Ubuntu的CD中已经显示了VMTools的相关字样,打开CD看看里面有么有东西 ,如果是空的重

2017-08-11 08:57:17 173

原创 校园地图

1.项目描述  趁课余时间做了一个小作品,项目是校园地图,主要目的是练习Qt和一些基本的数据结构和算法。该项目的主要功能是从下拉列表中选择出发地和目的地,然后地图上可以显示路线。主要的显示方法是通过贴图来显示。时间久远才想起来整理,当时也是经历了一个星期的断断续续的修补,最后形成了一个比较完善的小地图软件。2.基本思路  01.首先需要构建路网(很重要),我首先写了一个该版本,然后把路

2017-08-11 08:57:12 1345 1

原创 C++:栈(stack)的模板类实现

1.基本概念  栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out)  只能在栈顶进行插入和删除操作  压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一  出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一  栈的基本操作有:pop,push,判断空,获取栈顶元素,求栈大小   2.构造栈  可以使用数组构造栈,也

2017-08-11 08:57:09 4790 1

原创 main函数的参数:argc和argv

程序一般是从main函数开始执行的,main函数标准格式:int main(int argc,char **argv) 其中argc是来自shell(或CMD)的参数的个数,argv是char型的二维数组,储存着命令的内容。通过一下一个小程序可以认识一下:int main(int argc, char **argv){ for (int i = 0;

2017-08-11 08:57:07 351

原创 函数指针

1.格式 /* C */ void(*fp)(void)=NULL; // 对应的是 void fun() 类型的函数 int(*fp)(int)=NULL; // 对应的是 int fun(int) 类型的函数/* C++ */ int(*fp)(int)=NULL; // 对于静态成员函数(和C一样) int(ClassName

2017-08-11 08:57:02 115

原创 C++:类和对象

1.基本概念  类是具有相同属性和行为的对象的抽象集合,是对象的模板,对象是类的实例化。  类包含成员函数(行为)和数据(属性)两个部分,一般成员函数作为接口,而数据作为某些成员函数的操作对象,通常是对外不可见的(私有的)。  类通过对数据的封装、隐藏,增强了安全性并简化了编程,模块化程度相对应C来说更高。2.基本形式 class name //name是类名{

2017-08-11 08:56:59 124

原创 如何编写静态库

1.使用vs2013创建普通的应用台控制程序2.在属性里选择静态库(.lib)编写库文件:// mylib.h#pragam onceint sum(int a,int b); //mylib.c#include "mylib.h"//函数实现int sum(int a,int b){ return (a+b);}3.

2017-08-11 08:56:55 1522

原创 C++:override和final

1. override 重载  当你在父类中使用了虚函数时候,你可能需要在某个子类中对这个虚函数进行重写,以下方法都可以:class A{ virtual void foo();}class B :public A{ void foo(); //OK virtual foo(); // OK void foo() override

2017-08-11 08:56:52 398

原创 小练习:vaild number

1.描述  给定字符串,若该字符串表示的是数字,则输出true,否则输出false2.分析  题目一看感觉不难,做起来却很麻烦,首先是数字的各种表示要知道,然后就是对这些不同形式的数字进行筛选判断。该题目中合法数字的表示形式如下:±12 // 前缀有正负号合法1.2 1. .1 1e21.e2 1e±2//以上数字中间不含空格

2017-08-11 08:56:47 161

原创 C++:创建线程初试

1.使用CreatThread创建#include #include using namespace std;/*创建一个线程*/DWORD WINAPI fun(LPVOID ipParamter) { while (true) { cout "fun1 display!" 1000); }}/*创

2017-08-11 08:56:42 226

原创 小练习:Two Sum

1.exampleGiven nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1]. 2.solveclass Solution {public: vectorint> twoSum(vectorint>& nums, int

2017-08-11 08:56:39 143

原创 小练习:补数 (Number Complement)

1.eamplesInput: 5Output: 2Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.Input: 1Output: 0Explanation:

2017-08-11 08:56:36 304

原创 C++:虚函数

1.基本概念  C++中的虚函数主要是为了实现多态,就是可以通过父类的指针指向子类的实例并调用子类的成员函数。虚函数有虚函数和纯虚函数,其中纯虚函数是必须在子类中实现的,否则无法实例化该子类。  纯虚函数的格式:virtual void fun()=0;   虚函数的实现是通过虚函数表(vfptr),每个父类都有一个虚函数表,父类在每个子类的实例中都会自动生成一个虚函数

2017-08-11 08:56:34 188

原创 python:一个比较有趣的脚本

宿舍火星wifi经常掉,然后要重启,于是用Python写了一个脚本,用来远程控制火星wifi的重启思路:  01.使用socket通讯  02.在wifi主机(开wifi的电脑)上运行客户端,控制机运行服务端  03.当想要重启wifi时候,通过控制机向wifi主机发送字符‘1’  04.wifi主机收到字符后,当判断为‘1’时,Python调用cmd杀掉火星wifi进程,然后

2017-08-11 08:56:29 1828

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除