网站的ftp,博物馆网站 微信 微博 建设,拼多多海外跨境电商入驻流程,从化区建设局网站文章目录 像素重映remap 重映算子代码示例 像素重映 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去#xff0c;形成一张新的图像。 g(x,y)是重映射之后的图像#xff0c;h(x,y)是功能函数#xff0c;f是源图像 remap 重映算子
Remap… 文章目录 像素重映remap 重映算子代码示例 像素重映 简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去形成一张新的图像。 g(x,y)是重映射之后的图像h(x,y)是功能函数f是源图像 remap 重映算子
Remap(
InputArray src,// 输入图像
OutputArray dst,// 输出图像
InputArray map1,// x 映射表 CV_32FC1/CV_32FC2
InputArray map2,// y 映射表
int interpolation,// 选择的插值方法常见线性插值可选择立方等
int borderMode,// BORDER_CONSTANT
const Scalar borderValue// color
)代码示例
#include opencv2/opencv.hpp
#include iostream
#include math.husing namespace cv;
Mat src, dst, map_x, map_y;
const char* OUTPUT_TITLE remap demo;
int index 0;
void update_map(void);
int main(int argc, char** argv) {src imread(D:/vcprojects/images/test.png);if (!src.data) {printf(could not load image...\n);return -1;}char input_win[] input image;namedWindow(input_win);namedWindow(OUTPUT_TITLE);imshow(input_win, src);map_x.create(src.size(), CV_32FC1);map_y.create(src.size(), CV_32FC1);int c 0;while (true) {c waitKey(500);if ((char)c 27) {break;}index c % 4;update_map();remap(src, dst, map_x, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 255, 255));imshow(OUTPUT_TITLE, dst);}return 0;
}void update_map(void) {for (int row 0; row src.rows; row) {for (int col 0; col src.cols; col) {switch (index) {case 0:if (col (src.cols * 0.25) col (src.cols*0.75) row (src.rows*0.25) row (src.rows*0.75)) {map_x.atfloat(row, col) 2 * (col - (src.cols*0.25));map_y.atfloat(row, col) 2 * (row - (src.rows*0.25));}else {map_x.atfloat(row, col) 0;map_y.atfloat(row, col) 0;}break;case 1:map_x.atfloat(row, col) (src.cols - col - 1);map_y.atfloat(row, col) row;break;case 2:map_x.atfloat(row, col) col;map_y.atfloat(row, col) (src.rows - row - 1);break;case 3:map_x.atfloat(row, col) (src.cols - col - 1);map_y.atfloat(row, col) (src.rows - row - 1);break;}}}
}