![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV
文章平均质量分 94
XDWX
逆水行舟,不进则退。
展开
-
OpenCV--cvThreshold() 阈值化【转载】
OpenCV中阈值化的5种形式CVAPI(double) cvThreshold( const CvArr* src, CvArr* dst, &nb...转载 2018-08-19 21:57:44 · 398 阅读 · 0 评论 -
Opencv--IplImage访问图像像素的值
opencv2.1版本之前使用IplImage*数据结构来表示图像,2.1之后的版本使用图像容器Mat来存储。IplImage结构体如下所示。 1 typedef struct _IplImage 2 { 3 int nSize; /* IplImage大小 */ 4 int ID; /* ...转载 2019-03-13 09:13:01 · 519 阅读 · 0 评论 -
Opencv--获取Mat图像数据的方式
方式一:存取像素值。 如果想要获取指定坐标像素的值,可以采用Mat的成员函数at(j,i)来获取坐标()处的像素值。试例代码如下: //用Mat的成员函数访问图像数据 if (image.channels()==1) { image.at<uchar>(j,i)=255; } else if (...转载 2019-03-12 19:21:20 · 5400 阅读 · 0 评论 -
Opencv--findHomography 与 getPerspectiveTransform异同
两者联系:都用于计算单应矩阵,即解一个线性方程组。由于单应矩阵有8个未知数(3*3,其中第9个数为1),所以至少需要4个点(每个点-x,y,提供2个约束方程)。两者区别:1.计算方法不同:通过跟踪源码,发现getPerspectiveTransform用的是SVD分解,findHomography看不出是用什么方法(没注释,一堆等式)。但两者计算结果是一样的。...转载 2019-03-17 11:40:01 · 2304 阅读 · 1 评论 -
Opencv--Mat类型ROI的设置
利用ROI(感兴趣区域)可以实现图像的叠加,笔者将小丑图像叠加到证件照头部,非常有意思!!!源代码如下#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <ios...转载 2019-03-20 20:52:36 · 1479 阅读 · 0 评论 -
Opencv--仿射变换+投射变换+单应性矩阵
estimateRigidTransform()计算多个二维点对或者图像之间的最优仿射变换矩阵(2行x3列),H可以是部分自由度,比如各向一致的切变。getAffineTransform()计算3个二维点对之间的仿射变换矩阵H(2行x3列),自由度为6.warpAffine()对输入图像进行仿射变换findHomography()计算多个二维点对之间的最优单映射变换...转载 2019-03-20 10:59:41 · 448 阅读 · 0 评论 -
Opencv--Mat图像基本操作
Opencv图像处理基本操作1基本数据类型 图像有若干个通道,灰度图像只有一个通道,而彩色具有红,绿,蓝组成,但是OpenCv以逆序的方式来存储三个分量,还可以使用第四个透明度(alpha),可以使用img.channels()获取图像通道个数。使用若干个位存储一副图像的每个像素,这被称为图像的深度,灰度图像为8位,即0-255个灰度级,可以用img.depth()获得图像的深度,其返...转载 2019-03-19 20:57:26 · 1425 阅读 · 0 评论 -
Opencv--addWeighted()
关于图像融合的线性方法即使用addweighted函数进行图像融合,其核心是ROI感兴趣区域的定义,ROI区域在opencv中就是矩形区域(RECT)先创建Rect区域,再给予ROI一些基本性质,形成图像掩膜。ROI即为目标图像中的你想要叠加图像的区域,其基本性质即该区域的位置和范围。一丶创建ROI:Mat roi;roi = image(RECT(500, 250, logo.clos...转载 2019-03-10 17:02:26 · 1650 阅读 · 0 评论 -
Opencv--cvRound()、cvFloor()、 cvCeil()
功能:cvRound(), cvFloor(), cvCeil()函数讲解。函数cvRound,cvFloor,cvCeil 都是用一种舍入的方法将输入浮点数转换成整数:cvRound():返回跟参数最接近的整数值,即四舍五入;cvFloor():返回不大于参数的最大整数值,即向下取整;cvCeil():返回不小于参数的最小整数值,即向上取整;===============分割线======...转载 2019-03-09 16:46:46 · 311 阅读 · 0 评论 -
Opencv--cvGEMM、cvMatMul和cvMatMulAdd的定义
一、GEMM函数的定义void cvGEMM( const CvArr* src1, const CvArr* src2, double alpha,const CvArr* src3, double beta, CvArr* dst, int tABC=0 );这是通用矩阵乘法,其中各个参数表示:src1:第一输入数组src2:第二输入数组alpha:系数src3“第...转载 2019-03-09 16:33:55 · 1178 阅读 · 0 评论 -
Opencv--cvSetImageROI和cvResetImageROI的使用
opencv cvSetImageROI可用于对图片某个区域的截取,截取后如果还要用原图像,需要用cvReSetImageROI将原图像重置下。#include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h> int main(int argc...转载 2019-03-09 16:27:24 · 896 阅读 · 0 评论 -
OpenCV--CvMemStorage
1.opencv中的内存存储结构CvMemStorage文章转载自:http://blog.csdn.net/yangqiuying/article/details/8500601typedef struct CvMemStorage{struct CvMemBlock* bottom; struct CvMemBlock* top; struct CvMemStorage* par...转载 2019-02-21 10:55:20 · 430 阅读 · 0 评论 -
Opencv--图像颠倒的问题
在使用opencv显示图像时会出现图像倒立的情况,IplImage的origin属性有关系。origin为0表示顶左结构,即图像的原点是左上角,如果为1为左下角。一般从硬盘读入的图片或者通过cvCreateImage方法创建的IplImage图片默认的origin为0,即显示的时候都是正的。而由摄像头或者视频文件获取的帧图像origin为1,此时显示的时候扫描顺序是从下到上,显示也是正...转载 2019-02-25 20:50:14 · 5610 阅读 · 0 评论 -
OpenCV--常见图片格式转换与深浅拷贝
//派生关系CvArr -> CvMat -> Ipllmage,相互之间可以强制转换,其方法主要有cvLoadImage(),cvShowImage(),cvSaveImage()//Mat是一套专注矩阵的方法,其主要函数有imread(),imshow(),imwrite() 读入图片格式为Mat格式,代码略。 Mat frame; ...原创 2019-02-28 10:55:58 · 858 阅读 · 0 评论 -
Opencv 中cv开头的函数和没有cv的区别,例如cvWaitkey()和waitKey()的区别
1. 问题描述在opencv中,有很多功能类似或者相同的函数,例如cvWaitKey()和waitKey()。新手在刚刚接触opencv时,很容易弄糊涂,到底有什么区别,为什么要有这些功能类似的函数。2. 寻找答案2.1 为什么有cvWaitKey(),还有waitKey()?其实这个问题的答案可以在opencv的官方文档中找到答案。就拿opencv3.0 为例,可以到它的文档页:ht...转载 2019-02-27 17:38:13 · 2907 阅读 · 0 评论 -
Opencv--(x,y),(width,height)及(cols,rows)的关系
注意:实质虽然简单,但在实际代码中经常容易混淆。故总结警示一下:特别注意的是:cols为列,其表示x; rows为行,其表示y。其关系总结如下:x=width=cols;y=height=rows;...原创 2019-03-22 10:15:53 · 1130 阅读 · 0 评论 -
Opencv--Mat属性step,size,step1,elemSize,elemSize1
Mat的step,size,step1,elemSize,elemSize1这几个属性非常容易混淆。 OpenCV的官方参考手册也没有解释清楚这几个概念。前一段时间研究了一下每个属性的含义,如果有什么错误,欢迎大家指正。step1(i):每一维元素的通道数step[i]:每一维元素的大小,单位字节size[i]:每一维元素的个数elemSize():每个元素大小,单位字节e...转载 2019-03-30 09:30:49 · 333 阅读 · 0 评论 -
OpenCV--Mat类相关操作
转载自:https://blog.csdn.net/weixin_41706166/article/details/89923354博主:素筒肠来源:CSDN 1.Mat::row功能创建一个指定行数的矩阵头并返回,新矩阵和原始矩阵共享一份基础数据函数原型C++: Mat Mat::row(int i) const1参数i:需要选取的行索引2.Mat::col (同上...转载 2019-06-26 15:32:10 · 422 阅读 · 0 评论 -
Opencv---remap函数的实现
图像重映射:即是把一个图像中一个位置的像素放置到另一个图像指定位置的过程。因为有时候源图像和目标图像并不总是一一对应的关系(目标图像的像素可能映射到源图像的非整数坐标上),所以有时候会需要做插值。描述映射过程:通过重映射来表达每个像素的位置(x,y):g(x,y)=f(h(x,y))(x,y):g(x,y) = f(h(x,y))(x,y):g(x,y)=f(h(x,y))其中:g()g()g...转载 2019-05-06 16:02:30 · 1623 阅读 · 1 评论 -
OpenCV--solvePnPRansac()和solvePnP()
solvePnPRansac()bool cv::solvePnPRansac ( InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, &nbs...转载 2019-04-24 20:51:54 · 1824 阅读 · 0 评论 -
OpenCV--实现图像滑动窗口截取子图操作
功能:利用opencv实现图像滑动窗口操作(即利用已知尺寸的窗口遍历整幅图像,形成许多子图像)vs2013+opencv3.12016.10函数实现:slidingWnd.h#ifndef SLIDINGWND_H_#define SLIDINGWND_H_//简单的滑动窗口的形成#include<iostream>#include<opencv2\opencv...转载 2019-04-18 23:08:36 · 4207 阅读 · 0 评论 -
Opencv--CvMat声明和使用
double a[9]={1,2,3;4,5,6;7,8,9}//方式一:直接声明CvMat mat_01; //矩阵变量 mat_01 = cvMat(3,3,CV_64FC1,a); //初始化矩阵的头cvReleaseData(&mat_01); ...转载 2019-04-27 09:36:00 · 1524 阅读 · 0 评论 -
Opencv--undistortPoints()和cvUndistortPoints()
正确用法:std::vector<cv::Point2f> inputDistortedPoints = ...std::vector<cv::Point2f> outputUndistortedPoints;cv::Mat cameraMatrix = ...cv::Mat distCoeffs = ...cv::undistortPoints(inputDi...转载 2019-04-27 09:16:26 · 4118 阅读 · 0 评论 -
OpenCV--fstream格式化读取坐标数据存为vector
输入数据"data.txt"数据格式如下:123 234123 34131 546123 767程序代码#include <iostream>#include <fstream>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int main()...转载 2019-04-21 20:48:30 · 650 阅读 · 0 评论 -
Opencv--图像处理之一阶和二阶偏导数
1. 一阶差分: 2. 二阶偏导数的推导和近似: 3. 上式以点(i+1,j)为中心,用i代换i+1可得以(i,j)为中心的二阶偏导数则有: 4. 同理: 5. 进而可推导: 6. 这样我们就可以很好的运用其他的一阶偏导的定义,如SIFT特征OpenCV实现版本中的一阶以及二阶偏导:```/*Comp...转载 2019-04-02 09:28:40 · 4232 阅读 · 0 评论 -
Opencv--copyTo()函数的使用方法
在Mat矩阵类的成员函数中copyTo(roi , mask)函数是非常有用的一个函数,尤其是后面的mask可以实现蒙版的功能,我们用几个实例来说明它的作用。我们要注意mask的数据类型,必须是CV_8U,且通道数或者是1,或者与roi一致。首先我们令mask为尺寸与roi一致的1矩阵:int main(){ Mat img1=imread("D:/CodeWork/MyImage...转载 2019-04-04 17:45:21 · 857 阅读 · 0 评论 -
Opencv--resize函数五种插值算法实现
最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻、双线性、双三次、基于像素区域关系、兰索斯插值。下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其中部分代码摘自于cv::resize函数中的源代码。每种插值算法的前部分代码是相同的,如下: cv::Mat matSrc, matDst1, matDst2; matSrc = cv::imr...转载 2019-03-31 08:41:08 · 892 阅读 · 0 评论 -
Opencv--线性及双线性插值算法
线性插值先讲一下线性插值:已知数据 (x0, y0) 与 (x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值(反过来也是一样,略):y−y0x−x0=y1−y0x1−x0y−y0x−x0=y1−y0x1−x0y=x1−xx1−x0y0+x−x0x1−x0y1y=x1−xx1−x0y0+x−x0x1−x0y1上面比较好理解吧,仔细看就是用x和x0,x1的距离作为一...转载 2019-03-31 08:40:42 · 1431 阅读 · 0 评论 -
Opencv--warpPerspective +remap结合
用OpenCV库中的warpPerspective函数,搜了一下网上,没找到可以显示全部的图像信息,所以自己写了一个,用于后面的图像进一步处理。公式:dst(x,y) = src((M11x+M12y+M13)/(M31x+M32y+M33),  ...转载 2019-03-30 22:11:42 · 750 阅读 · 0 评论 -
Opencv--bitwise_and、bitwise_not等图像基本运算及掩膜
1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputArray ...转载 2019-04-04 10:41:31 · 646 阅读 · 0 评论 -
用OpenCV调用手机摄像头
首先下载一个工具:IP摄像头(app),安卓,ios都能下载。这里提安卓版的下载地址:http://app.mi.com/details?id=com.shenyaocn.android.WebCam下载安装后,打开app后,点击下方的“打开IP摄像头服务器”(连上wifi,确保电脑与手机处在同一局域网内)。然后,进行OpenCV代码调用部分:/** *Copyright (c) 2018 Y...转载 2019-01-29 14:44:30 · 2527 阅读 · 0 评论 -
【OpenCV】SIFT原理与源码分析
系列博文地址:https://blog.csdn.net/xiaowei_cqu/article/details/8069548转载 2019-01-04 16:52:33 · 409 阅读 · 0 评论 -
Opencv调整运行窗口图片的大小
Opencv在运算时显示图片问题总结在opencv中,图片显示的问题。简要解决图片窗口和图片大小的问题。namedWindow("窗口名",1);//创建窗口imshow("窗口名",要显示的图片);//在创建的窗口中显示图片官网中内容,默认情况下,是1,自动调整窗口大小模式。如果在图片高清情况下,显示图片窗口很大,电...转载 2019-01-03 16:09:43 · 2657 阅读 · 0 评论 -
OPenCV的中cvErode和cvDilate腐蚀和膨胀函数
Erode腐蚀,Dilate膨胀,这两个形态学函数总是成对出现,前者可以消除较小独点如噪音,后者可以使不连通的图像合并成块。 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* elem...转载 2018-08-19 22:28:21 · 2869 阅读 · 0 评论 -
帧间差分法_OpenCV_详解
一.基本概念 基于视频的车辆检测算法种类很多:光流法检测,帧差法,背景消除法(其中包括:直方图法,平均值法,单分布和混合高斯分布背景模型,Kalman滤波等),边缘检测法,运动矢量检测法…下面分享的是运动目标检测算法中最基本的方法—帧间差分法。 ...转载 2018-08-19 21:40:15 · 8120 阅读 · 0 评论 -
OpenCV阈值处理函数cv::threshold()
这是一个对图像二值化处理的函数,对于给定阈值threshold,高于该threshold的像素点值变为pix0, 低于该threshold的像素点值变为pix1.double cv::threshold( cv::InputArray src, //输入图像 cv::OutputArray dst...转载 2018-08-19 21:27:59 · 1864 阅读 · 0 评论 -
二值图像腐蚀与膨胀操作
申明: 仅个人小记前言: 我之前对腐蚀与膨胀的概念理解存在错误。我原来的概念解决不了结构的原点设置在结构外部的情况。故在这里记一下。小注: 刚开始操作的时候是同时有三张图,分别为原图像,结构元素图像,输出结果空白图像 注意: 原图像只是提供位置信息,不参与输出图像的构成。一、操作方法简要说明腐蚀...转载 2018-08-19 18:17:07 · 15298 阅读 · 6 评论 -
【数字图像处理学习笔记之四】图像腐蚀、膨胀
背景知识结构元素:二维结构元素可以理解成一个二维矩阵,矩阵元素的值为0或者1;通常结构元素要小于待处理的图像。腐蚀与膨胀基本原理:就是用一个特定的结构元素来与待处理图像按像素做逻辑操作;可以理解成拿一个带孔的网格板(结构元素矩阵中元素为1的为孔)盖住图像的某一部分,然后按照各种不同的观察方式来确定操...转载 2018-08-19 16:15:59 · 2951 阅读 · 0 评论 -
Opencv录制视频
使用笔记本的摄像头录制视频,并保存为avi格式。#include <opencv2/core.hpp>#include <opencv2/imgcodecs.hpp>#include <opencv2/highgui.hpp>#include <opencv2...转载 2018-08-19 09:31:10 · 617 阅读 · 0 评论 -
【OpenCV图像处理】一、图像相加、相减、相乘与相除的实现【转载】
看完了数字图像处理后,从头开始使用opencv进行相关内容的实现,使用的环境是VS2013+OpenCV2.4.91.图像的加运算加运算就是两幅图像对应像素的灰度值或彩色分量进行相加。主要有两种用途,一种是消除图像的随机噪声,主要做是讲同一场景的图像进行相加后再取平均;另一种是用来做特效,把多幅图像...转载 2018-08-18 19:38:28 · 40912 阅读 · 4 评论