OpenCV-DFT最優尺寸cv::getOptimalDFTSize的設置
函數原型
int getOptimalDFTSize(int vecsize);
參數說明
int類型的vecsize,向量尺寸,一般是圖片的寬或高。
測試代碼
#include<iostream> #include<opencv2/opencv.hpp> #include<ctime> using namespace std; using namespace cv; cv::Mat image_make_border(cv::Mat &src); int main(void) { Mat test = imread("liu.jpg", 0); cv::Mat result=image_make_border(test); imshow("original", test); imshow("result", result/255); waitKey(0); system("pause"); return 0; } // 圖像邊界處理 cv::Mat image_make_border(cv::Mat &src) { cout << "src row:" << src.rows << endl; cout << "src col:" << src.cols << endl; int w = cv::getOptimalDFTSize(src.cols); // 獲取DFT變換的最佳寬度 int h = cv::getOptimalDFTSize(src.rows); // 獲取DFT變換的最佳高度 cout << "w:" << w << endl; cout << "h:" << h << endl; cv::Mat padded; // 常量法擴充圖像邊界,常量 = 0 cv::copyMakeBorder(src, padded, 0, h - src.rows, 0, w - src.cols, cv::BORDER_CONSTANT, cv::Scalar::all(0)); padded.convertTo(padded, CV_32FC1); return padded; }
測試效果
圖1 原圖
圖2 擴充後圖像
圖3 尺寸變化
該函數可以自動計算最適合進行離散傅裡葉變換的圖像尺寸大小,從而提高計算速度;從圖中可以看出,寬的尺寸非常合適,而高需要擴展到4096,從而多瞭下方的黑線區域,擴展的數值由copyMakeBorder函數決定,後續會介紹該函數~
到此這篇關於OpenCV-DFT最優尺寸cv::getOptimalDFTSize的設置的文章就介紹到這瞭,更多相關OpenCV-DFT最優尺寸cv::getOptimalDFTSize內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- C++ Opencv自寫函數實現膨脹腐蝕處理技巧
- VisualStudio2019配置OpenCV的詳細過程
- OpenCV計算平均值cv::mean實例代碼
- openCV實現圖像分割
- C++ OpenCV實戰之制作九宮格圖像