![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
立体测量
文章平均质量分 61
小鹿( ﹡ˆoˆ﹡ )
这个作者很懒,什么都没留下…
展开
-
windows下Middlebury离线工具使用
windows下Middlebury离线工具使用原创 2022-06-20 19:41:08 · 43 阅读 · 0 评论 -
视差图转为深度图、点云图以及图像数据类型的对应
一、视差图、深度图的区别视差图转为深度图_滑了丝的螺丝钉-CSDN博客_视差转深度有人容易把视差图跟深度图搞混,一切还是要从这个公式说起:Z=f*B/dZ是深度,B是双目相机的光心间距(基线长度),f是相机焦距,d就是视差(左右相机对应特征像素坐标差值)。而我们说的视差图就是灰度图的灰度值为d的时候,想转化为Z就变成了深度图,所以这是个并不复杂的问题。代码里fx是内参的值,x方向的焦距,baseline是基线长。这里要注意深度图的类型,CV_8UC1不同类型结果会有问题,ushort也是一个问题,总感觉原创 2022-02-25 10:21:33 · 120 阅读 · 0 评论 -
opencv特征匹配中match与KnnMatch返回数据类型
1、match # 初始化 BFMatcher bf = cv.BFMatcher() # 对描述子进行匹配 # des1/des2分别是两幅图片特征点的特征向量 matches = bf.match(des1, des2) # 打印match返回数据的类型 print(type(matches[0]))match匹配的返回结果是DMatch类型。DMatch数据结构包含三个非常重要的数据分别是queryIdx,trainIdx,di原创 2022-04-21 21:12:29 · 9312 阅读 · 4 评论 -
图像与数据类型的对应,以及如何显示
mat.type()函数opencv中Mat存在各种类型,其中mat有一个type()的函数可以返回该Mat的类型。类型表示了矩阵中元素的类型以及矩阵的通道个数,它是一系列的预定义的常量。具体的有以下值:通道数我们可以发现,C4=C3+8、C3=C2+8、C2=C1+81、显示数据类型#include <iostream>#include <sstream>#include <time.h>#include <stdio.h>原创 2022-02-23 22:41:24 · 3547 阅读 · 0 评论 -
高斯金字塔
1、为什么要构建高斯金字塔高斯金字塔模仿的是图像的不同的尺度,尺度应该怎样理解?对于一副图像,你近距离观察图像,与你在一米之外观察,看到的图像效果是不同的,前者比较清晰,后者比较模糊,前者比较大,后者比较小,通过前者能看到图像的一些细节信息,通过后者能看到图像的一些轮廓的信息,这就是图像的尺度,图像的尺度是自然存在的,并不是人为创造的。好了,到这里我们明白了,其实以前对一幅图像的处理还是比较单调的,因为我们的关注点只落在二维空间,并没有考虑到“图像的纵深”这样一个概念,如果将这些内容考虑进去我们是不是会原创 2022-03-30 11:01:46 · 8702 阅读 · 0 评论 -
差分金字塔
1、原理DOG金字塔的每1组第i层是由高斯金字塔的每1组第i+1层减每1组第i层得到的。以此类推,逐组逐层生成每一个差分图像,所有差分图像构成差分金字塔;每一组在层数上,DOG金字塔比高斯金字塔少一层。DOG金字塔的构建可以用下图描述:2、 源码实现//差分金字塔//如果直接imshow差分图会显示不出人眼看到的图像,只有对这些DOG图像进行归一化,//可以很明显的看到差分图像所蕴含的特征,并且有一些特征是在不同模糊程度、不同//尺度下都存在的,这些特征正是Sift所要提取的原创 2022-03-30 16:27:18 · 1359 阅读 · 0 评论 -
opencv隔点采样(下采样)
1、先验知识对灰度图像来说,img.step[0]代表图像一行的的长度:img.step[0]=img.cols;img.step[1]代表图像一个元素的数据大小:img.step[0]=img.channels();img.data: uchar的指针,指向Mat数据矩阵的首地址。2、隔点采样#include <iostream>#include <opencv2/core.hpp>#include <opencv2/highgui.h.原创 2022-03-28 23:11:27 · 2389 阅读 · 0 评论 -
(C++)数组作为函数参数
#include<iostream>#include<ctime>using namespace std;struct Student{ string name=""; int age=0; double score=0;};struct Teacher{ string name=""; int age=0; Student student[5];};void allocate(Teacher t[],int len){ string tna.原创 2022-01-17 00:00:51 · 1606 阅读 · 0 评论 -
c++中static_cast用法与uchar/char的区别
1、c++中static_cast用法static_cast是指显性类型强制转换,如:int a = static_cast<int>(120.34);结果为a= 120. 和C语言学习时的显性意义一样,但是编译器会对此类型转换进行检查。另外还有3种转换:const属性用const_cast。基本类型转换用static_cast。多态类之间的类型转换用daynamic_cast。不同类型的指针类型转换用reinterpreter_cast。2、uchar与c原创 2022-03-29 23:10:56 · 1405 阅读 · 0 评论 -
Canny边缘检测源码
#include <iostream>#include <opencv2/core.hpp>#include <opencv2/highgui.hpp>#include <opencv2/imgproc.hpp>#include<vector>#include<Eigen/Core>#include <corecrt_math_defines.h>using namespace std;using name.原创 2022-03-24 19:59:06 · 4155 阅读 · 0 评论 -
(opencv)保存和读取文件、MATLAB将双目标定后的数据转换为.xml文件
一、保存文件#include<opencv2/opencv.hpp>#include<iostream>using namespace std;using namespace cv;#include<vector>//保存.xml文件时需要注意2个问题://1 需要保存的Mat型变量定义时必须要初始化,否则程序编译会出错;//2 保存时变量的标识符命名中不能出现“.”int main(int argc, char* argv[]){ Size.原创 2022-01-18 23:28:23 · 53 阅读 · 0 评论 -
张正友双目标定以及相机内参的含义
#include <iostream>#include <sstream>#include <time.h>#include <stdio.h>#include <string>#include <opencv2/core.hpp>#include <opencv2/core/utility.hpp>#include <opencv2/imgproc.hpp>#include <open.原创 2021-12-22 15:14:17 · 46 阅读 · 0 评论 -
OpenCV Mat类型的遍历与访问
1、指针遍历 uchar *data1 = M.ptr<uchar>(0);只有“()”需要uchar类型的指针接收 uchar data2 = M.ptr<uchar>(1)[2]; uchar data3 = M.ptr<uchar>(2)[3];注意:1.图像的指针是从(0,0)位置开始,并且“()”代表行,“【】”代表列;因此“(0)”是第一行,“【1】”是第二列。2.由于mat中存储的像素数据是uchar或vec3d格式,.........原创 2022-03-29 22:08:41 · 3952 阅读 · 0 评论