
OpenCV学习笔记
视觉闫小亘
计算机视觉、遥感影像处理及相关算法
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
OpenCV 笛卡尔坐标、极坐标互转
笛卡尔坐标、极坐标互转1.笛卡尔坐标转为极坐标2.极坐标转为笛卡尔坐标1.笛卡尔坐标转为极坐标函数原型:void cartToPolar(InputArray x, //x坐标的数组,且必须是单精度或双精度浮点数组 InputArray y, //y坐标的数组,且必须是单精度或双精度浮点数组 OutputArray magnitude, //输出与x大小和类型相同的幅值数组 OutputArray angle, //输出与x大小和类型相同的角度数组;原创 2020-12-25 20:52:43 · 1927 阅读 · 0 评论 -
OpenCV学习 查表函数LUT C++
一、概念LUT(LOOK -UP-TABLE)查找表。简言之:通过事先建立的一张表对图像进行映射。这样可以起到突出图像的有用信息,增强图像的光对比度的作用对某图像中的像素值进行替换。二、原理函数原型:void LUT(InputArray src, InputArray lut, OutputArray dst);//src表示的是输入图像(可以是单通道也可是3通道)//lut表示查找表(查找表也可以是单通道,也可以是3通道;//...如果输入图像为单通道,那查找表必须为单通道;//...若原创 2020-12-25 16:48:14 · 887 阅读 · 0 评论 -
OpenCV笔记 图像处理基本函数汇总 C++版
图像处理基本函数一、矩阵运算1.基本运算2.逻辑运算3.比较运算4.其它运算二、线性代数与方程式1.线性代数2.方程式三、图像变换1.基本变换2.频率域变换3.幅值与相位4.查表变换一、矩阵运算1.基本运算序号函数说明1void add(InputArray src1, InputArray src2, OutputArray dst,InputArray mask = noArray(), int dtype = -1)矩阵加法,A+B的更高级形式,支持mask2v原创 2020-12-25 16:04:14 · 439 阅读 · 0 评论 -
OpenCV行列号使用
目录Rect()中的行列号Point()中的行列号Mat.at中的行列号KeyPoint.pt中的行列号Rect()中的行列号行也就是rows, 对应的是y,矩形的height信息就是在y方向;列也就是cols, 对应的是x,矩形的width信息就是在x方向;若要在A中截取B的尺寸大小区域 ,按照如下方式:Mat A;A(Rect(col,row,B.cols,B.rows)); //col和row是矩形左上角的位置Point()中的行列号用点划线:(列,行)Point (x,y)原创 2020-12-08 10:43:23 · 441 阅读 · 0 评论 -
Python版Opencv记录:安装扩展版OpenCV及提取KeyPoint中的x,y坐标
由KeyPoint格式的特征点中提取出x,y坐标:points2f = cv2.KeyPoint_convert(keypoints) #将KeyPoint格式数据中的xy坐标提取出来。安装扩展版Opencv:pip uninstall opencv-pythonpip install opencv-contrib-python==3.4.2.16原创 2020-11-25 19:49:59 · 1209 阅读 · 0 评论 -
Opencv学习记录:函数Size()、Rect()、Mat.type()、minMaxLoc()
常用函数目录Size()函数Rect()函数Mat数据类型对照表(Mat.type())minMaxLoc()函数Size()函数对于一个目标Mat Image来讲,若想Image的像素矩阵大小是m×n的,即有m行n列,实现方法如下:Image(Size(n,m),Type); // 即先列数再行数Image = zeros(n, m, Type); // 即先行数再列数Rect()函数当使用 Rect() 选取 ROI 时,使用方法如下:Rect(x0, y0, width原创 2020-12-04 14:51:49 · 2270 阅读 · 1 评论 -
Opencv数据类型对应关系
opencv数据类型对应关系From:https://blog.csdn.net/oemt_301/article/details/99072383转载 2020-04-19 11:45:37 · 572 阅读 · 0 评论 -
OpenCV学习笔记:Mat、CvMat、CvArr、IplImage 数据类型的相互转换(总结版)
一、说明① Mat 是OpenCV和C++的接口矩阵类,ImlImage是OpenCV和C语言的接口的结构体,但是C++程序有时候还是要用到ImlImage,例如在MFC中的Picture Control显示图片。② Mat类型与CvMat和IplImage类型都可以表示图像,Mat类型侧重于计算,数学性较高; CvMat和IplImage类型更侧重于“图像”。③ IplImage类型对图像...原创 2019-11-15 20:24:31 · 3241 阅读 · 1 评论 -
OpenCV学习笔记:KeyPoint数据类的angle问题
以前只知道KeyPoint类有angle这个成员变量,却没弄清楚angle的0度角指向什么方向,今天实验中用到这个角度值,做个记录吧。闲言少叙,开始操作。一、角度方向二、实例...原创 2019-11-15 11:09:00 · 962 阅读 · 0 评论 -
OpenCV学习笔记:实现获取匹配度最高的前N个匹配点对(SIFT算法)
来感觉了,再更一篇,马上科研。闲言少叙,开始操作。搞计算机视觉的monkey可能最不陌生的就是LOWE大神的SIFT算法了,无论科研还是工作,可能会有获取匹配度最高的前N个匹配点对这种需求,OK,码上来!#include "highgui/highgui.hpp" #include "opencv2/nonfree/nonfree.hpp" #include "opencv2/...原创 2019-11-14 20:42:13 · 1035 阅读 · 0 评论 -
OpenCV学习笔记:KeyPoint和DMatch数据结构详解
近期事情太多了,课业也繁多,好久没更了,今天对OpenCV中经常用到的一些数据类型的结构进行一波分析,为自己做记录的同时也分享给大家。闲言少叙,开始操作。一、KeyPoint 数据结构angle //关键点的方向,值为0~360,负值表示不使用。如SIFT算法中为了保证方向不变形, //通过对关键点周围邻域进行梯度运算,求得该点方向。(初值为-1) ...原创 2019-11-14 20:25:31 · 3136 阅读 · 0 评论 -
OpenCV学习笔记:drawmatches函数的参数详解
一、函数构造// Draws matches of keypints from two images on output image.void drawMatches( const Mat& img1, const vector<KeyPoint>& keypoints1, const Mat& img2, const v...原创 2019-09-06 16:03:32 · 29593 阅读 · 15 评论 -
OpenCV学习笔记:图像锐化
锐化锐化滤波器用于突出显示图像的边界和其他精细细节。锐化是基于一阶导数和二阶导数的,一幅图像的一阶导数计算〔图像强度梯度〕的逼近,而二阶导数定义为该梯度的散度。由于数字图像处理研究离散量(像素值),因而将一阶导数和二阶导数离散过程用于锐化处理。一阶导数会产生粗的图像边缘,因此广泛应用于图像边缘。二阶导数对精细细节的响应更好,常被应用于图像增强。用于获取导数的两种常用算子是Sobel和L...原创 2019-08-27 20:54:08 · 2289 阅读 · 1 评论 -
OpenCV学习笔记:掩码运算实现裁剪图像
1.前言:使用掩码进行运算时,位运算符bitewise_and()、bitewise_or()、bitewise_xor()和bitewise_not()很有用!void bitwise_and(InputArray src1, InputArray src2, OutputArray dst, InputArray mask = noArray()); //dst = src1 &...原创 2019-07-29 09:13:32 · 1871 阅读 · 0 评论 -
OpenCV学习笔记:基本数据类型
OpenCV学习笔记:基本数据类型1.彩色图像通常有红、绿、蓝三个构成成分,但OpenCV以逆序,即蓝、绿、红来存储着三个分量,还可以使用第四个透明度(alpha)通道。2.使用img.channels()获取一幅img图像的通道数。3.使用img.depth()获取衣服img图像深度。4.使用函数convertTo讲义中图像深度转换为另一种图像深度。实例如...原创 2019-07-24 11:53:36 · 185 阅读 · 0 评论 -
OpenCV学习笔记:像素级访问的两种方法
OpenCV学习笔记:像素级访问的两种方法前言:当使用OpenCV对图像进行处理时,了解如何独立地访问每个像素是十分必要的。本文会介绍两种方法:第一种方法对程序员来说较为简单,而第二种方法在某种特定情况下效率会更高。1.模板函数at<>实例://第一种情况Mat src1 = imread("lena.jpg",IMREAD_GRAYSCALE);unchar pixel...原创 2019-07-24 13:24:27 · 385 阅读 · 0 评论 -
OpenCV学习笔记:图像典型操作
1.设置矩阵的值img.setTo(0); //对于1个通道的图像img.setTo(Scalar(B,G,R)); //对于3个通道的图像2.Matlab风格的矩阵初始化Mat m1 = Mat::eye(100,100,CV_64F);Mat m2 = Mat::zeros(100,100,CV_8UC1);Mat m2 = Mat::ones(100,100,CV_8UC...原创 2019-07-24 14:44:46 · 383 阅读 · 0 评论 -
OpenCV学习笔记:估计圆周率Pi值
一、数学模型: 函数
OpenCV学习笔记:像素值读取at()函数原创 2019-07-17 21:40:04 · 7526 阅读 · 1 评论 -
OpenCV学习笔记:使用数据持久化保存与加载滑动条的值
数据持久化:程序中对象和变量的值可以被记录(序列化)到磁盘上。写入数据的步骤:(1)调用构造函数FileStorage,使用FileStorage::WRITE值传递一个文件名称和一个标志,数据格式则是由文件扩展名(即.xml、.yml或.yaml)定义的;(2)使用运算符<<将数据写入文件,数据通常被写为字符串值对;(3)使用Release方法关闭文件。读取数据的步骤:(...原创 2019-07-30 20:12:15 · 225 阅读 · 0 评论 -
OpenCV学习笔记:图像直方图函数calcHist()及均衡化示例记录
一、相关方法1.图像的直方图: 在进行图像处理时,往往需要访问图像的灰度值(即像素),因而我们需要得到一个不同灰度的概率密度函数,称作该图像的直方图。图像直方图表示图像中各种灰度出现的频率。2.直方图均衡化:对直方图进行建模,进而改变其对比度。3.相关函数(1)OpenCV中使用函数 void calcHist 计算图像的直方图,使用函数void equalizeHist进行直方图均衡化。...原创 2019-07-31 22:11:28 · 306 阅读 · 0 评论 -
OpenCV学习笔记:彩色图像的两个通道构成一个二维直方图
一、前言1.进行原图像与均衡化后的图像之间的比较。2.为了比较直方图,对直方图进行归一化处理。3.计算由同一幅彩色图像的两个通道构成一个二维直方图。二、代码实现// 08.26.2019 by yh#include <opencv2/opencv.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <...原创 2019-08-26 17:04:11 · 600 阅读 · 0 评论 -
OpenCV学习笔记:常用图像平滑函数记录
图像滤波的相关知识图像滤波是一个修改或增加图像的过程,加强一幅图像中的某些特征或消除其他特征都是在进行图像滤波操作。滤波是一种邻域运算,邻域是一个选定区域范围的像素集合。通过利用在该像素周围一定邻域内像素集合的值执行某些运算,图像滤波确定了位于(x,y)处某个像素的输出值。常见的图像滤波有平滑或锐化。平滑平滑又称模糊,是经常用来降噪的一种图像处理操作。通过对图像应用线性滤波来执行平滑操...原创 2019-08-27 09:54:29 · 799 阅读 · 0 评论 -
OpenCV学习笔记:读取和写入图像文件
OpenCV学习笔记:读取和写入图像文件1.若想复制一个Mat对象的的内存内容,应该使用成员函数Mat::clone(),而不是使用赋值运算符(“=”),赋值运算符只是对其引用的复制。2.OpenCV提供了代理类InputArray和OutputArray,允许数据类型(std::vector<>、Matx<>、Vec<>或Scalar)作为函数的参数使用。...原创 2019-07-23 17:51:07 · 536 阅读 · 1 评论