- 操作系統:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 編程語言:C++11
算法描述
該函數創建一個 基于最小特征值(Minimum Eigenvalue)的角點響應計算對象,這是另一種經典的角點檢測方法(類似于 Shi-Tomasi 角點檢測器)。
返回的是 cv::Ptrcv::cuda::CornernessCriteria 類型的對象,可用于后續調用 .compute() 方法對圖像進行角點響應計算。
函數原型
Ptr<CornernessCriteria> cv::cuda::createMinEigenValCorner
( int srcType,int blockSize,int ksize,int borderType = BORDER_REFLECT101
)
參數
- srcType 輸入源類型。目前僅支持 CV_8UC1 和 CV_32FC1。
- blockSize 鄰域大小。
- ksize Sobel 算子的孔徑參數。
- borderType 像素外推方法(邊界填充方式)。目前僅支持 BORDER_REFLECT101 和 BORDER_REPLICATE。
代碼示例
#include <iostream>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/opencv.hpp>int main()
{// Step 1: 加載圖像并轉換為灰度圖cv::Mat h_img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/chessboard.png", cv::IMREAD_GRAYSCALE );if ( h_img.empty() ){std::cerr << "Failed to load image!" << std::endl;return -1;}// Step 2: 將圖像上傳到 GPUcv::cuda::GpuMat d_img, d_corners;d_img.upload( h_img );// Step 3: 創建 MinEigenVal 角點檢測器int srcType = d_img.type(); // 圖像類型(如 CV_8UC1)int blockSize = 3; // 鄰域大小int ksize = 3; // Sobel 核大小cv::Ptr< cv::cuda::CornernessCriteria > criteria = cv::cuda::createMinEigenValCorner( srcType, blockSize, ksize );// Step 4: 執行角點響應計算criteria->compute( d_img, d_corners );// Step 5: 下載結果并顯示cv::Mat h_corners;d_corners.download( h_corners );cv::normalize( h_corners, h_corners, 0, 255, cv::NORM_MINMAX, CV_8U );cv::imshow( "original picture", h_img );cv::imshow( "Min EigenVal Corner Response", h_corners );cv::waitKey( 0 );return 0;
}