
Opencv学习
ShaYX1991
从事软件设计开发的热情小白!
展开
-
第一章 Opencv概述
第一章 OpenCv概述1 什么是OpenCv OpenCv是一个开源的计算机视觉库,该项目由Gary Bradski带头启动,OpenCv库使用C和C++语言编写,并进行了深度的优化,内部许多函数都使用多线程进行加速。可在Windows、linux、MacOS X等系统上运行。OpenCv的一个目标是提供易于使用的计算机视觉库,从而帮助人们快速建立精巧的视觉应用。OpenCv库包含...原创 2018-12-19 21:51:46 · 1175 阅读 · 1 评论 -
Opencv实战4 对象计数
对象计数4.1 题目 如图数出下图的玉米种子的数量#### 4.2 思路 这个案例的难点在于有的玉米粒是靠在一起的,不然的话直接轮廓查找就能搞定了。基本指导思想就是把玉米粒都分开,分成一粒原创 2019-01-24 20:49:39 · 2654 阅读 · 0 评论 -
Opencv实战1 检测直线
直线检测2.1 题目        将下面试卷中横线检测出来,用红线替换。2.2 思路2.2.1 思路一 霍夫直线检测(不恰当方法):1、 转化为灰度图像。2、 二值化。3、 边缘检测。4、 霍夫直线检测。示例代码:void MethodOne(Mat img原创 2019-01-18 23:30:43 · 5039 阅读 · 1 评论 -
OpenCv实战2 切边处理
切边处理1.1 题目:将下图作图的图片灰色区域切边,并将图片旋转为正。结果为右图。1.2 思路1、 转化为灰度图像,2、 进行边缘检测,找出边缘3、 边缘中查找轮廓4、 轮廓中查找面积最大的外接矩形5、 使用矩形角度,仿射进行旋转6、 再次边缘加测,轮廓查找,找出轮廓的垂直边界最大矩形。7、 提取ROI区域1.3 示例代码int main(int argc, char *...原创 2019-01-18 19:26:04 · 1599 阅读 · 4 评论 -
傅里叶变换推导
图像傅里叶变换1.周期函数的分解猜想    数学家总是非常伟大的,数学家拉格朗日大家从小到大在数学课本里面都能见到他的身影,他和一些数学家发现:一些周期函数可以分解为三角函数之和。在当时另一个资历比较浅的数学家傅里叶论断:任何周期函数都可以分解为三角函数之和。有意思的是拉格朗日对此持反对意见并指出:带有棱角的周期函数肯定不能由三角函数合成。由于当时朗格朗...原创 2019-01-11 21:18:58 · 23393 阅读 · 3 评论 -
图像边缘检测总结
1 边缘检测的一般步骤1.1 滤波边缘检测的算法可以就是对图像像素点进行求导,但是噪声本身就是异常点,因此导数对噪声很敏感,所以首先需要使用滤波器来降低或消除噪声的影响。常用的滤波器就是之前提到的五种,根据实际情况进行选用,底线是不对图像轮廓造成损害。当然如果不是噪声类型特别明显的情况,其中最常用的就是高斯滤波器了。1.2 增强增强边缘的基础是确定图像各点邻域强度的变化值,将图像灰度点邻...原创 2019-01-11 20:36:11 · 1941 阅读 · 0 评论 -
微分滤波器总结
微分滤波器本质:逻辑上,平滑使用的是积分,锐化则应使用微分。1.索贝尔(Sobel)导数索贝尔算子可以实现任意阶导数和混合偏导数。本质:求得图像的一阶或二阶近似梯度图像。void Sobel( InputArray src, OutputArray dst, int ddepth, int dx, int dy, int ksize = ...原创 2019-01-11 20:34:54 · 7602 阅读 · 0 评论 -
平滑滤波器总结
平滑滤波器总结本质:对像素点领域的像素值施于某种算法,以其结果替代锚点处对应的像素值。平滑(模糊)目的:减少噪声和伪影。opencv一共提供了5种平滑操作。1.均值滤波器算法原理:以邻域像素点的平均值代替像素点的值。void blur( InputArray src, OutputArray dst, Size ksize, Point ...原创 2019-01-11 19:03:09 · 22988 阅读 · 2 评论 -
图像的傅里叶变换
图像的傅里叶变换傅里叶变换大家想必早就了解了,网上资料也很多,如何推导有何意义都说的很明白了,在这里就不作赘述。今天我想讲的是OpenCv中如何对傅里叶图像进行变换,生成频谱图。先看如何生成一幅图像的频谱图:源码:#include "QtGuiApplication1.h"//#define Ui#ifndef Ui#include <QFileInfo>#incl...原创 2019-01-10 22:04:46 · 1650 阅读 · 0 评论 -
OpenCv掩摸详解
掩模Mask详解在OpenCv中,许多API的参数中都有Mask(掩模)这么一个参数。很多资料都有一句话带过:规定所要操作的区域。那么他到底是怎么使用的?内部具体过程是什么?今天通过小例子来解答。Mat sor(Size(5, 5), CV_8UC1, Scalar(0));std::cout << sor << std::endl;Mat mask(Size(5...原创 2019-01-10 22:02:07 · 464 阅读 · 0 评论 -
图像的叠加、混合、分离
图像的叠加、混合、分离1 感兴趣区域ROI ROI(region of interest)感兴趣区域,在图像处理过程中,有时候我们希望对图像中的某些区域进行处理,也就是仅对某些区域感兴趣,那么我们就可以定义我们的ROI区域。方法:定义一个Rect来表示或指定行列范围。Mat roi1, rot2;// 左上角roi1 = img(Rec...原创 2019-01-10 22:00:25 · 8867 阅读 · 0 评论 -
opencv 基于图像单像素点的处理
1 基于图像单像素点的处理看过数字图像处理一书的都知道,图像处理中基于像素点的处理分为两种灰度变换:本质就是基于单像素点的变化处理。空间滤波:本质就是基于邻域像素点的变化处理。今天要讲的是在OpenCv下基于基于单像素点的处理,其中会讲到OpenCv针对单像素处理封装好的一些ApI,即实质原理。1.1 图像像素点的访问要进行基于单像素点的处理,首先就必须知道,给你一幅图,你如何去访问图...原创 2019-01-10 21:54:51 · 3175 阅读 · 0 评论 -
第8章 OpenCv 图像、视频与数据文件
第8章 OpenCv 图像、视频与数据文件1 HighGUI模块HighGUI:OpenCv把用于操作系统、文件系统以及摄像机等硬件设备交互的函数纳入到HighGUI模块中。即图像的输入输出、视频的输入输出和图形界面相关功能。HighGUI分为三个部分:(1) 硬件部分硬件部分最主要是对摄像机的操作。(2) 文件系统部分文件系统部分的主要工作是完成图片的载入和保存。(3) 窗口(G...原创 2019-01-05 18:10:25 · 23952 阅读 · 5 评论 -
第五章 矩阵(Mat)操作
基本的矩阵和图像算子函数名称 描述abs() 计算矩阵中所有元素的绝对值absdiff() 计算两个矩阵差值的绝对值add() 实现两个矩阵逐元素相加addWeighted() 实现两个矩阵逐元素加权求和bitWise_and() 计算两个矩阵逐元素按位与bitWise_not() 按位非bitWise_or() 计算两个矩阵逐元素按位或bitWise_xor() 计算两个矩阵...原创 2019-01-05 18:03:24 · 597 阅读 · 0 评论 -
第四章 OpenCv的数据类型
第四章 OpenCv的数据类型 1 直接从C++继承来的基础数据类型本质:这类数据类型直接从C++原语中继承而来,仅仅是稍加修饰,如int、float、及简单数组和矩阵,同时也有一些代表简单几何概念的数据类型,如点、矩形、大小等。OpenCv中6种基本数据类型缩写:b = unsigned charw = unsigned shorts = shorti = intf = floa...原创 2018-12-24 19:39:38 · 447 阅读 · 0 评论 -
第三章 OpenCv基本入门使用
第三章 OpenCv基本入门使用1 头文件说明头文件集中地:opencv2/opencv.hpp该头文件包含了opencv各个模块的头文件,如果是仅仅刚开始学习OpenCv而不是正式开发实际项目,那么为了简单,可以直接引用opencv2/opencv.hpp头文件,一股脑的将所有模块的头文件包含进来。2 显示一张图片示例代码:/// &amp;lt;summary&amp;gt;/// 描述:利用O...原创 2018-12-24 19:25:02 · 216 阅读 · 0 评论 -
第二章 Opencv下载和安装
第二章 Opencv下载和安装 仅介绍windows系统下的安装。1 OpenCv获取 官方网站:https://opencv.org/ Github地址:https://github.com/opencv/opencv2 使用编译好的库 下载OpenCv后会得到一个exe文件,直接运行会解压得到编译好的库。里面就有编译好的dll动态库opencv_world400.dl...原创 2018-12-19 22:54:03 · 3274 阅读 · 0 评论 -
Opencv实战3 对象提取
3 对象提取3.1 题目如下图,去除圆之外的杂物,并计算圆的半径。3.2 思路二值化处理tuxiang形态学操作去除小杂物轮廓查找,根据面积横纵比进行筛选找出圆感兴趣区域保留3.3 示例代码#include <opencv2\opencv.hpp>using namespace cv;using namespace std;int main(int ...原创 2019-01-22 22:07:37 · 1112 阅读 · 1 评论