
Opencv
dylan55_you
这个作者很懒,什么都没留下…
展开
-
Opencv 学习----Opencv简介
1.Opencv概述及库文件编译1.1 Opencv概述1.1.1 定义OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库。1.1.2 历史OpenCV项目最早由英特尔公司于1999年启动,致力于CPU密集型的任务,是一个包括如光线追踪和3D显示的计划的一部分。早期OpenCV的主要目标是为推进机器视觉的研究,提供一套开源且优化的基础库。不重造轮子。 ...原创 2019-08-04 19:40:29 · 1354 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::bilateralFilter(双边滤波器)
6.1 图像过滤6.1.1 cv::bilateralFilter6.1.1.1 双边滤波器简介 在图像处理上,双边滤波器为使影像平滑化的非线性滤波器。和传统的影像平滑化算法不同,双边滤波器除了使用像素之间几何上的靠近程度之外,还多考虑了像素之间的光度/色彩差异, 使得双边滤波器能够有效的将影像上的噪声去除,同时保存影像上的边缘资讯。 双边滤波器可以应用在影像...原创 2019-08-29 22:34:39 · 1704 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::blur(模糊图像)
6.1.2 cv::blur6.1.2.1 Opencv接口void cv::blur(InputArray src, OutputArray dst, Size ksize, Point anchor = Point(-1,-1), int borderType = BORDER_DEFAULT ) 参数src 输入图像; 它可以有任意数量的通道,这些通道是...原创 2019-08-29 22:48:55 · 5769 阅读 · 1 评论 -
Opencv学习----图像处理-图像过滤-cv::boxFilter
6.1.3 cv::boxFilter6.1.3.1 Opencv接口void cv::boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor = Point(-1,-1), bool normalize = true, int borderType = ...原创 2019-08-29 22:55:48 · 1465 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::dilate
6.1.5 cv:: dilate6.1.5.1 Opencv接口void cv::dilate(InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1,-1), int iterations = 1, int borderType = BORDER_CONSTANT,...原创 2019-08-29 23:04:16 · 1638 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::erode
6.1.6 cv:: erode6.1.6.1 Opencv接口void cv::erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1,-1), int iterations = 1, int borderType = BORDER_CONSTANT, ...原创 2019-08-29 23:10:11 · 527 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::filter2D
6.1.7 cv:: filter2D6.1.7.1 Opencv接口void cv::filter2D(InputArray src, OutputArray dst, int ddepth, InputArray kernel, Point anchor = Point(-1,-1), double delta = 0, int borderType =...原创 2019-08-29 23:15:18 · 931 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv::GaussianBlur
6.1.7 cv::GaussianBlur6.1.7.1 高斯滤波器 高斯滤波器是最有用的滤波器 (尽管不是最快的)。 高斯滤波是将输入数组的每一个像素点与 高斯内核 卷积将卷积和当作输出像素值。 1维高斯函数如下图: ...原创 2019-08-31 21:35:02 · 617 阅读 · 0 评论 -
Opencv学习----图像处理-图像过滤-cv:: medianBlur
6.1.8 cv:: medianBlur6.1.8.1 Opencv接口void cv::medianBlur(InputArray src, OutputArray dst, int ksize ) 参数src 输入1,3-或4通道图像; 当ksize为3或5时,图像深度应为CV_8U,CV_16U或CV_32F,对于较大的光圈尺寸,它只能是CV_8U。dst 与...原创 2019-08-31 21:38:39 · 2209 阅读 · 0 评论 -
Opencv学习----图像处理-几何图像变换-cv::getAffineTransform(仿射变换)
6.2.1 cv::getAffineTransform6.2.1.1 仿射变换(1)一个任意的仿射变换都能表示为乘以一个矩阵(线性变换)接着再加上一个向量(平移)。所以,我们能够用仿射变换来表示:旋转(线性变换) 平移(向量加) 缩放操作(线性变换)仿射变换代表的是两幅图之间的联系。我们通常使用矩阵来表示仿射变换。 ...原创 2019-08-31 21:49:27 · 2872 阅读 · 0 评论 -
Opencv学习----图像处理-几何图像变换-cv::getRotationMatrix2D(矩阵旋转与缩放)
6.2.2 cv::getRotationMatrix2D6.2.2.1 Opencv接口Mat cv::getRotationMatrix2D(Point2f center, double angle, double scale ) 参数center 旋转图像所要围绕的中心点angle 旋转的角度. 在OpenCV中正角度是逆时针的scale 缩放因子,可选的...原创 2019-08-31 21:54:47 · 3303 阅读 · 0 评论 -
Opencv学习----图像处理-几何图像变换-cv::getPerspectiveTransform(透视变换)
6.2.3 cv::getPerspectiveTransform6.2.3.1 opencv接口Mat cv::getPerspectiveTransform(const Point2f src[], const Point2f dst[] ) 参数src 源图像上的四个点dst 目标图像上的四个点透视变换: ...原创 2019-08-31 21:57:44 · 833 阅读 · 0 评论 -
Opencv学习----图像处理-颜色映射(applyColorMap)
6.3 颜色映射 人类的感知并不是为了观察灰度图像的细微变化而建立的。人类的眼睛对观察颜色之间的变化更敏感,所以你经常需要对你的灰度图像重新上色,以获得关于它们的线索。OpenCV现在提供了各种颜色映射,以增强计算机视觉应用程序中的可视化。 在OpenCV中,只需要applyColorMap就可以在给定的图像上应用颜色映射。 颜色映射包括如下: ...原创 2019-09-02 22:45:51 · 4331 阅读 · 0 评论 -
Opencv学习----图像处理-直方图
6.4 直方图6.4.1Opencv直方图定义 直方图是对数据的集合统计,并将统计结果分布于一系列预定义的bins中。这里的数据不仅仅指的是灰度值, 统计数据可能是任何能有效描述图像的特征。 看一个例子,假设有一个矩阵包含一张图像的信息(灰度值): ...原创 2019-09-02 22:54:35 · 239 阅读 · 0 评论 -
Opencv学习----Mat的源码分析(创建和拷贝)
4.2.5 Mat的源码分析4.2.5.1 创建Mat以创建如下三个类型的Mat为例:Mat mat(512, 512, CV_8UC3);//3通道uchar类型Mat mat(512, 512, CV_8UC4);//4通道uchar类型Mat mat(512, 512, CV_32FC3);//3通道float类型//首先,初始化成员变量//dims:维度;rows...原创 2019-09-09 21:49:05 · 1248 阅读 · 0 评论 -
Opencv学习----图像处理的应用-替换图片的指定颜色
void ES::ImageProcessing::swapColorOper(cv::Mat* dst){ Mat src = imread("littleboy.png", IMREAD_COLOR); cv::resize(src, src, Size(src.rows / 4 * 3, src.cols / 4 * 3)); unsigned int srcColor[3], d...原创 2019-09-09 21:52:07 · 3451 阅读 · 2 评论 -
Opencv学习----矩阵操作-矩阵转换(cv::dct、cv::dft等)
5.2 矩阵变换cv::dct(InputArraysrc,OutputArraydst, int flags=0)执行一维或二维数组的正向或反向离散余弦变换。该函数通过查看输入数组的标志和大小来选择操作模式:(1)如果(flags & DCT_INVERSE) == 0,则函数执行正向一维或二维转换。否则,它就是一维或二维的逆变换。(2)如果(flags &a...原创 2019-08-29 21:42:06 · 4456 阅读 · 0 评论 -
Opencv学习----矩阵操作-基本操作
5.1 基本操作cv::absdiff(InputArraysrc1,InputArraysrc2,OutputArraydst)计算两个数组之间或数组与标量之间的每元素绝对差值。注意当阵列具有深度CV_32S时,不应用饱和度。在溢出的情况下,您甚至可能得到负值。参数 SRC1 第一个输入数组或标量。 SRC2 ...原创 2019-08-29 21:24:33 · 1294 阅读 · 0 评论 -
Opencv学习----编译Opencv 4.1.1
1.2编译Opencv 4.1.1库1.2.1 opencv库文件和编译工具准备从https://github.com/opencv/opencv下载opencv库文件。从https://cmake.org/download/下载CMake编译工具。1.2.2 编译Opencv库将从https://github.com/opencv/opencv下载的opencv库文件open...原创 2019-08-04 19:46:00 · 9123 阅读 · 3 评论 -
Opencv学习----位图(bitmap)原理详解一---位图定义
2.1 定义位图定义为称为像素的常规矩形单元网格,每个像素包含一个颜色值。它们的特征在于仅有两个参数,像素数和每个像素的信息内容(颜色深度)。还有其他属性应用于位图,但它们是这两个基本参数的派生。请注意,位图始终水平和垂直定向。像素应该被视为方形,尽管它们在实践中可能具有其他宽高比。在大多数情况下,位图用于表示计算机上的图像。例如,以下是位图,其水平397像素,垂直294像素,并且...原创 2019-08-14 22:06:08 · 1533 阅读 · 0 评论 -
Opencv学习----位图(bitmap)原理详解二---颜色深度
2.2 颜色深度位图中的每个像素都包含某些信息,通常被解释为颜色信息。对于特定位图中的所有像素,信息内容始终相同。颜色信息的数量可以是应用程序所需的,但有一些标准,主要的标准如下所述。1位(黑白):这是可以为每个像素保持的最小可能信息内容。生成的位图被称为单色或黑白。具有0的像素被称为黑色,具有1的像素被称为白色。请注意,虽然只有两种状态是可能的,但它们可以被解释为任何两种颜色,0映射...原创 2019-08-14 22:08:58 · 2596 阅读 · 0 评论 -
Opencv学习----位图(bitmap)原理详解三---位图解析度
2.3 解析度分辨率是位图的一个属性,在视觉上查看或打印位图时是必需的,因为像素本身没有明确的尺寸。分辨率通常以每英寸像素数指定,但可以是任何其他测量单位。由于历史原因,大多数打印过程保留每英寸像素(DPI)单位。在具有nn个矩形像素的设备上,分辨率可以被指定为两个数字,水平和垂直分辨率。分辨率的概念独立于位图的信息内容是非常重要的,给定恒定的颜色深度,则不同位图之间的信息内容仅与垂直和水...原创 2019-08-14 22:11:10 · 686 阅读 · 0 评论 -
Opencv学习----位图(bitmap)原理详解四---颜色深度转换
2.4 颜色深度转换通常,有必要将具有一种颜色深度的位图表示到具有不同颜色深度能力的设备上。当然,如果目标设备具有比位图更好的颜色,则没有问题,因为可以精确地表示位图。在目标具有不同和较低功能的相反情况下,必须将位图转换为能够提供最佳表示的内容。作为示例,考虑在单色(黑白)设备上表示灰度图像的问题。这是通过使用可变数量的黑色和白色像素来表示灰度级来实现的。幸运的是,黑白设备通常具有比位图高...原创 2019-08-14 22:13:07 · 1707 阅读 · 0 评论 -
Opencv学习----位图(bitmap)原理详解五---位图存储
2.5 位图存储存储位图的最简单方法是简单地逐字节地列出位图信息。此方法存储的文件通常称为RAW文件。考虑到位图尺寸(N x M)和位深(B)中的颜色深度,任何位图所需的磁盘存储量都很容易计算。文件大小的公式以KB为单位其中N和M是水平和垂直像素的数量,B是每个像素的位数。下表显示了几种位图类型的文件大小(如果它们以RAW格式存储)。从该表中可以看出,大型24位图像将导致非常大...原创 2019-08-14 22:15:51 · 2442 阅读 · 0 评论 -
Opencv学习----Opencv宏定义(CV_8U、CV_8S、CV_16U...)
数据类型宏定义:#define CV_8U 0#define CV_8S 1#define CV_16U 2#define CV_16S 3#define CV_32S 4#define CV_32F 5#define CV_64F 6#define CV_16F 7#define CV_8UC1 CV_MAKETYPE(CV_8U,1)#define ...原创 2019-08-14 22:24:55 · 24408 阅读 · 0 评论 -
Opencv学习----基本结构对象-cv::_InputArray
4.1.1 定义这是将只读输入数组传递到OpenCV函数的代理类。它被定义为:typedef const _InputArray& InputArray ;_InputArray是由Mat、Mat_<T>、Matx<T,m,n>、std::vector<T>、std::vector<std::vector<T> >、s...原创 2019-08-15 21:06:31 · 6442 阅读 · 0 评论 -
Opencv学习----基本结构对象-cv::Mat-定义
4.2.1 定义Mat表示一个n维密集的数值单通道或多通道阵列。它可以用来存储实数或复数的向量和矩阵、灰度或彩色图像、体素体积、向量场、点云、张量、直方图(但是,非常高维的直方图可以更好地存储在SparseMat中)。数组的数据布局由数组M定义M.step[],因此元素的地址(i0,...,iM.dims−1)0≤ik<M.size[k]对于二维数组,将上述公式简化为:请...原创 2019-08-15 21:17:02 · 4676 阅读 · 0 评论 -
Opencv学习----基本结构对象-cv::Mat-成员和接口
(1)成员 int flags; 包括几位域:signature(签名)、continuity(连续性)、depth(深度)、channels(通道数)。构造函数中默认赋值为MAGIC_VAL。 int dims; 矩阵维数>=2 int rows, cols; 当维数>...原创 2019-08-15 21:20:04 · 1489 阅读 · 1 评论 -
Opencv学习----基本结构对象-几何对象(cv :: Point、cv::Rect、cv::RotatedRect)
4.3.1 cv :: Point_ <_Tp>4.3.1.1 定义2D点的模板类。该类的实例可与C结构CvPoint和CvPoint2D32f互换。还有一个强制转换操作符可将点坐标转换为指定的类型。从浮点坐标到整数坐标的转换是通过舍入完成的。通常,转换对每个坐标使用此操作。除了上述声明中列出的类成员外,还实现了以下关于点的操作:pt1 = pt2 + pt3;pt...原创 2019-08-17 21:59:24 · 3145 阅读 · 0 评论 -
Opencv学习----几何对象的绘制
4.3.5 几何对象的绘制cv::Mat* mat = new Mat(m_height, m_width, CV_8UC4);4.3.5.1 绘制线void ES::OESGeometryElem::showLine(cv::Mat* mat){ int width = m_view->getWidth(); int heigth = m_view->getHe...原创 2019-08-17 22:09:39 · 224 阅读 · 0 评论 -
Opencv学习----C风格的结构和操作-IplImage
4.5.1 _IplImage#ifdef __cplusplustypedef struct _IplImage IplImage;CV_EXPORTS _IplImage cvIplImage(const cv::Mat& m);#endifIplImage取自Intel图像处理库,其格式是本机的。OpenCV只支持IplImage格式的一个子集,如上面的参数列表所示...原创 2019-08-18 15:06:29 · 623 阅读 · 0 评论 -
Opencv学习----C风格的结构和操作-CvMat
4.5.2 CvMat#ifdef __cplusplustypedef struct CvMat CvMat;CV_INLINE CvMat cvMat(const cv::Mat& m);#endif矩阵元素逐行存储。可以使用CV_MAT_ELEM宏检索或修改矩阵的元素(i,j)(基于i-0的行索引,基于j-0的列索引):uchar pixval = CV_M...原创 2019-08-18 15:08:13 · 553 阅读 · 0 评论 -
Opencv学习----C风格的结构和操作-cv::Mat、CvMat、IplImage相互转换
4.5.3 cv::Mat、_IplImage、CvMat相互转换4.5.3.1 cv::Mat转cv::Mat//浅拷贝Mat a;Mat b = a; //“copy” a to bMat c(a); //“copy” a to c//深拷贝Mat a;Mat b = a.clone(); //copy a to bMat c;a.copyTo(c); //copy ...原创 2019-08-18 15:14:04 · 1576 阅读 · 0 评论 -
Opencv学习----图像处理的应用-图片变形(扭曲图片)
void ES::ImageProcessing::imageWarpOper(cv::Mat* dst){ Mat src = imread("lena.jpg", IMREAD_COLOR); cv::resize(src, src, Size(src.rows / 4 * 3, src.cols / 4 * 3)); Mat mat; const int rows = src.r...原创 2019-09-09 21:55:18 · 6189 阅读 · 4 评论