OpenCV-DFT最優(yōu)尺寸cv::getOptimalDFTSize的設(shè)置
函數(shù)原型
int getOptimalDFTSize(int vecsize);
參數(shù)說明
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 尺寸變化
該函數(shù)可以自動計算最適合進行離散傅里葉變換的圖像尺寸大小,從而提高計算速度;從圖中可以看出,寬的尺寸非常合適,而高需要擴展到4096,從而多了下方的黑線區(qū)域,擴展的數(shù)值由copyMakeBorder函數(shù)決定,后續(xù)會介紹該函數(shù)~
到此這篇關(guān)于OpenCV-DFT最優(yōu)尺寸cv::getOptimalDFTSize的設(shè)置的文章就介紹到這了,更多相關(guān)OpenCV-DFT最優(yōu)尺寸cv::getOptimalDFTSize內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。