- 博客(33)
- 资源 (1)
- 收藏
- 关注
原创 膨胀腐蚀开运算闭运算
#include <iostream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main(){ Mat image, binary, eroded, dilated; image = imread("D:/image/group.jpg", 0); //二值化,取反
2017-10-19 19:53:16
380
原创 直方图的均衡化
#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat image = imread("D:/group.jpg", 0); MatND hist; const int channels[] = { 0 }; co
2017-10-19 19:00:48
207
原创 calcHist()直方图
#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;int main(){ Mat image = imread("D:/group.jpg", 0); MatND hist; const int channels[] = { 0 }; co
2017-10-19 18:38:57
316
原创 10.3视频帧处理
1.函数介绍 颜色空间转换:void cvtColor( InputArray src, //输入序列 OutputArray dst, //输出序列 int code, //颜色映射码 CV_BGR2GRAY(RGB变为灰度) int dstCn = 0 );
2017-10-17 10:45:45
244
原创 文章标题
#include <iostream>#include <vector>#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/features2d/features2d.hpp>#includ
2017-10-14 22:18:34
146
原创 8.3检测FAST特征
代码:#include <iostream>#include <opencv2\opencv.hpp>using namespace std;using namespace cv;int main(){ Mat image = imread("D:/house.jpg", 0); vector<KeyPoint> keypoints; //cv::FastFeatur
2017-10-14 22:00:50
321
原创 8.2检测Harrris角点
Harris角点检测: void cornerHarris(InputArray src, OutputArray dst, int blockSize, int ksize, double k, int borderType=BORDER_DEFAULT) 参数详解: src image输入图像。 dst harris_responce 存储哈里斯(Harris)检测responces的图
2017-10-14 20:35:34
299
原创 7.6计算联通区域的形状描述
包围盒:水平放置的最小包围矩形。 Rect boundingRect( InputArray points ) 最小包围圈: void minEnclosingCircle( InputArray points, CV_OUT Point2f& center, CV_OUT float& radius ); 多边形
2017-10-13 23:32:07
225
原创 7.5提取联通区域的轮廓
提取白色区域的轮廓 void findContours( InputOutputArray image, OutputArrayOfArrays contours, int mode, int method, Point offset = Point()); 第一个参数:image但更常用的是二值图像,一般是经过Canny、拉普拉斯等
2017-10-13 21:12:42
453
原创 7.4用直线拟合一组点
获取直线的位置和方向的精确估计,解决直线拟合的问题。 思想: 用HoughlinesP检测直线,将直线保存在lines中,获取Canny图像并获取lines与canny图相交的点集,再用点集拟合直线。 代码:#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <open
2017-10-13 09:25:31
643
原创 7.3霍夫变换
霍夫变换可以实现任何由参数方程描述的几何体的检测。 1.检测直线 原理:霍夫变换基于二值图像,寻找经过每个单独像素点的所有直线,当直线经过足够多的像素点,则这个直线的存在足够明显。 void HoughLines( InputArray image, OutputArray lines, double rho, double theta, int threshold, dou
2017-10-12 17:17:14
175
原创 第六章 Canny算子
Canny算子(基于sobel) 1.消除噪声。 普通情况下,使用高斯平滑滤波器卷积降噪。 2.计算梯度幅值和方向。 此处,依照Sobel滤波器的步骤。 3.非极大值抑制。 这一步排除非边缘像素, 仅仅保留了一些细线条(候选边缘)。 4.滞后阈值。最后一步,Canny 使用了滞后阈值,滞后阈值须要两个阈值(高阈值和低阈值): Ⅰ.假设某一像素位置的幅值超过 高 阈值, 该像素被保
2017-10-11 19:19:11
742
原创 第六章图像滤波 方向滤波器边缘检测
Sobel滤波器 void Sobel( InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0,
2017-10-09 21:55:02
3133
原创 第六章 图像滤波 中值滤波器
中值滤波器对于去除椒盐噪声十分有用 void medianBlur( InputArray src, OutputArray dst, int ksize ); int类型的ksize,孔径的线性尺寸(aperture linear size),注意这个参数必须是大于1的奇数,比如:3,5,7,9 … 中值滤波(Median filter)是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度
2017-10-09 20:20:09
672
原创 第六章图像滤波低通滤波器
在频域分析的框架下,滤波操作的作用是增强部分频段,同时限制其他频段。 6.2 低通滤波器 降低图像变换的幅度 箱式滤波器:将每个像素替换为相邻像素的平均值。 cv::blur()将像素替换为相邻矩形内像素的平均值 void blur( InputArray src, OutputArray dst, Size ksi
2017-10-09 20:02:52
904
原创 类的友元
友元函数:为了使类外函数直接访问该类的私有成员和保护成员 例如,在A的类中定义func1()友元函数如下:class A{public: int x; // 公有成员xprotected: int y; // 保护成员yprivate: int z; // 私有成员zA(int p1=0, int p2=0, int p3=0) { x = p1; y = p2; z = p3; }
2017-10-09 15:38:23
211
原创 C++ 类的常成员和静态成员
对象的动态分配:matrix *matrixp; //定义对象指针matrixp = new matrix; //用数据类型分配空间,用new是用堆分配空间需要deletedelete matrixp;matrixp = new matrix(); //自动调用构造函数,自动调用析构delete matrixp;matrixp = new matrix
2017-10-09 13:03:14
346
原创 opencv学习笔记之5.4使用形态学滤波进行边缘和角点检测
检测直线:原图膨胀-原图腐蚀 角点检测:result1 = 膨胀(十字)+腐蚀(菱形)(对原图进行的连续形态学滤波) result2 = 膨胀(x 型 )+腐蚀(方形)(对原图进行的连续形态学运算) result = abs(result1 - result2) 在MorphoFeatures.cpp文件里定义的class
2017-10-03 16:59:34
219
原创 opencv学习笔记第五章 使用形态学滤波对图像进行开闭运算
开运算:先腐蚀再膨胀,去掉小白点 闭运算:先膨胀再腐蚀,去掉小黑点void morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor = Point(-
2017-10-01 17:35:59
471
原创 opencv学习笔记第五章:基于形态学运算的图像变换(1)形态学运算进行腐蚀和膨胀
腐蚀和膨胀是最基本的形态学运算。数学形态学最基本的工具是结构元素。结构元素简单的定义为像素的结构(形状)以及一个原点(锚点)。使用形态学滤波涉及对图像的每个像素应用这个结构元素。当结构元素的原点与给定的像素对齐,它与图像相交部分定义了一组进行形态学运算的像素。腐蚀:每个像素与结构相交的集合替换成最小的像素值膨胀:每个像素与结构相交的集合替换成最小的像素值void erode( Inpu
2017-10-01 15:58:12
257
原创 opencv学习笔记第四章 图像的均值化
图像在视觉上的缺陷在多数情况下不是像素强度范围过窄,而是因为像素强度频率分布不均。一副高质量的图片应该平均使用所有的像素强度。void equalizeHist( InputArray src, OutputArray dst );#include #include #include "opencv2/opencv.hpp"#include "histogram.h"
2017-10-01 10:22:47
534
原创 opencv学习笔记第四章 计算图像的直方图
直方图:图像像素值的统计表。灰度图像有256个条目(容器)获取直方图:void calcHist( const Mat* images, int nimages, const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize, const float** ranges, bool
2017-10-01 09:46:58
293
原创 opencv学习笔记 二 操作像素
第二章: 操作像素2.1引言:灰度图像像素由8位无符号数来表示,0表示黑色,255表示白色。彩色图像(RGB)像素由三个8位的无符号数来表示,存储方式为三元数(B,G,R)2.2存取像素值Mat类有若干成员和成员函数来获取图像的属性:成员cols和rows表示 宽和高(列和行)成员函数 at(int i, int j)可以用来存取像素image.at(i,j);
2017-09-24 22:05:21
591
原创 opencv学习笔记 一 载入、显示和保存图像
预备知识:opencv2用cv::Mat类型来声明表示图像的变量。例如:cv::Mat image; //建立高度和宽度为0的图像,默认尺寸为0 也可以指定初始尺寸Mat image(240,320,CV_8U,Scalar(100)); //CV_8U表示8位无符号整形Mat容器内元素的数据类型介绍CV_(S|U|F)C 1--bit_depth---比特数
2017-09-23 17:46:06
248
原创 Mat类编写矩阵乘法和加法操作
#include #include "opencv2/opencv.hpp"using namespace std;using namespace cv;Mat Inputmatrix(void){ int row, column; float element; cout << "please input the first matrix(size):"; cin >> row
2017-09-22 20:38:14
644
原创 C++拷贝构造函数的理解
题目:用类定义的方法完成矩阵的加法和乘法matrix.h文件#pragma once#ifndef MATRIX_H#define MATRIX_Hclass matrix{public: int row; int column; int * matrixp; matrix(void); //matrix(const matrix &matrix1); ~mat
2017-09-21 20:42:22
277
原创 构造.析构.深拷贝和浅拷贝
1. 类与对象的编译原理每个对象所占用的内存空间都等于类中全部数据成员所需内存空间的总和多个同类对象共用同一个函数,内存中只需要保存一份函数代码 对象函数成员编译时,编译器会给函数成员添加对象指针 this2.对象的构造和析构变量在内存的生存期 全局变量:静态分配的,程序开始立即分配,结束结束时释放 局部变量:动态分配的,定义的代码块内生效
2017-09-18 16:19:54
480
转载 C++ const用法
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 1 #include 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-const da
2017-09-14 19:12:03
139
原创 C到C++基础
C++语言的新语法:1.数据的输入和输出2.变量的初始化以及常变量3.引用以及函数间参数的引用传递4.几种特殊形式的函数5.命名空间6.动态内存分配
2017-09-11 21:11:13
323
原创 C语言之结构体指针
第二次掌握指针和结构、文件的结合使用。掌握形参与实参首先通过读书,掌握c语言文本文件的基本概念和基本操作。熟悉文本文件的读写及fopen/fclose,fscanf/fprintf等函数。上机练习1:将几个数字及字符串写入文件。读出并显示。通过读书,掌握结构的基本概念;学习和实践结构数组,结构指针概念。上机练习2:将矩阵表示为结构,成员包括:矩阵行数,列数,及指向矩阵具
2017-09-08 20:26:39
483
原创 C语言的二维指针及其动态内存分配和释放
要求:初步掌握visual studio 2015 中控制台c程序的建立。结合课本讲解指针概念;指针上机练习。讲解动态分配和释放。一维指针动态分配和释放练习。二维指针概念讲解,二维指针动态分配和释放练习。作业:矩阵乘法用户输入矩阵1行数、列数,然后提示用户输入各元素;用户输入矩阵2行数、列数,然后提示用户输入各元素;输入后计算相乘结果矩阵。要求:1 自己安装Visu
2017-09-08 19:54:32
3630
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人