OpenCV函数remap详解


见下代码
原就是mapx和mapy
目标是i,j,即当前像素
Mat src_cpu = imread(in_filename); cv::Mat mapx, mapy; mapx.create(src_cpu.size(), CV_32FC1); mapy.create(src_cpu.size(), CV_32FC1); //将图像放大2倍 //cv::Mat change = (cv::Mat_
(2, 2) << 0.5, 0, 0, 0.5); //顺时针旋转30度 cv::Mat change = (cv::Mat_
(2, 2) << 0.866, -0.5, 0.5, 0.866); float a11 = change.at
(0, 0); float a12 = change.at
(0, 1); float a21 = change.at
(1, 0); float a22 = change.at
(1, 1); float b11 = 1 - change.at
(0, 0); float b12 = -change.at
(0, 1); float b21 = -change.at
(1, 0); float b22 = 1- change.at
(1, 1); float u0 = src_cpu.size().width / 2 + cx; float v0 = src_cpu.size().height / 2 + cy; for (int i = 0; i
(j, i) = a11*i + a12*j + u0*b11 + v0*b12; mapy.at
(j, i) = a21*i + a22*j + u0*b21 + v0*b22; } cv::Mat dst; cv::remap(src_cpu, dst, mapx, mapy, INTER_LINEAR); imshow("img", src_cpu); imshow("undistort", dst); waitKey(0);
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221166.html原文链接:https://javaforall.net
