OpenCV
文章平均质量分 70
SophiaCV
微信搜索【计算机视觉联盟】,回复关键字【西瓜书手推笔记】获得Github标星2000+的机器学习笔记PDF版本。我的微信:PursueWin 一起进步学习
展开
-
【OpenCV】OpenCV函数精讲之 -- “opencv.hpp” 头文件
# include <opencv2/opencv.hpp>头文件定义类似如下:# include <opencv2/opencv.hpp># ifndef_OPENCV_ALL_HPP_#define_OPENCV_ALL_HPP_# include "opencv2/core/core_c.h"# include "opencv2/core/c...原创 2018-11-08 23:06:21 · 10075 阅读 · 1 评论 -
【OpenCV】OpenCV函数精讲之 -- Mat和IplImage之间的相互装换(OpenCV2.0和OpenCV3.0)
Mat是OpenCV和C++接口的矩阵类,IplImage是OpenCV和C语言接口的结构体。Mat读取显示用的是imread、imshow等,IplImage读取显示用的是cvLoadImage()、cvShowImage()。有时候会涉及到两者之间的转换,下面详细见介绍一下两者之间的转换:IplImage->mat:将IplImage转换为mat,OpenCV3.0版本以...原创 2018-11-25 14:40:30 · 583 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 格式化输出方法
目录1、OpenCV默认风格输出2、Python风格输出3、逗号分隔风格(Comma separated values,CSV)4、Numpy风格5、C语言风格OpenCV提供了风格迥异的格式化输出方法,下边详细介绍不同的输出方法。首先定义一个r矩阵,用来下边输出方法介绍的输出矩阵。r矩阵用randu()函数产生随机数,并且限制在一个上限、下限范围内。Mat r...原创 2018-11-25 15:14:51 · 788 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 初级图像混合
本文是将设置感兴趣区域ROI和使用addWeighted函数进行图像线性混合结合起来使用,下边是具体的代码示例:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace cv;using name...原创 2018-12-02 14:24:18 · 609 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制
目录1、DrawEllipse()函数的写法2、DrawFilledCircle()函数的写法3、DrawPolygon()函数的写法4、DrawLine()函数的写法基本绘制图形代码:moveWindow函数基本图像绘制涉及到的绘制函数如下:用于绘制直线的line函数 用于绘制椭圆的ellipse函数 用于绘制矩形的rectangle函数 用于绘制圆的ci...原创 2018-11-26 21:58:45 · 1074 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- moveWindow函数用法详解
moveWindow()函数用于改变窗口的位置和尺寸格式如下:BOOL moveWindow( const string& winname,int x, int y, int Width, int Height,BOOL bRepaint = TRUE);参数说明:第一个参数:窗口名字第二个参数x和第三个参数y:表示窗口左上角的坐标第四个参数:窗口的宽度第五...原创 2018-11-26 22:33:17 · 11329 阅读 · 1 评论 -
【OpenCV】OpenCV函数精讲之 -- copyTo()函数及Mask详解(附代码详解)
copyTo函数有两种重构方式:第一种:A.copyTo(B),表示将A矩阵复制到B中第二种:A.copyTo(B, mask),表示得到一个附加掩膜mask的矩阵B。第一种方法就不多赘述,这里主要详细叙述第二种使用方法。对于第二种mask参数的格式,A.copyto(B, mask),mask作为一个掩模板,如果在某个像素点(i, j)其值为1(只看第一通道,所以mask单...原创 2018-12-01 17:13:35 · 12278 阅读 · 5 评论 -
【OpenCV】OpenCV函数精讲之 -- 感兴趣区域ROI
定义ROI区域有两种方法:第一种:使用表示矩形区域的Rect。指定矩形的左上角坐标(构造函数的前两个参数)和矩形的长宽(构造函数的后两个参数)。imageROI = image(Rect(500, 250, logo.cols, logo.rows));第二种:指定感兴趣行或列的范围(Range)。Range是从起始索引到终止索引(不包括终止索引)的一连续序列。CRange可以用来...原创 2018-12-01 21:01:55 · 734 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- addWeighted()函数(线性混合)
addWeighted()函数用来计算两个数组(图像阵列)的加权和。格式如下:void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype = -1)参数说明:第一个参数:InputArray src1,表...原创 2018-12-01 21:38:59 · 3159 阅读 · 1 评论 -
【OpenCV】OpenCV函数精讲之 -- 通道分离:split()函数
split函数用于将一个多通道数组分离成几个单通道数组。split函数的C++版本有两个原型,分别是:void split(const Mat& src, Mat*mvbegin);void split(InputArray m, OutputArrayOfArrays mv);参数含义如下:第一个参数:InputArray m(const Mat& src)...原创 2018-12-05 20:57:28 · 4087 阅读 · 1 评论 -
【OpenCV】OpenCV函数精讲之 -- 通道合并:merge()函数
merge()函数是将多个数组合并成一个多通道的数组。将一些孤立的单通道数组合并成一个多通道数组,创建一个由多个单通道阵列组成的多通道阵列。merge()函数的C++有两个版本:void merge(const Mat& mv, size_tcount, OutputArray dst);void merge(InputArrayOfArray mv, OutputArray ...原创 2018-12-05 21:30:18 · 4164 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 多通道图像混合
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream> using namespace cv;using namespace std;//-----------------------------------【全局函数...原创 2018-12-06 08:33:27 · 580 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 图像对比度、亮度值调整
理论依据首先了解一下算子的概念。一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像。下面是算子的一般形式: 或者 ...原创 2018-12-07 16:27:48 · 822 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 离散傅里叶变换原理
离散傅里叶变换(Discrete Fourier Transform,缩写为DFT)指傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。形式上,变换两端(时域和频域)的序列是有限长的,而实际上这两组序列都应该被认为是离散周期信号的主值序列。即使对有限长的离散信号做DFT,也应当对其经过周期延拓成为周期信号再进行变换。实际应用中,通常采用...原创 2018-12-10 08:28:03 · 1090 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 离散傅里叶变换相关函数详解
目录1、dft()函数2、返回DFT最优尺寸大小:getOptimalDFTSize()函数3、扩充图像边界:copyMakeBorder()函数4、计算二维矢量的幅值:magnitude()函数6、矩阵归一化:normalize()函数1、dft()函数dift函数的作用是对一维或二维浮点数数组进行正向或反向离散傅里叶变换。函数格式:void dift(In...原创 2018-12-10 08:28:13 · 1171 阅读 · 1 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解
1、XML和YAML文件简介XML文件是一种元标记语言,即开发者可以根据自身需要定义自己的标记。它是一种语义和结构语言,描述了文档的语义和结构。YAML以数据为中心,是一个可读性高,用来表达资料序列的格式。.yml和.yaml为YAML文件的后缀名。YAML试图用一种比XML更敏捷的方式来完成XML所完成的任务。2、FileStorage类操作文件一般使用如下过程来写入或者读取...原创 2018-12-15 15:47:46 · 1065 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 访问图像中的像素
目录1、图像在内存之中的存储方式2、颜色空间缩减3、LUT函数:Look up table操作4、计时函数5、访问图像中像素的三类方法 5.1、指针访问像素 5.2、迭代器操作像素 5.3、动态地址计算1、图像在内存之中的存储方式图像矩阵的大小取决于所用的颜色模型,确切说,取决于所用通道数。如果是灰度图像,矩阵就会如...原创 2018-11-29 08:33:47 · 729 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 指针访问、迭代器iterator、动态地址计算配合at元素
目录1、指针访问像素2、迭代器操作像素3、动态地址计算OpenCV中,有三种方式访问图像像素:指针访问:C操作符[]; 迭代器iterator 动态地址计算上述方法在访问速度上略有差异。debug模式下,差异非常明显,在release模式下,差异就不太明显。下边通过一组例子来说明这三种方法的使用,程序的作用是减少颜色的数量,比如原来的图像是256种颜色,我们希...原创 2018-11-28 22:50:03 · 711 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- argc 和argv参数
argc和argv这两个参数一般在用命令行编译程序时有用。主函数main中变量(int argc, 插入 *argv[])的含义:int main(int argc, char *argv[]){ ......}参数说明: 1、int argc:类型为整形。用来统计程序运行时发送给main函数的命令行参数个数,在Vsiual Studio中默认值为1。...原创 2018-11-15 16:58:23 · 725 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 命名空间
OpenCV中的C++类和函数都是定义在命名空间CV之内的,有两种方法可以访问:在代码开头的适当位置加上using namespace cv;这句代码,规定程序位于此命名空间之内; 在使用OpenCV的每一个类和函数时,都加入cv::命名空间。第二种方法比较繁琐,推荐使用第一种方法比如在写简单的OpenCV程序的时候,一下三句可以作为标配:# include <opencv...原创 2018-11-15 17:14:12 · 723 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- imread()函数
imread函数用于读取文件中的图片到OpenCV中格式为:Mat imread(const string& filename, int flags=1);Mat类是用于保存图像yi即其他矩阵数据的数据结构。参数说明: 1. 第一个参数,const string&类型的filename,指我们需要载入图片路径名。 2. 第二个参数,int类型的f...原创 2018-11-15 22:48:31 · 3272 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- imshow()函数
imshow()函数用于在指定的窗口显示一幅图像。函数格式:void imshow(const string& winname, InputArray mat);参数说明:第一个参数:const string&类型的winname,指需要显示的窗口标识名称。第二个参数:InputArray类型的mat,指需要显示的图像。imshow函数用于在指定的窗...原创 2018-11-16 15:00:55 · 2816 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- namedWindow()函数
namedWindow函数用于创建一个窗口。namedWindow格式:void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE)参数说明:第一个参数:const string& 型的name,指用作窗口的表示符的窗口名称。第二个参数:int类型的flags,窗口的标识,主要有以下几种。...原创 2018-11-16 16:15:03 · 6700 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- createTrackbar()函数、getTrackbarPos()函数
目录1、创建滑动条:createTrackbar()函数2、获取当前轨迹条的位置:getTrackbarPos()函数1、创建滑动条:createTrackbar()函数createTrackbar()函数用于创建一个可以调整数值的滑动条(常常也称轨迹条),并将滑动条附加到指定的窗口上。它往往会和一个回调函数配合起来使用。函数原型:int createTrackbar(c...原创 2018-11-21 21:42:22 · 7457 阅读 · 3 评论 -
【OpenCV】OpenCV函数精讲之 -- 鼠标操作
指定鼠标操作消息回调函数的函数为SetMouseCallback函数原型:void setMouseCallback(conststring& winname, MouseCallback onMouse, void* userdata=0)参数哦说明:第一个参数:conststring winname,窗口的名字第二个参数:MouseCallback onMous...原创 2018-11-22 22:08:53 · 396 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 图像容器Mat
Mat是一个类,由两部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息) 指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针OpenCV中,每个Mat对象有自己的信息头,但共享同一个矩阵。通过让矩阵指针指向同一地址实现。拷贝构造函数则只复制信息头和矩阵指针,而不复制矩阵。如下边代码:Mat A, C; // 仅创建信息头部分A = imrea...原创 2018-11-22 23:05:55 · 434 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- imwrite()函数
imwrite()函数用于输出图像到文件。imwrite()格式:bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>())参数说明:第一个参数:const string&类型的filename,指写入的文件...原创 2018-11-17 13:15:51 · 3155 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通图像的载入、显示与输出
书中关于图像的载入、显示与输出的综合应用。有些细节知识将在本博客后续更新。#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace cv;int main(){ //-----------------------------------【...原创 2018-11-17 13:38:12 · 469 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)
目录1、点的表示:Point类2、颜色的表示:Scalar类3、尺寸的表示:Size类4、矩形的表示:Rect类5、颜色空间转换:cvtColor()函数1、点的表示:Point类Point类数据结构表示了二维坐标系下的点,即由图像坐标x和y指定的2D点。用法如下:Point point;point.x = 10;point.y = 8;或者:Poi...原创 2018-11-25 17:25:58 · 920 阅读 · 0 评论 -
【OpenCV】OpenCV实战从入门到精通之 -- 显示创建Mat对象的七种方法
目录1、使用Mat()构造函数2、C\C++中构造函数进行初始化3、为已经存在的IplImage指针创建信息头4、利用Create()函数5、Matlab方式的初始化6、对小矩阵使用逗号分隔式初始化函数7、为已经存在的对象穿件新信息头Mat不但是一个非常有用的图像容器类,同时也是一个通用聚矩阵类。创建一个Mat对象有很多种方法,列举如下:1、使用Mat()构造函...原创 2018-11-24 23:22:07 · 1305 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 访问图像中的像素
图像在内存之中的存储方式:图像矩阵的大小取决于所用的颜色模型,确切说,取决于所用通道数。如果是灰度图像,矩阵就会如图5.1所示。对于多通道图像来说,矩阵中的列会包含多个子列,其子列个数与通道数相同,如图5.2所示RGB颜色模型的矩阵。可以看到,OpenCV中子列的通道顺序是反过来的——BGR而不是RGB。 有时候,由于内存足够大,可实现连续存储,图像中的各行是一行一行连接起来的...原创 2018-11-28 21:25:55 · 603 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 颜色空间缩减及LUT函数
1、颜色空间缩减颜色空间缩减的做法是:将现有颜色空间值除以某个输入值,以获得较少的颜色数。即做减法,比如颜色值0到9可取为新值0,10到19可取为10,以此类推。有一个简单的公式来实现颜色空间缩减:在处理像素时,每个像素需要进行一遍上述公式计算,也需要一定的时间花销。我们可以把256中计算好的结果提前存在列表table中,这样每种情况不需计算,直接从table中取取结果即可。in...原创 2018-11-28 21:30:19 · 665 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 访问图像中的像素--计时函数
计时函数:简便的计时函数:getTickCount()和get TickFrequency()getTickCount()函数:返回CPU自某个事件以来走过的时钟周期数getTickFrequency()函数:返回CPU一秒钟所走的时钟周期数。这样,就能以秒为单位对某运算计时。两个函数组合起来使用的实例如下:double time0 = static_cast<doub...原创 2018-11-28 21:32:32 · 406 阅读 · 0 评论 -
【OpenCV】OpenCV函数精讲之 -- 教你如何使用离散傅里叶变换
综合《OpenCV3编程入门》——5.5 离散傅里叶变换原理和 《OpenCV3编程入门》——5.5.2 离散傅里叶变换相关函数详解两篇文章对离傅里叶变换的详细介绍,本篇将展示实现离散傅里叶变化的示例程序(本篇所涉及的所有知识均在上述两篇博文里有详细解释,请参考)://---------------------------------【头文件、命名空间包含部分】---------------...原创 2018-12-11 16:08:13 · 537 阅读 · 0 评论