- 博客(65)
- 资源 (6)
- 收藏
- 关注
原创 Git/Github使用笔记(二)——开始使用github
开始使用前先简单介绍一下工作区和版本库的概念: 工作区:指的是我们git init的文件夹,我本次的实例中工作区就是Usecaffemodle版本库:包括三部分:暂存区(index/stage)、分支(master),object。 暂存区:实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区,这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等),文件的 内容并不存
2016-12-12 00:01:48 732
原创 Git/Github使用笔记(一)——如何生成SSH key及访问Github
一、检查SSH key是否存在 在终端输入:ls -al ~/.ssh如果没有,终端显示如下: No such file or directory 如果已经存在,则会显示id_rsa和id_rsa.pub 二、生成新的SSH key 在终端输入:ssh-keygen -t rsa -C "your_email@example.com"其中your_email@example.com
2016-12-11 23:38:31 10876
原创 caffe练习实例(3)——使用训练好的模型
本实例是使用opencv编写代码,使用修改后的mnist的deploy文件并且调用训练好的模型,输入一张图片,输出分类结果。本工程的所有文件我都上传到了github上面,需要的可以下载。具体步骤如下: 改写deploy文件:把数据层和(Data Layer)和连接数据层的layers去掉(即top:data的层)如下: 去掉输出层和连接输出层的Layers(即bottom:label) 重新建立输
2016-12-11 16:48:30 3164 1
原创 caffe练习实例(2)——训练cifar10数据集
这个实例与mnist类似。操作步骤如下: 1. 下载数据: 执行get_cifar10.sh这个脚本文件进行下载数据,但是这个方法下载速度太慢了,cifar10的数据集180Mb左右。我把下载下来的存到微云里面了,我的CSDN资源里面也有一份. 2. 将数据转化为lmdb格式:./examples/mnist/create_cifar10.sh 3. 训练:.
2016-12-11 16:35:16 1008
原创 caffe练习实例(1)——训练mnist数据集
1.简介这是一个非常简单的实例,主要是为了这个简单的实例了解caffe的工作流程。2.操作流程1.获取数据在caffe-master/data/mnist文件夹中只有一个get_mnist.sh可执行文件,我们需要执行这个文件获取mnist所需要的数据。执行命令:./data/mnist/get_mnist.shget_mnist.sh源码解析: 通过源码我们可以知道,这个脚本主要是下载t
2016-12-10 18:09:49 1407
原创 caffe学习笔记(二)——caffe结构分析
一、caffe目录结构:data —— 用于存放下载的训练数据docs —— 帮助文档examples —— 代码样例matlab —— MATLAB接口文件python —— PYTHON接口文件models —— 一些配置好的模型参数scripts —— 一些文档和数据会用到的脚本核心代码: tools —— 保存的源码是用于生成二进制处理程序的,caffe在训练时实际是直接调
2016-12-09 16:35:38 3119
原创 caffe学习笔记(一)——caffe环境安装
一、基本环境安装:1.依赖库安装:基本的依赖库安装:sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compilersudo apt-get install --no-install-recommends libboost-al
2016-12-09 15:19:22 12452
原创 Jetson TK1 血泪开发记(一)——Jetson TK1初体验
Jetson tk1初次开机使用,由于在购买的时候店家已经将系统升级到了21.4版本,所以免去刷机步骤了。安装中文字体/输入法 找到右上角的输入法图标->Text Entry Setting,然后点+号进行添加输入法,找到Chinese(Pinyin)进行添加,然后看到switch to next source useing和switch to previous source using 这两
2016-07-15 11:47:29 15800 1
原创 opencv学习笔记(二十六)——相机标定之棋盘提取角点
本例程是相机标定的第一步,通过findChessboardCorners找到棋盘上的所有角点,然后再通过调用cornerSubPix亚像素精确化,找到精确的角点坐标,然后调用circle画出角点位置。主要函数介绍:findChessboardCorners()功能:寻找棋盘图的内角点位置函数形式:int cvFindChessboardCorners( const void* image, Cv
2016-03-03 19:27:18 20351 15
原创 opencv学习笔记(二十五)——实现相机拍照功能
由于相机标定需要多张棋盘照片,所以写了一个相机拍照程序。主要原理是:创建一个滑块,当作相机的快门,然后通过一个回调函数保存窗口的图片。 源代码如下:#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) //掩藏控制台#include<iostream>#include <fstream>
2016-03-02 14:17:35 6050 1
原创 opencv学习笔记(二十四)——相机标定板制作
这里采用了的一个opencv程序制作了相机标定板:#include "cv.h"#include "highgui.h"#include "cxcore.h"//隐藏控制台窗口#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")int main(int argc, char*argv[]){
2016-02-27 20:20:25 8911
原创 opencv学习笔记(二十三)——相机标定原理详解
一、四个坐标系统1. 四个坐标系简介:世界坐标系(Xw,Yw,Zw):也称真实或现实世界坐标系,或全局坐标系。它是客观世界的绝对坐标,由用户任意定义的三维空间坐标系。一般的3D场景都用这个坐标系来表示。摄像机坐标系(xoy):以小孔摄像机模型的聚焦中心为原点,以摄像机光轴为oz 轴建立的三维直角坐标系。x,y 一般与图像物理坐标系的X,Y平行。图像物理坐标系:其原点为透镜光轴与成像平面的交点,
2016-01-24 19:42:07 5201
原创 opencv学习笔记(二十二)——驱动双摄像头
问题描述:驱动双目摄像头——这是我研究双目视觉系统的第一步,俗话说万事开头难,我这第一步搞得真是头破血流啊,终于在我百般努力下驱动起这个双目摄像头了。在驱动的过程中,我发现当我们驱动多个摄像头时,opencv传统的摄像头驱动方式只能同时打开型号不同的摄像头(例如电脑内置摄像头和USB外置摄像头),而驱动两个相同的摄像头(也就是我使用的双目摄像头)时,我们在程序中打开的第一个摄像头能够正常运行,而第二
2016-01-07 18:38:22 7715 5
原创 opencv学习笔记(二十一)——阈值操作
阈值化:最简单的图像分割方法应用举例:从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。阈值操作介绍:二进制阈值化阈值化类型如下式所示: 解释:在运用该阈值类型的时候,先要选定一个特定的阈值量,比如:125,这样,新的阈值产生规则可以解释为大于125的像素点的灰度值设定为最大值
2015-11-22 10:52:44 4944
原创 opencv学习笔记(二十)——形态学滤波
开运算处理过程:先腐蚀后膨胀。 功能:用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。 使用实例:#include<opencv2/opencv.hpp>void main(){ cv::Mat image = cv::imread("腐蚀膨胀练习1.jpg"); cv::namedWindow("SourceIm
2015-11-17 15:14:07 14338 3
原创 opencv学习笔记(十九)——图像滤波综合运用实例
#include<opencv2/opencv.hpp>cv::Mat Source_Image,BoxFilter_Image, MeanBlur_Image, GaussianBlur_Image, MedianBlur_Image, BilateralFilter_Image;int g_BoxFilter; //方框滤波参数int g_MeanBlur; /
2015-11-16 20:00:27 934
原创 大数据的乘法的原理和实现
大数据乘法算法步骤如下:1. 计算被乘数各个位上与乘数各个为的积,按位错开。如下面:先计算被乘数的个位(5*9 = 45,4*9 = 36……1*9 = 9),然后错开一位,计算被乘数的十位(1*5 = 5,……1*1=1)。2. 把各位的加起来(将个位和十位计算的乘积按位相加,如45+0 = 45,36+5 = 41,……,1+0 = 1)3. 十位进位,取个位,如 (45对10取模等于4,所
2015-11-15 22:04:52 2142
原创 opencv学习笔记(十八)——图像非线性滤波
非线性滤波非线性滤波是原始数据与滤波结果是一种逻辑关系,即用逻辑运算实现,而线性滤波采用的是算术运算结果。中值滤波(Median filter)中值滤波介绍中值滤波是一种典型的非线性滤波技术,基本思想就是用像素点邻域灰度值得中值来代替该像素点的灰度值。常用在脉冲噪声,椒盐噪声的同时又能保留图像边缘细节。优点:减小噪声在滤波中的影响,从而达到更好的滤波效果,同时还能更好地保留边缘细节。缺点:耗时更
2015-11-15 19:52:35 2475
原创 opencv学习笔记(十七)——线性滤波
图像滤波:图像滤波:指尽量在保存图像细节特征的条件下对目标图像的噪声进行抑制。图像滤波的目的:一是抽出对象的特征作为图像识别的特征模式;二是消除图像中混入的噪声。图像滤波的要求:一是不能损坏图像的轮廓及边缘等重要信息;二是使图像清晰视觉效果好。滤波和模糊的区别:拿高斯滤波来举例:滤波一般可以分为高通滤波和低通滤波,对于高斯低通滤波就会产生模糊效果,如果对于高斯高通滤波就会产生锐化的效果。所以
2015-11-14 17:34:49 6056
原创 opencv学习笔记(十六)——图像对比度和亮度值
一、理论分析对于图像亮度和对比度的调整主要是加上或者乘上一个常数,理论公式如下:g(x,y)<c> = a*f(x,y)<c>+bf(x,y)< c >代表源图像第x行,第y列像素点第c通道的值g(x,y)< c>代表输出图像第x行,第y列像素点第c通道的值a(a>0)通常称为增益(放大倍数),用来控制图像的对比(为了观察结果,一般设置为0.0到3.0之间)b通常被称为偏置,用来控制图像的亮
2015-10-30 18:00:02 5322
原创 opencv学习笔记(十五)——图像融合
一、ROI区域图像叠加&图像混合ROI区域:设置感兴趣区域(region of interest); 使用ROI区域可以减少处理时间,增加精度。1,创建ROI区域方法一:使用表示矩阵区域Rect,它指定左上角坐标和矩阵的长和宽;Mat imageROI;imageROI = image(Rect(200, 200, logo.cols, logo.rows));方法二:指定感兴趣行或列的范围(R
2015-10-24 17:05:52 3816
原创 opencv学习笔记(十四)——图像像素的访问
方法一:使用指针遍历每个像素点:#include <opencv2/opencv.hpp>using namespace cv;void colorReduce(Mat inputImage, Mat outputImage, int div){ outputImage = inputImage.clone(); int rowNumber = outputImage
2015-10-23 17:53:11 751
原创 opencv学习笔记(十三)——数据结构
一、基础图像容器Mat1.1Mat介绍Mat是用来储存数字图像的一个类。它是IplImage的升级。Mat相对于IplImage最大的优点就是:不用手动开辟和释放图像内存,Mat能够自动管理内存。 Mat是一个类。包含两个数据部分:(1)矩阵头(包含矩阵尺寸,储存方法、存储地址等信息);(2)一个指向储存所有像素值的矩阵(根据所储存方法的不同,矩阵可以是不同的维数)的指针。 为了提高Opencv
2015-10-16 17:56:18 792
原创 opencv学习笔记(十二)——基础应用
这一节主要实现opencv的一些基础应用,如创建滑动条,以及控制鼠标操作等。一、滑块条的创建滑块条常用来动态调节参数。它需要依附窗口而存在。1,函数介绍:创建滑块条:createTrackbar()2,例程:
2015-10-15 12:45:56 606
转载 vector用法
vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问,和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间, vector的优点: 1. 可以使用下标访问个别的元素 2. 迭代器可以按照
2015-10-12 17:38:41 406
原创 opencv学习笔记(十一)——图像的载入,显示和输出到文件
说明说明一下,之前的opencv学习基本是在opencv1.0的基础下学习的,在这节以后的都是基于opencv2.X下的学习。参考的是浅墨大神的《opencv3编程入门一书》。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 在OpenCV2.X中写程序的标准三
2015-10-12 12:41:10 7744
原创 opencv学习笔记(十一)——图像腐蚀和膨胀混合运用练习
图像腐蚀和膨胀混合运用经常应用在图像去噪,和骨架提取等场合。接下来的例子是运用图像腐蚀和膨胀进行去噪的例程: 简单的图像去噪过程就是:先对图像进行腐蚀,然后再进行膨胀。 代码如下:#include "cv.h"#include "highgui.h"void main(){ IplImage *src = cvLoadImage("G:\\Opencv\\素材\\腐蚀膨胀练习1.jp
2015-10-11 17:56:19 860
原创 USB转串口(PL2303)驱动安装
USB转串口驱动安装必须安装2009年之前的不然无法使用,一般电脑自动安装上去的是2015年的,就会无法识别。解决办法就是:卸载驱动 一定要勾上卸载此驱动程序 卸载之后,拔走PL2303串口,然后重新插上,如果驱动还不是2009年之前的继续上面的操作,卸载驱动,直到驱动是2009年之前的,并且电脑识别这个串口。
2015-10-11 12:55:06 2652
原创 opencv学习笔记(十)-图像腐蚀与腐蚀
相关概念:腐蚀:删除对象边界某些像素。结构元素设有两幅图象B,X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(structure element),又被形象地称做刷子。结构元素通常都是一些比较小的图象。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++腐蚀
2015-09-23 11:26:27 7575 3
转载 cvCreateImage和cvCreateImageHeader等函数的区别
1,如果是从新创造一个Iplimage,则用IplImage* cvCreateImage( CvSize size, int depth, intchannels ),它创建头并分配数据。注:当不再使用这个新图像时,要调用void cvReleaseImage( IplImage** image )将它的头和图像数据释放!2,如果有图像数据没有为图像头分配存储空间(即,没有为IplImage*指针
2015-09-16 10:22:30 1194
原创 opencv学习笔记(九)-灰度直方图
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 灰度直方图的定义直方图(Histogram)又称柱状图、质量分布图,是一种统计报告图。直方图由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。在图像处理上,直方图是
2015-09-13 13:49:38 942
转载 STM32位带操作
参考: http://blog.chinaunix.net/uid-7655997-id-2600622.html Cortex-M3 支持了位操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。 在 CM3 支持的位带中,有两个区中实现了位带。 其中一个是 SRAM 区的最低 1MB 范围, 0x20000000 ‐ 0x200FFFFF(SRAM 区中的最低 1MB);
2015-09-11 20:46:51 694
原创 opencv学习笔记(八)-IplImage数据结构
IplImage介绍typedef struct _IplImage{ int nSize; /* sizeof(IplImage) */ int ID; /* version (=0)*/ int nChannels; /* Most of OpenCV functions support 1,2
2015-09-11 18:19:30 2437
原创 opencv学习笔记(七)-CvMat矩阵结构以及矩阵数据访问
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 首先说一下对矩阵维度和通道的理解: 维:体现为坐标。 通道: 对于这样一个数组矩阵:float data[18] = { 30, 60, 40, 60, 50, 40,
2015-09-06 19:01:06 7625 1
原创 opencv学习笔记(六)-平滑处理图像
这是一个简单的变换,对图像进行平滑处理,程序如下: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "cv.h"#include "highgui.h"void Mysmooth(IplImage* image){ cvNamedWin
2015-09-05 11:20:12 780
原创 opencv学习笔记(五)-将图片写成视频
这次我要用opencv把一堆图片合成一个avi的视频,图片素材可以自己用KMPlayer制作,程序如下: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "cv.h"#include "highgui.h"int main(){ CvS
2015-09-04 22:15:27 3597 1
原创 opencv学习笔记(四)-视频播放控制
网上有很多关于用Cmake将opencv代码生成一个VS工程的方法查看opencv的源代码,但是我感觉这样打开源代码会让电脑很卡(不知道是不是我电脑的配置太低还是什么个情况),所以我就用Source_Insight这个工具来查看代码。使用教程在下面: 一、安装: 首先去找一个Source_Insight下载安装,但它是收费的,不过生在我们大天朝的人怎么会为收费工具而烦恼呢,所以你懂得,,, 安
2015-09-04 13:01:33 1512
原创 使用Source_Insight查看opencv源代码
网上有很多关于用Cmake将opencv代码生成一个VS工程的方法查看opencv的源代码,但是我感觉这样打开源代码会让电脑很卡(不知道是不是我电脑的配置太低还是什么个情况),所以我就用Source_Insight这个工具来查看代码。使用教程在下面: 一、安装: 首先去找一个Source_Insight下载安装,但它是收费的,不过生在我们大天朝的人怎么会为收费工具而烦恼呢,所以你懂得,,, 安
2015-09-03 18:52:16 3479
原创 opencv学习笔记(三)-读取视频与摄像头
下面是一个播放AVI视频的一个程序 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#include "highgui.h"int main(){ cvNamedWindow("Example2", 0); /*读视频文件*/ CvCapt
2015-09-03 15:10:28 1710
原创 编译opencv程序错误调试集合
持续更新中……++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1,提示:Debug Assertion Failed! 由于调试可以知道,程序是在这句出错的:cvReleaseImage(&img); //释放图像指针内存所以这个错误是指:释放内存是出
2015-09-02 09:24:45 2050
Deep Learning with TensorFlow
2018-01-10
opencv相关依赖库
2017-03-24
cifar-10-binary part1
2016-12-10
DirectShow +CameraDS
2016-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人