- 博客(52)
- 收藏
- 关注
原创 opencv 分水岭算法区域的分割和合并
使用直方图相似性合并相似区域#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<vector>#include<iostream>#include&...
2019-03-15 10:56:30 2078
原创 opencv 分水岭算法详细理论+实践
分水岭算法看了两天了,基本原理看着挺简单,但是opencv中具体的实现方式看着还挺困难的。今天就说说我理解的地方,有很多不太理解的还得以后深入学习时候再补充。基本原理:分水岭实则为两个盆地的交界处,通过在每个盆地中浸水的方式产生分割边界,两个盆地快要混合到一起的那个边界即为分割边界;具体实现方式:通过mark图像(即人工选取初始浸水点)指导浸水过程,通过findConto...
2019-03-15 09:55:32 746
原创 opencv中距离变换函数distanceTransform函数的实现
对于距离图像,图像中每个像素的灰度值为该像素与其邻近模板的距离加上模板上像素值的最小值。一般步骤是:1、将图像转换为二值化;2、第一遍从左上角开始扫描,按行遍历图像,计算下式:3、第二遍从右下角开始,从右向左扫描4、根据上述结果得到最终图像#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/hig...
2019-03-12 12:22:13 2358
原创 thinking C++:第二章数据抽象
看effective C++,越看越不懂,就想着先来看看《thinking in C++》这本书。声明与定义的区别:无论变量还是函数,声明是只告诉计算机叫什么名字,定义是为这个名字分配内存空间。如果仅是声明而不定义,则要用extern,对于变量必须要使用extern,而对于函数,不带函数体的函数名连同参数表或返回值会自动地作为一个声明,所以extern可选。使用预处理器避免对一个结构重...
2019-03-11 20:37:43 149
原创 opencv实现车牌提取
使用边缘检测-形态学-提取矩形区域得到最终的车牌代码和详细解释如下:#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<vector>#include<...
2019-03-11 17:48:59 1887
原创 opencv实现Harris角点检测
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<vector>#include<iostream>#include<algorithm>...
2019-03-11 13:06:14 257
原创 opencv实现Moravec角点检测
原理:检测每个像素边缘一个小的patch与这个patch周围其他patch的相关性,通过平方差之和衡量。示意图如下:算法定义了四个方向,水平方向,垂直方向,45度方向和135度方向,以这4个方向中最小的那个作为该点的角点响应值。公式可定义为:(u,v)=水平方向(0,1),垂直方向(1,0),45度方向(1,1),135度方向(-1,1)代码如下:#include&l...
2019-03-11 10:57:47 593
原创 Effective C++: 构造函数、析构函数和assignment
条款11:要在类内声明一个copy constructor和一个assignment运算符解释:如图,如果没有自定义的拷贝构造函数,当执行赋值时会出现至少两个问题:第一,b原先所指的内存没有释放掉,会永远遗失,出现内存泄漏问题;第二,a和b内含的指针指向相同的字符串,当其中一个离开生存空间,析构函数会删除内存,而此内存目前仍被另一个指针所指。条款12:在constructor中尽量以i...
2019-03-07 15:30:04 268
原创 opencv霍夫变换HoughLines以及HoughLinesP参数含义
void HoughLines( InputArray image, OutputArray lines, double rho, double theta, int threshold, double srn = 0, double stn = 0, ...
2019-03-06 21:55:31 4902
原创 Effective C++:改变旧有的C习惯
为了让自己C++编写更规范一些,准备看一下《Effective C++》这本书,这部分博客也是对这本书的记录。1、尽量用const和inline取代 #define如将#define ASPECT_RATIO 1.653 改为 const double ASPECT_RATIO=1.653将 #define max(a,b) ((a)>(b)?(a):(b)) ...
2019-03-06 14:58:54 164
原创 opencv两种方法实现sobel边缘检测
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>#include<algorithm>using namespace std;u...
2019-03-06 13:39:35 642
原创 opencv实现旋转文本矫正
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>#include<algorithm>using namespace std;u...
2019-03-05 22:24:52 1543
原创 opencv实现高斯模糊
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;using namespace cv;//高斯平...
2019-03-04 14:21:51 668
原创 opencv实现中值滤波
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;using namespace cv;//中值滤...
2019-03-04 13:53:18 352
原创 opencv给图像添加椒盐噪声和高斯噪声
U1和U2可以是随机值,经过上式产生的随机变量Z0,Z1满足标准高斯分布实现代码如下:#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>...
2019-03-03 20:46:59 5518
原创 opencv实现图像卷积
图像的时域卷积相当于频域乘积,代码如下:#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;usin...
2019-03-02 13:21:42 2181
原创 opencv浅拷贝和深拷贝
浅拷贝是只拷贝数据头,不拷贝真实数据,即两个指针指向同一个位置,所以改变一个另一个也会改变。深拷贝指数据头和数据都拷贝,改变一个,另一个不会变。//浅拷贝Mat src2 = src;//深拷贝Mat src3 = src.clone();src.copyTo(src3);...
2019-03-02 13:04:44 224
原创 opencv掩码操作-滤波
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;using namespace cv;//图像掩码的...
2019-02-27 13:32:23 417
原创 opencv实现双线性插值
双线性插值原理如下图:编程如下:#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;using...
2019-02-27 11:30:07 2025
原创 opencv实现最大熵求解
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<iostream>using namespace std;using namespace cv;//计算给定阈...
2019-02-26 19:19:35 760
原创 opencv中直方图操作
灰度直方图主要用到如下函数:void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, SparseMat& hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool ac...
2019-02-26 18:27:06 578
原创 opencv阈值法实现
前一个博客写了Otsu算法的实现,这个博客接着写opencv中自带的阈值实现方法:threshold以及adaptiveThreshold的应用。threshold( const Mat& src, Mat& dst, double thresh,double maxVal, int thresholdType );void adaptiveThreshold( Inpu...
2019-02-18 20:35:25 783
原创 opencv实现otsu算法
int OTSU(Mat src){ int col = src.cols; int row = src.rows; int threshold = 0; //初始化统计参数 int nSumPix[256];//每个像素值的数目 float nProDis[256]; for (int i = 0; i < 256; i++) { nSumPix[i] = 0; ...
2019-02-18 19:51:56 1112
原创 opencv将多张图像放在一张大图里
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<cmath>#include<iostream>#include<vector>usi...
2019-02-18 12:27:39 4326
原创 opencv中Mat、Size、Point等出现的行列对应问题
int main(){ Mat src(5, 6, CV_8UC1); cout << src << endl; cout << "src.rows" << src.rows << endl; cout << "src.cols: " << src.cols &am
2019-02-18 11:46:28 1921 1
原创 opencv遍历图像像素方法总结
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<cmath>#include<iostream>#include<vector>usi...
2019-02-16 19:10:40 1006
原创 opencv中createTrackbar函数的使用
#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/core/core.hpp>#include<cmath>#include<iostream>#include<vector>usi...
2019-02-16 18:11:25 656
原创 opencv鼠标调用函数
opencv可以通过鼠标来执行一些操作,主要用到setMouseCallback这个函数,函数的具体形式如下: void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0) winname:窗口的名字 onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标...
2019-02-16 17:53:23 408
原创 opencv中视频的读取和写入
主要使用VideoCapture类读视频,VideoWriter类写视频,这两个类在highgui头文件中。读视频有两种方法。//方法一VideoCapture capture;// 读取视频文件capture.open("..\\images\\car.avi");// 判断视频流读取是否正确if(!capture.isOpened()){ std::cout <...
2019-02-14 17:55:11 532
原创 opencv中getAffineTransform、getRotationMatrix2D以及warpAffine用法
int main(){ cv::Mat srcImage = cv::imread("E:\\研究生\\学习材料\\学习书籍\\OpenCV图像处理编程实例-源码-20160801\\《OpenCV图像处理编程实例-源码-20160801\\images\\hand1.jpg"); if (!srcImage.data) return -1; cv::imshow("srcImage...
2019-02-14 17:02:52 1504
原创 opencv中step、step1、size、elemSize以及elemSize1区别
int main(){ int matSize[] = {3,4,5}; //mat1有3维,3个面,4行5列组成一个面 Mat mat1(3,matSize,CV_16UC3,Scalar::all(0)); //step[i]表示每一维元素的大小,单位字节 cout << "step[0]: " << mat1.step[0] << endl;...
2019-02-14 16:20:29 925
转载 opencv中getRotationMatrix2D函数原码
cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale ){ angle *= CV_PI/180; double alpha = cos(angle)*scale; double beta = sin(angle)*scale; Mat M(2, 3, CV_64...
2019-02-14 15:42:58 1314
原创 SeqGAN代码解析
#注释全部写在了代码中哦,注意仔细看#主程序,sequence_gan.pyimport numpy as npimport tensorflow as tfimport randomfrom dataloader import Gen_Data_loader, Dis_dataloaderfrom generator import Generatorfrom discrimina...
2018-12-21 16:51:44 4992 7
原创 SeqGAN论文翻译与原理理解 =>SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
摘要:GAN采用判别模型引导生成模型的训练在连续型数据上已经产生了很好的效果,但是有两个limitations,第一,当目标是离散数据时,如文本,不可能文本+1产生梯度信息引导生成器的生成;第二,判别模型只能对完整的序列产生判别信息,对于非完整序列,它并不知道当前的判别结果和未来完整序列的判别结果是否相同。SeqGAN可以解决这两个问题。采用强化学习的reward思想,实行梯度策略更...
2018-12-21 15:17:23 2457
转载 WGAN原理
第一部分:原始GAN问题详细讨论第二部分:WGAN原理第一部分:对于判别器,GAN最小化如下损失函数:其中,Pr表示真实样本分布,Pg表示生成器产生的样本分布。对于生成器,有两个损失函数: 第一种损失函数存在的问题是当判别器最优时,生成器损失函数相当于最小化JS散度,即判别器越优,最小化生成器的loss就越接近于最小化Pr和Pg之间的JS散度。但是问题...
2018-12-15 17:43:31 3315
原创 原始GAN存在的问题
一、判别器非常强,导致loss都是0,不能引导生成器更新,所以可能生成出来的图像和真实图像差别很大,而loss仍然是0原因1、我们是近似采样,并不能对原始数据全部采样loss如下: 说明从两个分布采样的数据没有重合区域,但是其实两组数据之间有重合,只是判别器太强了,可以找到一条线将两组数据分开,如图所示。图上的点是两个分布的采样数据,因为我们并不知道分布,只能对分...
2018-12-07 14:56:17 3447 1
原创 用DCGAN训练自己的数据集
第一步:读入数据import tensorflow as tfimport numpy as npimport osimport matplotlib.pyplot as pltimport pdbdef get_files(file_dir): img=[] label=[] for file in os.listdir(file_dir): ...
2018-12-05 20:39:21 9486 2
原创 GAN及DCGAN的tensorflow实践
原理: 生成式对抗网络(generative adversarial network, GAN)是生成模型中的一种,可以自动学习原始图像的数据分布,而不需要提前假设原始数据属于哪种分布,只是不知道参数。GAN基于博弈论场景,由生成器网络和判别器网络构成,生成器网络用来从随机噪声数据中生成近似真实数据分布的样本,供判别器网络使用;判别器网络对真实数据和由生成器网络得到的假数据进行判...
2018-12-04 16:30:08 501
转载 tensorflow: name_scope和variable_scope
两个都是用来指定命名空间的.区别1:name_scope不会为变量增添原始命名空间,variable_scope会给定义的变量增加原始命名空间,举例如下:with tf.name_scope('V1'): a1=tf.get_variable(name='a1',shape=[1],initializer=tf.constant_initializer(1)) pri...
2018-12-04 11:30:21 157
原创 tensorflow: tf.Variable()和tf.get_variable()区别
tf.Variable()定义一个变量tf.Variable(1,name='a1')tf.Variable(tf.constant(1),name='a2')tf.Variable(tf.random_normal(shape=[2,3],mean=0,stddev=1),name='a3')tf.Variable(tf.ones(shape=[3,3]),name='a4')...
2018-12-02 18:41:18 147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人