![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv学习
love_image_xie
这个作者很懒,什么都没留下…
展开
-
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 · 878 阅读 · 0 评论 -
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 · 1510 阅读 · 0 评论 -
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 · 628 阅读 · 0 评论 -
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 · 1958 阅读 · 0 评论 -
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 · 400 阅读 · 0 评论 -
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 · 5470 阅读 · 0 评论 -
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 · 4833 阅读 · 0 评论 -
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 · 337 阅读 · 0 评论 -
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 · 645 阅读 · 0 评论 -
opencv 分水岭算法详细理论+实践
分水岭算法看了两天了,基本原理看着挺简单,但是opencv中具体的实现方式看着还挺困难的。今天就说说我理解的地方,有很多不太理解的还得以后深入学习时候再补充。基本原理:分水岭实则为两个盆地的交界处,通过在每个盆地中浸水的方式产生分割边界,两个盆地快要混合到一起的那个边界即为分割边界;具体实现方式:通过mark图像(即人工选取初始浸水点)指导浸水过程,通过findConto...原创 2019-03-15 09:55:32 · 579 阅读 · 0 评论 -
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 · 1948 阅读 · 0 评论 -
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 · 574 阅读 · 0 评论 -
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 · 236 阅读 · 0 评论 -
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 · 1848 阅读 · 0 评论 -
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 · 722 阅读 · 0 评论 -
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 · 1488 阅读 · 0 评论 -
opencv中视频的读取和写入
主要使用VideoCapture类读视频,VideoWriter类写视频,这两个类在highgui头文件中。读视频有两种方法。//方法一VideoCapture capture;// 读取视频文件capture.open("..\\images\\car.avi");// 判断视频流读取是否正确if(!capture.isOpened()){ std::cout <...原创 2019-02-14 17:55:11 · 511 阅读 · 0 评论 -
opencv鼠标调用函数
opencv可以通过鼠标来执行一些操作,主要用到setMouseCallback这个函数,函数的具体形式如下: void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0) winname:窗口的名字 onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标...原创 2019-02-16 17:53:23 · 372 阅读 · 0 评论 -
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 · 621 阅读 · 0 评论 -
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 · 976 阅读 · 0 评论 -
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 · 1878 阅读 · 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-18 12:27:39 · 4291 阅读 · 0 评论 -
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 · 1092 阅读 · 0 评论 -
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 · 755 阅读 · 0 评论 -
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 · 1269 阅读 · 0 评论 -
opencv浅拷贝和深拷贝
浅拷贝是只拷贝数据头,不拷贝真实数据,即两个指针指向同一个位置,所以改变一个另一个也会改变。深拷贝指数据头和数据都拷贝,改变一个,另一个不会变。//浅拷贝Mat src2 = src;//深拷贝Mat src3 = src.clone();src.copyTo(src3);...原创 2019-03-02 13:04:44 · 208 阅读 · 0 评论 -
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 · 2155 阅读 · 0 评论 -
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 · 542 阅读 · 0 评论 -
opencv中距离变换函数distanceTransform函数的实现
对于距离图像,图像中每个像素的灰度值为该像素与其邻近模板的距离加上模板上像素值的最小值。一般步骤是:1、将图像转换为二值化;2、第一遍从左上角开始扫描,按行遍历图像,计算下式:3、第二遍从右下角开始,从右向左扫描4、根据上述结果得到最终图像#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/hig...原创 2019-03-12 12:22:13 · 2296 阅读 · 0 评论