日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊)

發(fā)布時(shí)間:2025/3/21 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

家好!我是梨子同學(xué)!

希望大家多多支持我!哈哈

為了感謝每一個(gè)關(guān)注我的小可愛:💓每篇文章的項(xiàng)目源碼都是無償分享滴💓👇👇👇👇

點(diǎn)這里藍(lán)色這行字體自取,需要什么源碼記得說標(biāo)題名字哈!私信我也可!

小編也一直在學(xué)習(xí)編程,如代碼小程序出現(xiàn)錯(cuò)誤歡迎大家評論區(qū)留言哈!

最后——如果文章有幫助到你,記得“關(guān)注”、“點(diǎn)贊”、“評論”三連哦~

?

正文

OpenCV中有一個(gè)功能: 圖像拼接,該模塊通過簡單的高級API設(shè)置,可以獲得比較好的圖像拼接

效果,OpenCV官方提供了一個(gè)高度集成的API函數(shù)?Stitcher,只要2行代碼就可以得到一個(gè)很好

的拼接圖像。

Ptr<Stitcher>?stitcher?=?Stitcher::create(mode); Stitcher::Status?status?=?stitcher->stitch(imgs,?pano);

其中第一行代碼是創(chuàng)建拼接Stitcher的指針,第二行代碼是調(diào)用拼接算法,

  • imgs表示的輸入?yún)?shù),是一系列Mat對象的vector。

  • pano表示的輸出結(jié)果,是拼接之后的Mat對象

今天小編就教教大家,讓大家實(shí)例演示看下這個(gè)拼接效果!

?

stitching拼接算法?流程圖示如下:

?

可見圖像拼接是一個(gè)很復(fù)雜的算法,是由一系列的基礎(chǔ)算法構(gòu)成,這些基礎(chǔ)算法如果你不是很了

解,其實(shí)很難實(shí)現(xiàn)自己的圖像拼接,這其中影響拼接算法stitch工作最常見幾個(gè)算法子模塊為:

  • 特征發(fā)現(xiàn)與描述子
    常見的特征可以選擇SIFT、SURF、AKAZE、ORB等特征算子進(jìn)行匹配

  • 相機(jī)參數(shù)
    不同的相機(jī)參數(shù)與設(shè)置會導(dǎo)致不同的結(jié)果

  • 融合方式(blender)
    不同的融合方式,也會導(dǎo)致不同結(jié)果

  • 各種閾值設(shè)置,特別是config threshold,如果無法特征匹配,記得把這個(gè)閾值調(diào)小點(diǎn)

其它參數(shù)可以如何設(shè)置可以參考OpenCV的官方文檔,總之無法拼接就去調(diào)參數(shù),一般最后都會拼

接成功,此外該算法速度比較慢,但是支持GPU執(zhí)行,所以想要實(shí)時(shí)的可以嘗試如何GPU下執(zhí)

行,我這里沒有嘗試 ,誰嘗試過的可以留言分享,我負(fù)責(zé)置頂。

一、效果展示

1)魚眼相機(jī)

2)環(huán)視(平面曲翹)

?3)默認(rèn)效果

二、代碼展示

#include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace std;int main(int argc, char** argv) {vector<string> files;glob("D:/images/zsxq/1", files);vector<Mat> images;for (int i = 0; i < files.size(); i++) {printf("image file : %s \n", files[i].c_str());images.push_back(imread(files[i]));}// 設(shè)置拼接模式與參數(shù)Mat result1, result2, result3;Stitcher::Mode mode = Stitcher::PANORAMA;Ptr<Stitcher> stitcher = Stitcher::create(mode);// 拼接方式-多通道融合auto blender = detail::Blender::createDefault(detail::Blender::MULTI_BAND);stitcher->setBlender(blender);// 拼接Stitcher::Status status = stitcher->stitch(images, result1);// 平面曲翹拼接auto plane_warper = makePtr<cv::PlaneWarper>();stitcher->setWarper(plane_warper);status = stitcher->stitch(images, result2);// 魚眼拼接auto fisheye_warper = makePtr<cv::FisheyeWarper>();stitcher->setWarper(fisheye_warper);status = stitcher->stitch(images, result3);// 檢查返回if (status != Stitcher::OK){cout << "Can't stitch images, error code = " << int(status) << endl;return EXIT_FAILURE;}imwrite("D:/result1.png", result1);imwrite("D:/result2.png", result2);imwrite("D:/result3.png", result3);waitKey(0);return 0; }

注意:一起運(yùn)行速度比較慢!是真的比較慢!

總結(jié)

關(guān)注小編獲取更多精彩內(nèi)容!

?制作不易,記得一鍵三連哦!!?如需打包好的源碼+素材免費(fèi)分享滴!傳送門

總結(jié)

以上是生活随笔為你收集整理的【Opencv探索】基于OpenCV的“图像拼接特效”(这效果很实用啊)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。