- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
cv::detail::computeImageFeatures 是 OpenCV 中用于計算一組圖像的特征點和描述符的函數,通常在圖像拼接或類似的任務中使用。這個函數可以幫助簡化處理多張圖片時的特征提取過程。
函數原型
void cv::detail::computeImageFeatures
(const Ptr< Feature2D > & featuresFinder,InputArrayOfArrays images,std::vector< ImageFeatures > & features,InputArrayOfArrays masks = noArray()
)
參數
- featuresFinder: 一個指向特征檢測器的智能指針(如 ORB, SIFT 等)。
- images: 輸入圖像數組,可以是 std::vectorcv::Mat 或類似的結構。
- features: 輸出參數,存儲每個輸入圖像的特征(包括關鍵點和描述符)。
- masks: 可選參數,指定每個輸入圖像的掩碼,用于限制特征點檢測的區域,默認為 noArray() 表示不使用掩碼。
代碼示例
#include <opencv2/opencv.hpp>
#include <opencv2/stitching/detail/autocalib.hpp>
#include <opencv2/stitching/detail/util.hpp>using namespace cv;
using namespace cv::detail;int main()
{// 加載圖像std::vector< Mat > imgs;imgs.push_back( imread( "/media/dingxin/data/study/OpenCV/sources/images/stich1.png" ) );imgs.push_back( imread( "/media/dingxin/data/study/OpenCV/sources/images/stich2.png" ) );if ( imgs[ 0 ].empty() || imgs[ 1 ].empty() ){std::cerr << "無法讀取圖像文件" << std::endl;return -1;}// 初始化特征檢測器Ptr< Feature2D > feature_detector = ORB::create();// 存儲計算出的特征std::vector< ImageFeatures > features( imgs.size() );// 計算特征computeImageFeatures( feature_detector, imgs, features );// 打印每張圖的特征點數量作為驗證for ( size_t i = 0; i < features.size(); ++i ){std::cout << "Image " << i + 1 << " keypoints: " << features[ i ].keypoints.size() << std::endl;}// 如果需要進一步處理這些特征,比如匹配等操作...return 0;
}
運行結果
Image 1 keypoints: 500
Image 2 keypoints: 500