源码如下:
#include <opencv2/opencv.hpp>
#include <iostream>
int main(int argc, char* argv[])
{
cv::namedWindow("Example2_11", cv::WINDOW_AUTOSIZE);
cv::namedWindow("Log_Polar", cv::WINDOW_AUTOSIZE);
cv::VideoCapture capture(argv[1]);
double fps = capture.get(cv::CAP_PROP_FPS);
cv::Size size(
(int)capture.get(cv::CAP_PROP_FRAME_WIDTH),
(int)capture.get(cv::CAP_PROP_FRAME_HEIGHT)
);
cv::VideoWriter writer;
writer.open(argv[2], CV_FOURCC('M', 'J', 'P', 'G'), fps, size);
cv::Mat logpolar_frame, bgr_frame;
for (;;) {
capture >> bgr_frame;
if (bgr_frame.empty())break;//end if done
cv::imshow("Example2_11", bgr_frame);
cv::logPolar(
bgr_frame,
logpolar_frame,
cv::Point2f(
bgr_frame.cols / 2,
bgr_frame.rows / 2
),
40,
//Input color frame//Output log-polar frame
//Centerpoint for log-polar transformation//
cv::WARP_FILL_OUTLIERS
);
//Magnitude(scale parameter)//Fill outliers with 'zero'
cv::imshow("Log_Polar", logpolar_frame); writer << logpolar_frame;
char c = cv::waitKey(10);
if (c == 27)break;
}
//allow the user to break out
capture.release();
}