-
大小: 80.22MB文件类型: .7z金币: 2下载: 1 次发布日期: 2023-05-05
- 语言: 其他
- 标签: opencv 4.2.0 opencv_contr tbb
资源简介
Windows环境使用VS2017编译opencv-4.2.0和opencv_contrib-4.2.0源码,支持TBB
包含x86和x64
https://blog.csdn.net/libaineu2004/article/details/104252289
包含x86和x64
https://blog.csdn.net/libaineu2004/article/details/104252289
代码片段和文件信息
// cv420test.cpp : 此文件包含 “main“ 函数。程序执行将在此处开始并结束。
//
#include
#include
#include
//原文链接:https://blog.csdn.net/libaineu2004/article/details/104252289
int main()
{
cv::Mat imageL = cv::imread(“origin_1.jpg“);
cv::Mat imageR = cv::imread(“origin_2.jpg“);
/*imshow(“1“ imageL);
imshow(“2“ imageR);
waitKey();
return 0;*/
//提取特征点方法
//SIFT
cv::Ptr sift = cv::xfeatures2d::SIFT::create();
//ORB
//cv::Ptr orb = cv::ORB::create();
//SURF
//cv::Ptr surf = cv::xfeatures2d::SURF::create();
//特征点
std::vector keyPointL keyPointR;
//单独提取特征点
sift->detect(imageL keyPointL);
sift->detect(imageR keyPointR);
//画特征点
cv::Mat keyPointImageL;
cv::Mat keyPointImageR;
drawKeypoints(imageL keyPointL keyPointImageL cv::Scalar::all(-1) cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
drawKeypoints(imageR keyPointR keyPointImageR cv::Scalar::all(-1) cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
//显示窗口
cv::namedWindow(“KeyPoints of imageL“);
cv::namedWindow(“KeyPoints of imageR“);
//显示特征点
cv::imshow(“KeyPoints of imageL“ keyPointImageL);
cv::imshow(“KeyPoints of imageR“ keyPointImageR);
//特征点匹配
cv::Mat despL despR;
//提取特征点并计算特征描述子
sift->detectAndCompute(imageL cv::Mat() keyPointL despL);
sift->detectAndCompute(imageR cv::Mat() keyPointR despR);
//Struct for DMatch: query descriptor index train descriptor index train image index and distance between descriptors.
//int queryIdx –>是测试图像的特征点描述符( descriptor )的下标,同时也是描述符对应特征点(keypoint)的下标。
//int trainIdx –> 是样本图像的特征点描述符的下标,同样也是相应的特征点的下标。
//int imgIdx –>当样本是多张图像的话有用。
//float distance –>代表这一对匹配的特征点描述符(本质是向量)的欧氏距离,数值越小也就说明两个特征点越相像。
std::vector matches;
//如果采用 flannbased 方法 那么 desp通过orb的到的类型不同需要先转换类型
if (despL.type() != CV_32F || despR.type() != CV_32F)
{
despL.convertTo(despL CV_32F);
despR.convertTo(despR CV_32F);
}
cv::PtrriptorMatcher> matcher = cv::DescriptorMatcher::create(“Flannbased“);
matcher->match(despL despR matches);
//计算特征点距离的最大值
double maxDist = 0;
for (int i = 0; i < despL.rows; i++)
{
double dist = matches[i].distance;
if (dist > maxDist)
maxDist = dist;
}
//挑选好的匹配点
std::vector< cv::DMatch > good_matches;
for (int i = 0; i < despL.rows; i++)
{
if (matches[i].distance < 0.5 * maxDist)
{
good_matches.push_back(matches[i]);
}
}
cv::Mat imageOutput;
cv::drawMatches(imageL keyPointL imageR keyPointR good_matches imageOutput);
cv::namedWindow(“picture of matching“);
cv::imshow(“picture of matching“ imageOutput);
cv::waitKey(0);
return 0;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
- 上一篇:JT/T808、809模拟、压测工具
- 下一篇:36个漂亮的各类型网站源代码
相关资源
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- CISP V4.2.0 修订版讲义
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
- SIFT特征提取+匹配
- 基于SIFT算法的图像拼接.rar
- opencv4.1.1+contrib完整版.zip
评论
共有 条评论