
OpenCV函数知识
仙女阳
希望多学习
展开
-
opencv图像前景目标提取
1、功能 论文图片处理需要用到简单的前景目标提取,这里采用opencv的grabCut函数; 前期可以采用selectROI获取矩形框(需要添加contrib库),也可以手动设定rect; 添加了一个图片批处理操作,glob函数获取文件夹的图片。 本文运行环境为VS2017+OPENCV4.0.1.2、代码#include <open...原创 2019-04-11 19:29:29 · 5415 阅读 · 0 评论 -
opencv中匹配点对的坐标提取
在opencv中,特征检测、描述、匹配都有集成的函数。vector<DMatch> bestMatches;用来存储得到的匹配点对。那么如何提取出其中的坐标呢? int index1, index2; for (int i = 0; i < bestMatches.size(); i++)//将匹配的特征点坐标赋给point { index1 = be...原创 2018-09-06 10:49:40 · 12048 阅读 · 5 评论 -
关于摄像头的一些零碎知识
项目上需要用到读取摄像头的帧数据,在对视频帧做算法处理。简单了解了一下摄像头的分类和如何读取。1、总体上来说,在win平台下面摄像头数据采集无外乎两种方式vfw和direct show。其中vfw是不依赖于sdk的,只要有系统api即可实现摄像头数据的采集,属于早期常用的视频采集库;而direct show则是需要配合direct x的sdk才可以使用,一般用于wdm驱动的usb摄像头。在...原创 2018-04-24 10:26:45 · 521 阅读 · 0 评论 -
借助opencv将unsigned char数组显示为图像
在用C或者C++做图像处理程序时,经常需要把结果图显示出来看看效果,这时候可以借助opencv的Mat类型,如下: Mat gray1_mat(rect_height, rect_width, CV_8UC1, minsrc);//为了显示图片 先改为mat类型 imshow("去雾图像显示", gray1_mat); waitKey();注意参数:1、当图像为灰度图像时,用CV_8...原创 2018-04-20 10:24:38 · 3981 阅读 · 0 评论 -
opencv的两个错误
1、imwrite未定义标识符 先检查opencv和C++有没有配置好,再看有没有包含相应的头文件,最后发现是因为没有使用cv的命名空间,需要加上using namespase cv;2、cvCvtColor的使用 函数原型:cvCvtColor(src,dst,CV_BGR2GRAY) 其中src和dst使用前必须提前申请好内存空间,IplImage *dst = 0;这样的做法是错误的...原创 2018-04-19 16:14:55 · 577 阅读 · 1 评论 -
关于opencv读取摄像头的未解之谜
前段时间做项目需要用opencv读usb摄像头的视频数据,遇到很多无解的问题,虽然后来没有用到,但是还是记录下来,也许以后就知道答案了呢。1、无论摄像头的实际分辨率是多少,opencv读进来的视频分辨率都是640*480大小的,网上说可以用内置的函数修改分辨率的大小,我试了下下面的函数语句,虽然分辨率确实变成了720p,但是清晰度并没有提升甚至有些模糊,看起来像是强行插值扯大的,没有真正得...原创 2018-04-18 20:38:46 · 3466 阅读 · 1 评论 -
opencv连续读图
1.功能 利用opencv连续读取指定文件夹中连续命名的图像,可以根据需要设置图像的命名间隔和图像的个数。2.代码#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>int main(...原创 2018-03-15 11:12:57 · 1384 阅读 · 0 评论 -
opencv读取视频并保存为图片
1.功能: opencv读取指定文件夹中的视频文件,按照一定的间隔截取某些帧,将这些帧图像连续命名,存储在指定文件夹里。2.代码如下:(1)IplImage#include <stdlib.h>#include <stdio.h>#include <math.h>#include <cv.h>#include <highgui....原创 2018-03-15 11:08:10 · 3186 阅读 · 1 评论 -
Opencv中IplImage的四字节对齐问题
一、结构解释 IplImage数据结构体中有两个宽度: 1 是width属性,表示图像的每行像素数; 2 是widthStep属性,表示存储一行像素需要的字节数。 在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。所以widthStep不等于width*nChannels。 三通道字节图像中,imageD...原创 2018-03-13 17:15:31 · 1029 阅读 · 0 评论 -
opencv中的矩阵拼接
hconcat、vconcatMat_ T_L = (Mat_(3, 1) << -518.97666, 01.20629, 9.14632);//平移向量Mat_ T_R = (Mat_(3, 2) << 518.97666, -01.20629,-9.14632,518.97666, -01.20629, -9.14632);//旋转向量Mat_ Zero = (Mat_(1, 4)原创 2018-01-08 21:08:51 · 3352 阅读 · 1 评论 -
Mat的初始化以及Mat与数组的相互转化
Mat类型数据的初始化方法可以有以下两种:1、直接初始化Mat_ T_L = (Mat_(3, 1) 2、利用数组初始化float A[4][3] = { 0 };Mat A_mat = Mat(4, 3, CV_32F, A);//如果是double类型用64 注意:初始化数组时常遇到“无法显示标识符”的提示,可能用了中文的逗号;Mat转化为数组可以用以下两种方法原创 2018-01-08 20:27:28 · 19448 阅读 · 0 评论 -
Opencv图像保存到电脑及显示
针对两种类型的图片有两种不同的方法:1、对于Mat类型图像,用imwrite、imshowMat img_goodmatch; imwrite("最终匹配结果.bmp", img_goodmatch); //“”里面为路径及图片名,可以改为绝对路径 namedWindow("筛选原创 2018-01-08 20:11:13 · 507 阅读 · 0 评论 -
Opencv imshow显示不出来图片
VS+OPENCV处理图像时,imshow显示图片一片灰色,刚开始以为图片太大一直加载不出来,但是一直等不到显示出来,最后发现是因为最后忘记写cvWaitKey(0);//或者waitKey(0);原创 2018-01-08 19:44:02 · 10847 阅读 · 7 评论 -
罗德里格斯(Rodrigues)旋转向量与矩阵的变换
在做双目立体视觉深度图像生成的时候,遇到旋转向量(1x3)与旋转矩阵(3x3)的概念,得知二者可以通过罗德里格斯相互转化。1.旋转的表示 处理三维旋转问题时,通常采用旋转矩阵的方式来描述旋转变换。旋转矩阵有以下两种方式得到。 物体在三维空间中的旋转,可以被分为解为在直接坐标系下,分别先后围绕x,y,z坐标轴旋转得到。旋转的角度也就是我们常听到的角度roll,pit原创 2017-12-14 11:14:55 · 39581 阅读 · 2 评论 -
CvMat,Mat和IplImage之间的转化和拷贝
在OpenCV中Mat、CvMat和IplImage类型都可以代表和显示图像。IplImage由CvMat派生,而CvMat由CvArr派生即CvArr -> CvMat -> IplImage,Mat类型则是C++版本的矩阵类型(CvArr用作函数的参数,无论传入的是CvMat或IplImage,内部都是按CvMat处理)。其中Mat类型侧重于计算,数学性较高,OpenCV对Mat类型的计算也进转载 2017-09-28 21:03:28 · 933 阅读 · 0 评论