![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
青山渺渺
Android Framework、Android Media开发工程师,关注公众号《青山渺渺》阅读更多内容
展开
-
OpenCV - Mat、滤波、卷积的实现
1、Mat数据类型//创建图像Mat M(2, 2, CV_8UC3, Scalar(0, 0, 255));//改变图像尺寸M.create(4, 4, CV_8UC2);//快速创建图像的集中方法Mat E = Mat::eye(4, 4, CV_64F);Mat F = Mat::ones(2, 2, CV_32F);Mat G = Mat::zeros(3, 3, ...原创 2019-01-23 19:11:52 · 984 阅读 · 0 评论 -
OpenCV - 车牌识别新手入门级讲解
目录0、引言1、MFC中的车牌显示2、车牌定位3、字符提取4、文字识别5、文字预测0、引言 第一次使用OpenCV完成一个完整的功能,有所收获,特此记录。 这篇博客中的车牌识别功能比较简单,只能识别一般的蓝色车牌,只能识别拍摄较为清楚的车牌。以后可以在此基础上实现更加高级的功能,比如识别较为糟糕环境中的车牌,同时识别多个车牌,识别黄色...原创 2019-04-23 19:43:31 · 4002 阅读 · 3 评论 -
OpenCV - MFC/QT中使用opencv
第一次使用MFC,用来为接下来的小工程搭建GUI界面。1、创建好工程后,图形界面在资源视图的IDD_名称_DIALOG,点开就可以拖控件了,控件都在工具箱中。2、右键控件可以打开属性,其中Caption属性可以用来更改控件显示的文本,每个控件都有一个ID和Name3、双击控件就可以添加事件了,删除控件的时候需要删除3个地方(1)控件本身、(2)注册的事件、(3)BEGIN_MESSAG...原创 2019-04-15 09:13:43 · 512 阅读 · 0 评论 -
OpenCV - HOG特征与行人检测
HOG特征即方向梯度直方图(Histogram of Oriented Gradient, HOG)是一种常用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。OpenCV中本已经自带了该实现。HOG的实现步骤还是不太难的,帮助理解的博客:https://blog.csdn.net/shenziheng1/article/details/72581992我不信你看不懂!顺带知道了图像的...原创 2019-04-17 15:06:15 · 464 阅读 · 1 评论 -
OpenCV - 人工神经网络ANN的实现以及图像分割
人工神经网络(artificial neural network)可谓玄乎,这边也不做一个详细解释。那大概是个什么工作原理呢?经常可以看见神经网络的网络图,每一层都有很多圈圈,那这些圈圈是什么呢?人工神经网络每一层都指的是特征,层数不同,特征的深度也就不同。比如第一层2个圈,即2个输入那就是样本有两个特征作为输入,到了第二层有3个圈了,那就是前面一层的2个特征根据不同的权重组合成了这3个特征。...原创 2019-04-17 13:32:47 · 1416 阅读 · 0 评论 -
OpenCV - SVM算法原理实现以及SVM图像分割
支持向量机的原理这里也就不阐述了,我也不太会。我大概的理解就是和KNN一样是个分类器,可以想象以下,两类样本点可以用很多条线分开,但是那一条是最优呢?支持向量机中利用支持向量(可能是样本中的几个点,具体怎么取这个向量不需要我们考虑),然后计算支持向量到分割线的距离,距离最大的那条分界线那就是最优分类了。所以SVM中用的是间隔最大化思想。参数设置支持向量机只有一成为一个很强的算法,是因为它能...原创 2019-04-17 10:55:55 · 4362 阅读 · 0 评论 -
OpenCV - KNN的使用、手写数字识别、图像分割的应用
KNN算法即K最近邻算法(K-NearestNeighbors),是一种相对较为简单的机器学习算法。对于KNN算法接口的使用我一直有疑问,train完之后存储的都是什么东西?参考其他博客知道了KNN是一种懒惰算法,所谓懒惰算法就是,只有当新的样本出现时,该算法才会根据原始的训练样本对新样本进行预测处理工作,所以train完之后,保存的xml文件其实仍然保留了原始的训练样本。与懒惰学习算法相...原创 2019-04-16 15:26:49 · 1968 阅读 · 2 评论 -
OpenCV - 区域生长法、均值迭代、OSTU、最大熵分割方法
1、区域生长法区域生长法是一种基于广度优先的分割方法,实现方法如下:/** *@brief 区域生长法,输入图像应为灰度图 *@para srcImg 区域生长原图像 *@para pt 种子点 *@para thre 阈值**/void RegionGrowing(Mat srcImg, Mat& dstImg, Point pt, int thre){ // ...原创 2019-04-12 21:41:05 · 2482 阅读 · 0 评论 -
OpenCV - 均衡直方图、Log变换、伽马变换3种图像增强方法
所谓图像增强就是把对比度低,看不清楚的图片处理成为对比度高,比较清楚的图片。下面有三种增强方式,其中log和gamma变换是要自己实现的,效果的好与坏是需要自己调整参数的!!!!1、均衡直方图上图中图像灰度集中在100-200的区域内,显得灰蒙蒙的,在在经过均衡直方图的处理后,图像灰度均匀分布在0-255的区域内,变得清晰很多。均衡直方图在opencv种直接有接口,效果如下:...原创 2019-04-12 16:55:56 · 3237 阅读 · 0 评论 -
ReinHard颜色迁移
看到颜色迁移,觉得还蛮有意思的,遂简单看了一下,代码实现好像有错误,但是不知道错误出在哪里。算法参考:https://blog.csdn.net/sin_geek/article/details/22443537https://blog.csdn.net/sin_geek/article/details/22325229代码实现:希望有高手指出我的错误理论效果:// ...原创 2019-03-23 15:52:42 · 1071 阅读 · 1 评论 -
OpenCV - 分水岭算法的实现
本文参考:http://doc.okbase.net/wenhao_ir/archive/248529.html本篇博文介绍利用分水岭进行图像分割的方法。它是一种区域分割法,区域分割法利用图像的空间性质,以像素点之间的相似性为依据,根据不同的分割准则进行图像分割。这样能弥补阈值、边缘检测、轮廓检测中忽略像素点空间关系的缺点。分水岭算法应用于图像分割领域,不仅能够保留了一些传统分割方法的普遍...原创 2019-03-22 15:57:41 · 942 阅读 · 0 评论 -
Opencv - 矩阵运算
1、OpenCV中是带有图像的加减乘除的运算的//效果等于src1 + src2void add(InputArray src1, InputArray src2, OutputArray dst, InputArray mask=noArray(), int dtype=-1);void subtract(InputArray src1, Inpu...原创 2019-03-22 12:46:10 · 379 阅读 · 0 评论 -
OpenCV - 灰度直方图绘制
以下为借鉴的图像直方图的绘制方法,做此纪录:参考:https://blog.csdn.net/sinat_36264666/article/details/78754897void calcHist( const Mat* images, int nimages, const int* channels, InputArray mas...原创 2019-03-22 10:33:58 · 1519 阅读 · 0 评论 -
OpenCV - OTSU二值化分割
其实OpenCV中内置了这个二值化算法,在Threshold方法中double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );/*阈值类型有如下几种: 0:二进制阈值化--THRESH_BINARY 1:反二进制阈值化--THRESH_BINARY_INV...原创 2019-03-21 16:26:16 · 3451 阅读 · 2 评论 -
OpenCV - 基本知识
1、读取并显示图片,namedWindow新建一个显示窗口,imshow输出图片,namedwindow可有可无 Mat image = cv::imread("E:\\其他文档\\图片\\2.jpg", 2); cv::namedWindow("照片",CV_WINDOW_AUTOSIZE); cv::imshow("照片", image);//照片窗口中显示图片...原创 2019-01-23 16:34:05 · 247 阅读 · 0 评论 -
OpenCV - 回调函数
之前的区域生长法需要预先设置种子点,实际运用中十分麻烦,那我们怎么样才能获取种子点呢。接下来就像了一种通过鼠标回调函数的方法实现取种子点来实现区域生长法。回调函数不会被显式地调用,但是会在响应特定事件(这里是指有关鼠标与图像窗口交互的事件)的时候被程序调用。为了能被程序识别,回调函数需要具有特定的签名,并且必须注册。对于这种鼠标事件处理函数,回调函数必须具有这种签名: void onMou...原创 2019-01-22 15:39:04 · 680 阅读 · 0 评论 -
区域生长法快速入门,不带种子点的选取
这里实现的区域生长法,是最原始的区域生长法,基本原理是判断像素点的强度值是和种子点的强度值差是否小于阈值,如果小于阈值则被标记。实现过程中利用了栈的先进后出的思想,将8邻域中符合生长要求的点压入栈,然后依次取出,然后在取出的点的基础上对8邻域再次进行生长。学习部分1、获取像素点坐标值分成两种,第一种是利用指针来取值的,第二种是利用点来访问强度值的,可以使用pt点,也可以使用x,y的...原创 2019-05-05 08:15:40 · 4536 阅读 · 0 评论 -
VS2017配置OpenCV
OpenCV的配置分为3步1.首先创建一个工程,然后打开属性管理器,右键debug|x64属性,点击VC++目录,向包含目录和库目录添加路径2.包含目录包含3个路径,include以及include下的opencv和opencv2两个文件夹 库目录知道添加到VC15下的lib文件夹就行了3.点击属性页的连接器 -> 输入。向附加依赖项中添加opencv_world340d...原创 2019-01-22 10:29:46 · 222 阅读 · 0 评论 -
OpenCV - 人脸识别
本节不做过多的详细解释,因为代码段中用到的级联分类器是opencv中自己已经训练好的。以后有空了自己会自己训练看看。int main(){ VideoCapture cap(""); //输入的为0开启摄像头 CascadeClassifier cascade; cascade.load("haarcascade_frontalface_alt.xml"); bool sto...原创 2019-04-24 10:08:24 · 303 阅读 · 0 评论