自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于对数变换和非线性变换的图像增强(图像亮度调节)

使用C++、opencv实现对图像的对数变换及非线性变换,实现图像增强相关API:void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )normaliz...

2019-05-13 16:24:01 5676 2

原创 调节彩色图像亮度(基于不同的颜色空间)

使用C++、opencv基于不同的颜色空间调节图像亮度该博客简单介绍了RGB、YUV、HSI等颜色空间的相关知识,并附RGB转到另两个颜色空间的转换公式:https://www.cnblogs.com/justkong/p/6570914.htmlhttps://blog.csdn.net/sinat_26917383/article/details/70860910及https://w...

2019-05-11 19:33:02 5153

原创 计算轮廓的特征参数(周长、面积、圆形度、周径比等)

使用C++、opencv计算轮廓的周长、面积、圆形度、周径比等特征参数图像的特征参数用于图像的模式识别(图像识别),获取越多种类的特征参数,可从中选择合适的进行组合,进而更好地区分各个物体。之前介绍过获取图像的灰度共生矩阵(https://blog.csdn.net/Lemon_jay/article/details/89455887)、不变矩(https://blog.csdn.net/...

2019-04-25 17:22:38 16485 3

原创 opencv处理视频文件

使用C++、opencv处理视频文件视频也可以理解为图像,只不过是大量的图像一张一张联系在一起,即视频的一帧一帧,视频的每一帧都是一副图像,所以对视频的处理等同于处理图像,只不过需要对视频的每一张(每一帧)图像都进行处理。opencv中使用VideoCapture类读取视频文件,而不再是Mat,但视频文件的每一帧还是Mat类型。可从一个小示例中学习一下视频文件的处理:#inclu...

2019-04-24 19:50:11 3417

原创 图像的仿射变换

使用C++、opencv进行图像的仿射变换仿射变换(Affine Transformation或Affine Map),又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图形的“平直性”(直线经过变换之后依然是直线)和“平行性”(二维图形之间的相对位置关系保持不变,平行线依然是平行线,且直线上点的位置顺序不变)。更多仿射变换的原...

2019-04-23 17:58:50 973

原创 光流法(optical flow)运动检测

使用C++、opencv、光流法进行运动目标检测关于光流法的原理可参考:https://blog.csdn.net/pannn0504/article/details/78357607https://www.jianshu.com/p/144e6f8ca3b2https://blog.csdn.net/qq_22194315/article/details/79347726(较详...

2019-04-23 17:13:44 4240

原创 查找轮廓的内切圆

使用C++、opencv查找轮廓的内切圆相关API:double threshold(InputArray src, OutputArray dst, double thresh,double maxval, int type)threshold()函数的作用是根据阈值对图像进行二值化第一个参数,InputArray类型的src,输入数组,填单通道,8或32位浮点类...

2019-04-23 11:53:23 4411 3

原创 使用K-means聚类方法分割图像

使用C++、opencv中的Kmeans进行图像分割K-means算法的原理K-means算法是基于距离相似性的聚类算法,通过比较样本之间的相似性,将形式的样本划分到同一个类别中,K-Means算法的基本过程为:初始化常数 ,随机初始化k个聚类中心。 重复计算以下过程,直到聚类中心不再改变: 计算每个样本与每个聚类中心之间的相似度,将样本划分到最相似的类...

2019-04-22 21:18:15 5275 2

原创 矩形框裁图

用C++、opencv2.4之前版本写的一个矩形框裁图的代码,现在很多截图软件,应该用不上了,但是可以学习一下处理思路。代码如下:#include "stdafx.h"#include "cv.h" #include "highgui.h" #include <stdio.h> #include <cv.h> #include <highg...

2019-04-22 18:43:59 877

原创 获取图像的Hu不变矩

使用C++、opencv获取图像的Hu不变矩 矩函数在图像分析中有着广泛的应用,如模式识别、目标分类、目标识别与方位估计、图像编码与重构等。一个从一幅数字图形中计算出来的矩集,通常描述了该图像形状的全局特征,并提供了大量的关于该图像不同类型的几何特性信息,比如大小、位置、方向及形状等。图像矩的这种特性描述能力被广泛地应用在各种图像处理、计算机视觉和机器人技术领域的目标识别与方位估...

2019-04-22 18:23:05 2885

原创 灰度共生矩阵

使用C++、opencv获取图像的灰度共生矩阵,即能量、熵、对比度、逆差矩等图像特征参数灰度共生矩阵,指的是一种通过研究灰度的空间相关特性来描述纹理的常用方法,通俗的说就是图像的一组关于纹理信息图像特征(能量、熵、对比度、逆差矩),可以将纹理数字化。灰度共生矩阵的原理和四个特征参数的计算公式可参考博客:https://blog.csdn.net/zhangxz259/article/de...

2019-04-22 17:18:36 5758 1

原创 图像的阈值分割

使用C++、opencv对图像进行简单的阈值分割对图像进行颜色的阈值分割,往往不知道阈值设置为多少合适,需要不断测试,针对此问题,设置了阈值的滑动条,从而可以通过滑动滑动条快速找到阈值。最常见的阈值分割即为R、G、B的阈值分割,即判断像素点的R、G、B值是否大于或小于某一阈值,满足条件的点就保留或删除。本代码阈值分割的算法是直接按行按列依次遍历图像每个像素点,判断像素点的值是否满足分割...

2019-04-22 16:24:12 3345

原创 使用高斯混合模型(GMM)分割图像

使用C++、opencv中的高斯混合模型(GMM)进行图像分割关于GMM聚类的原理及过程可参考博客:https://blog.csdn.net/lin_limin/article/details/81048411使用聚类的方法分割图像,即将图像的像素点值(通常用彩色图像,像素点值为一个三元数组(b,g,r))作为聚类的元素,从而将图像中所有的点分为n类,达到分割的效果。代码:#i...

2019-04-20 11:07:24 7069 1

原创 图像的傅里叶变换(将图像转为频率域再进行角度校正)

使用C++、opencv对图像进行傅里叶变换,再根据频谱图对原图进行旋转 离散傅里叶变换(Discrete Fourier transform,缩写为DFT),是指傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DIFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即...

2019-04-19 18:05:36 10205 9

原创 前景检测(运动检测)

使用opencv进行视频的前景检测,也可作为运动检测代码:#include "stdafx.h"#include "opencv2/core.hpp"#include <opencv2/core/utility.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/video/background_s...

2019-04-19 12:12:16 2118 3

原创 使用自定义内核给图像做卷积操作

使用C++、opencv创建自定义内核(卷积核),使用内核给图像做卷积操作关于图像卷积的原理及知识可参考博客https://www.cnblogs.com/bithuaning/p/6924978.html,说的非常详细。opencv中的相关API:void filter2D( InputArray src, OutputArray dst, int ddepth, ...

2019-04-19 11:32:06 2501 1

原创 图像分割之分水岭算法

使用C++、opencv进行分水岭分割图像分水岭概念是以对图像进行三维可视化处理为基础的:其中两个是坐标,另一个是灰度级。基于“地形学”的这种解释,我们考虑三类点:a.属于局部性最小值的点,也可能存在一个最小值面,该平面内的都是最小值点b.当一滴水放在某点的位置上的时候,水一定会下落到一个单一的最小值点c.当水处在某个点的位置上时,水会等概率地流向不止一个这样的最小值点对一个特...

2019-04-17 15:18:59 40975 12

原创 图像特征之傅里叶描述子

使用C++、opencv获取轮廓的傅里叶描述子傅里叶描述子是一种图像特征,具体来说,是一个用来描述轮廓的特征参数。其基本思想是用物体边界信息的傅里叶变换作为形状特征,将轮廓特征从空间域变换到频域内,,提取频域信息作为图像的特征向量。即用一个向量代表一个轮廓,将轮廓数字化,从而能更好地区分不同的轮廓,进而达到识别物体的目的。关于傅里叶描述子的概述可参考论文(http://www.doc88....

2019-04-17 11:08:29 29257 27

原创 Harris与ShiTomasi角点检测

#include "stdafx.h"#include <iostream>#include <vector>#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"using namespace cv;using namespace std;//全局变量Ma...

2019-04-16 12:22:38 265

原创 Canny边缘检测+孔洞填充

使用C++、opencv进行边缘检测+空洞填充相关重要API:Mat getStructuringElement(int shape, Size esize, Point anchor = Point(-1, -1));getStructuringElement函数会返回指定形状和尺寸的结构元素,返回类型为Mat第一个参数表示内核的形状,有三种形状可以选择:矩形:MORPH...

2019-04-16 11:01:36 5807 1

原创 边缘检测(Canny、Sobel、Scharr)

C++、opencv处理图像之边缘检测(Canny、Sobel、Scharr),带滑动条可调节Canny和Sobel的参数opencv中Canny、Sobel、Scharr函数参数意义:void Canny(InputArray image,OutputArray edges, double threshold1, double threshold2, int apertureSize=...

2019-04-15 16:55:36 2120

原创 给图像加logo(不同大小图像叠加)

opencv中定义矩形:Rect(x,y,width,height)opencv中的Rect类的成员变量有x、y、 width、 height,分别为左上角点的坐标和矩形的宽和高。常用的成员函数有: Size()返回值为Size;area()返回矩形的面积;contains(Point)判断点是否在矩形内; inside(Rect)函数判断矩形是否在该矩形内;tl()返回左上角点坐...

2019-04-15 16:17:21 2477 2

原创 C语言指针知识点(三):指针数组与数组指针

1.指针数组即指针的数组,本质是一个数组,数组的每个元素都是指针变量 定义指针数组,含有4个元素,每个元素都是一个char *类型的指针,指向字符串char *p[] = { "lemon","C language","hello world","=.=!" };直接将p[0],p[1]等当作普通指针使用:for (int i = 0; i &lt; sizeof(p...

2018-10-11 17:05:10 1241

原创 二维数组的首地址、首行地址和元素地址

首先定义一个简单的三行四列的数组:int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; 其中:a代表第0行的首地址,其步长为一行的长度(16B),所以a+1代表第1行的首地址,比a大16;a+2代表第2行的首地址,比a大32 printf("a=%d  a+1=%d  a+2=%d\n", a, a+1,a+2);&amp;a[...

2018-10-11 10:39:44 23086 17

原创 C语言指针知识点(二):指针在函数的输入、输出时 的性质

主调函数可以把栈区、堆区、全局区的数据地址传给被调函数;被调函数只能返回堆区和全局区的数据及地址。 指针作为函数的传入参数,由主调函数分配内存;指针作为函数的输出时,由被调函数分配内存。 如果想通过形参改变实参的内容,必须地址传递(C中,C++中还可以通过引用的方式)。#include "stdafx.h"#include &lt;iostream&gt;void fun1(c...

2018-10-03 16:03:41 2438

原创 C语言指针知识点(一):字符指针(char *)及其格式输出(%c%d%s等)

类型是分配内存块大小的别名,即类型(int,double,char)的作用就是分配相对应大小的内存,并给程序员一个名字(int,double,char)方便操作; 指针也是一种数据类型,定义时可以对其赋值(可赋任意地址值,但习惯赋值为NULL,方便操作管理),而操作符*是对指针所指示的地址上的数据进行操作,即不用*操作,改变的将会是地址变量的值,而不是地址变量所指的值。  ...

2018-10-01 17:12:14 54463 3

C++模拟11选5彩票

使用C++,以时间做种子,模拟11选5彩票,种子可以更换,提供一种研究彩票的手段

2017-12-01

空空如也

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

TA关注的人

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