91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7.49MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-10-01
  • 語(yǔ)言: 其他
  • 標(biāo)簽: opencv??sift??surf??ransac??

資源簡(jiǎn)介

利用OpenCV-2.4.13和vs2017實(shí)現(xiàn)SURF/SIFT + RANSAC + 線性加權(quán)融合來(lái)實(shí)現(xiàn)圖像的左右拼接,上下也可以拼接,改一下adjustMat就可以(代碼中是x偏移量,你換成y的偏移量,把值換成rows就好,同時(shí)在計(jì)算透視變換的時(shí)候Size參數(shù)改為(image02.cols, image02.rows + image01.rows)),代碼均有注釋,同時(shí)將每一步結(jié)構(gòu)都顯示出來(lái)了,附有示例圖片,直接就可以運(yùn)行。

資源截圖

代碼片段和文件信息

//?ImageMosaic.cpp?:?此文件包含?“main“?函數(shù)。程序執(zhí)行將在此處開(kāi)始并結(jié)束。
//?source?code?:?https://blog.csdn.net/dcrmg/article/details/52629856
//?explanation?:?https://blog.csdn.net/u012384044/article/details/73162675#commentBox
//

#include?“pch.h“
#include?
#include?

#include?“opencv2/highgui/highgui.hpp“??
#include?“opencv2/nonfree/nonfree.hpp“??
#include?“opencv2/legacy/legacy.hpp“?

using?namespace?cv;
using?namespace?std;

//計(jì)算原始圖像點(diǎn)位在經(jīng)過(guò)矩陣變換后在目標(biāo)圖像上對(duì)應(yīng)位置
Point2f?getTransformPoint(const?Point2f?originalPoint?const?Mat?&transformMaxtri);

int?main(int?argc?char?*argv[])
{
string?filename1?=?“100-0038_img.jpg“;
string?filename2?=?“100-0039_img.jpg“;
Mat?image01?=?imread(filename1);
Mat?image02?=?imread(filename2);
imshow(“拼接圖像1“?image01);
imshow(“拼接圖像2“?image02);

//灰度圖轉(zhuǎn)換
Mat?image1?image2;
cvtColor(image01?image1?CV_RGB2GRAY);
cvtColor(image02?image2?CV_RGB2GRAY);

//提取特征點(diǎn)??
SurfFeatureDetector?detector(800);????//?surf.?hessianThreshold
//SiftFeatureDetector?detector(800);??//?sift.?nfeatures

vector?keyPoint1?keyPoint2;
detector.detect(image1?keyPoint1);
detector.detect(image2?keyPoint2);

//?顯示特征點(diǎn)
Mat?image1KeyPoint?image2KeyPoint;
drawKeypoints(image01?keyPoint1?image1KeyPoint
Scalar::all(-1)?DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
drawKeypoints(image02?keyPoint2?image2KeyPoint
Scalar::all(-1)?DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow(“image1Keypoint“?image1KeyPoint);
imshow(“image2Keypoint“?image2KeyPoint);
//waitKey(0);

//特征點(diǎn)描述,為下邊的特征點(diǎn)匹配做準(zhǔn)備??
SurfDescriptorExtractor?descriptor;????//surf
//SiftDescriptorExtractor?descriptor;??//sift

Mat?imageDesc1?imageDesc2;
descriptor.compute(image1?keyPoint1?imageDesc1);
descriptor.compute(image2?keyPoint2?imageDesc2);

//獲得匹配特征點(diǎn),并提取最優(yōu)配對(duì)??
FlannbasedMatcher?matcher;
vector?matchePoints;
matcher.match(imageDesc1?imageDesc2?matchePoints?Mat());

//?粗匹配圖像
Mat?outImg;
drawMatches(image01?keyPoint1?image02?keyPoint2?matchePoints?outImg
Scalar::all(-1)?Scalar::all(-1)?vector()?DrawMatchesFlags::DRAW_RICH_KEYPOINTS);
imshow(“粗匹配結(jié)果“?outImg);
//waitKey(0);

sort(matchePoints.begin()?matchePoints.end());?//特征點(diǎn)排序
//獲取排在前N個(gè)的最優(yōu)匹配特征點(diǎn)
vector?imagePoints1?imagePoints2;
for?(int?i?=?0;?i? {
imagePoints1.push_back(keyPoint1[matchePoints[i].queryIdx].pt);
imagePoints2.push_back(keyPoint2[matchePoints[i].trainIdx].pt);
}

//獲取圖像1到圖像2的投影映射矩陣,尺寸為3*3
vector?inliersMask(imagePoints1.size());
Mat?homo?=?findHomography(imagePoints1?imagePoints2?CV_RANSAC?3.0?inliersMask);
vectormatches_ransac;
//?手動(dòng)的保留RANSAC過(guò)濾后的匹配點(diǎn)對(duì)?
//?這一步做的沒(méi)必要,因?yàn)樽詈蟠_定匹配區(qū)域的時(shí)候只用到了第一個(gè)點(diǎn)。
for?(int?i?=?0;?i? {
cout?< if?(inliersMask[i])
{
matches_ransac.push_back(matchePoints[i]);
}
}
drawMatches(image01?keyPoint1?image02?keyPoint

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-10-15?17:30??ImageMosaic\
?????目錄???????????0??2018-10-16?15:06??ImageMosaic\ImageMosaic\
?????目錄???????????0??2018-10-15?17:30??ImageMosaic\ImageMosaic\.vs\
?????目錄???????????0??2018-10-15?17:30??ImageMosaic\ImageMosaic\.vs\ImageMosaic\
?????目錄???????????0??2018-10-16?15:06??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\
?????文件???????51712??2018-10-16?15:06??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\.suo
?????文件????19685376??2018-10-16?15:06??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\Browse.VC.db
?????目錄???????????0??2018-10-16?09:19??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\ipch\
?????目錄???????????0??2018-10-16?15:06??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\ipch\AutoPCH\
?????文件??????327680??2018-10-16?09:19??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\ipch\beec6b604aac47a8.ipch
?????文件??????327680??2018-10-16?15:04??ImageMosaic\ImageMosaic\.vs\ImageMosaic\v15\ipch\e7d55abe53aad59d.ipch
?????目錄???????????0??2018-10-16?15:05??ImageMosaic\ImageMosaic\ImageMosaic\
?????文件??????109215??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0023_img.jpg
?????文件??????118280??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0024_img.jpg
?????文件??????133387??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0025_img.jpg
?????文件???????61019??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0038_img.jpg
?????文件???????87303??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0039_img.jpg
?????文件???????60433??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\100-0040_img.jpg
?????文件??????126555??2004-10-22?08:25??ImageMosaic\ImageMosaic\ImageMosaic\101-0104_img.jpg
?????文件???????13412??2018-10-16?15:04??ImageMosaic\ImageMosaic\ImageMosaic\ImageMosaic.cpp
?????文件????????9531??2018-10-16?09:19??ImageMosaic\ImageMosaic\ImageMosaic\ImageMosaic.vcxproj
?????文件????????1159??2018-10-15?17:30??ImageMosaic\ImageMosaic\ImageMosaic\ImageMosaic.vcxproj.filters
?????文件?????????165??2018-10-15?17:30??ImageMosaic\ImageMosaic\ImageMosaic\ImageMosaic.vcxproj.user
?????文件?????????188??2018-10-15?17:30??ImageMosaic\ImageMosaic\ImageMosaic\pch.cpp
?????文件?????????614??2018-10-15?17:30??ImageMosaic\ImageMosaic\ImageMosaic\pch.h
?????文件??????215891??2018-10-16?15:04??ImageMosaic\ImageMosaic\ImageMosaic\拼接結(jié)果.jpg
?????文件????????1447??2018-10-15?17:30??ImageMosaic\ImageMosaic\ImageMosaic.sln

評(píng)論

共有 條評(píng)論