Remapping 红太狼 2022-03-28 14:20 98阅读 0赞 ## 原理 ## 通过**几何变换**对原图进行旋转,放大,缩小:其实就是一种src 到 dst的一种映射关系。 比如说:对图像进行左右翻转: d s t = ( s r c . c o l s − x , y ) dst=(src.cols-x,y) dst=(src.cols−x,y) -------------------- ## 代码 ## #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; void updata_map(int& ind, Mat& map_x,Mat& map_y); Mat src; int main(void) { src = imread("../res/beauty.jpg",cv::IMREAD_COLOR); if(src.empty()) { cout << "can't load image,please confirm your path"<< endl; } Mat dst(src.size(),src.type()); Mat map_x(src.size(), CV_32FC1); //x方向的映射关系 Mat map_y(src.size(), CV_32FC1);//y方向的映射关系 const char* window_name = "Remapping Demo" ; namedWindow(window_name, cv::WINDOW_AUTOSIZE); int ind =0; for(;;) { updata_map(ind,map_x,map_y); //更新映射关系 remap(src,dst,map_x,map_y,cv::INTER_LINEAR,cv::BORDER_CONSTANT,Scalar(0,0,0)); imshow(window_name,dst); char c = (char)waitKey(1000); if(c == 27) { break; } } return 0; }; void updata_map(int& ind, Mat& map_x,Mat& map_y) { for(int i=0; i<src.rows; i++) for(int j=0; j<src.cols; j++) { switch(ind) { case 0: if(i>src.rows*0.25 && i<src.rows*0.75 && j>src.cols*0.25 && j<src.cols*0.75) //在中间 { map_x.at<float>(i,j) = 2*j-0.5*src.cols+0.5; //x进行缩小一半 见 下面图的说明 map_y.at<float>(i,j) = 2*i-0.5*src.rows+0.5;// x进行缩小一半 见 下面图的说明 } else//没有映射关系 { map_x.at<float>(i,j) = 0; map_y.at<float>(i,j) = 0; } break; case 1: map_x.at<float>(i,j) = j; map_y.at<float>(i,j) =src.rows-i; //y方向翻转 break; case 2: map_x.at<float>(i,j) = src.cols-j; //x方向翻转 map_y.at<float>(i,j) = i; break; case 3: map_x.at<float>(i,j) = src.cols-j; //x方向翻转 map_y.at<float>(i,j) = src.rows-i; //y方向翻转 break; default: break; } } ind = (ind+1)%4; } ![在这里插入图片描述][20190110175632554.png] 结果: ![20190110185854335.png][]![20190110185716885.png][]![20190110185802653.png][]![20190110190028518.png][] -------------------- ## OpenCV API ## [void cv::remap][void cv_remap] ( InputArray src, // 输入图像 OutputArray dst, // 输出图像 InputArray map1, // x方向对应关系map\_x InputArray map2, // y方向对应关系map\_y int interpolation, // [对于不是整数坐标的(x,y)的插值方法][x_y](因为有时候map\_xy里面坐标不是整数) int borderMode = BORDER\_CONSTANT, // 边界处理方式 const Scalar & borderValue = Scalar() // 如果是 BORDER\_CONSTANT ,此参数代表边界值 ) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6eWN6enlj_size_16_color_FFFFFF_t_70] [20190110175632554.png]: /images/20220328/05d6b38a7661469dbd7f872714a7d3c3.png [20190110185854335.png]: https://img-blog.csdnimg.cn/20190110185854335.png [20190110185716885.png]: https://img-blog.csdnimg.cn/20190110185716885.png [20190110185802653.png]: https://img-blog.csdnimg.cn/20190110185802653.png [20190110190028518.png]: /images/20220328/dfba9dad28254af69a8c210cdb595172.png [void cv_remap]: https://docs.opencv.org/master/da/d54/group__imgproc__transform.html#gab75ef31ce5cdfb5c44b6da5f3b908ea4 [x_y]: https://docs.opencv.org/master/da/d54/group__imgproc__transform.html#ga5bb5a1fea74ea38e1a5445ca803ff121 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p6eWN6enlj_size_16_color_FFFFFF_t_70]: /images/20220328/3b84c5cdb6d9454795839e96eed079cb.png
相关 __HAL_AFIO_REMAP_SWJ_DISABLE 这个东西坑了一个晚上。程序download一次后,第二次download就提示no target connect,除非长按reset键,否则拿他没辙。搞得我以前程序哪里写错了, ﹏ヽ暗。殇╰゛Y/ 2023年10月17日 15:03/ 0 赞/ 51 阅读
相关 OpenCV 中的 remap 函数 上一篇文章中提到 [warpAffine][] 会分块处理,将坐标映射和插值系数分别存储下来,然后借助 [remap][] 来实现最终的映射。而 [remap][] 会根据映射 谁践踏了优雅/ 2023年01月13日 10:27/ 0 赞/ 276 阅读
相关 cv2.remap() 几何变换-- 重映射 原文链接:[https://blog.csdn.net/weixin\_37804469/article/details/112316884][https_blog.csdn. 拼搏现实的明天。/ 2022年09月01日 00:58/ 0 赞/ 151 阅读
相关 ATS配置文件remap.config解读 在加深对remap.config的配置用法时,我阅读了参考文献\[1\],特梳理如下: remap.config文件默认存放在/usr/local/etc/tr 旧城等待,/ 2022年08月05日 01:28/ 0 赞/ 202 阅读
相关 ROM and RAM remapping(ARM) 摘自: [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Beihhaag.html] 朱雀/ 2022年05月25日 07:35/ 0 赞/ 211 阅读
相关 Remap_table、remap_tablespace、tables在impdp关于只导特定表的注意事项 remap\_table、remap\_tablespace多组对象转换的话,每组对象之间用逗号隔开 tables多张表时,每张表之间用逗号隔开 Remap\_tab 以你之姓@/ 2022年05月24日 02:20/ 0 赞/ 164 阅读
相关 Remapping 原理 通过几何变换对原图进行旋转,放大,缩小:其实就是一种src 到 dst的一种映射关系。 比如说:对图像进行左右翻转: d s t = ( s r c . c o 红太狼/ 2022年03月28日 14:20/ 0 赞/ 99 阅读
相关 R 语言安装包的另一种方式 和 REmap 包学习 文章目录 前言 探索 解决 REmap 包学习 前言 了解到一个超酷炫的绘制地图的库: [REmap][], 约定不等于承诺〃/ 2022年03月22日 16:48/ 0 赞/ 272 阅读
还没有评论,来说两句吧...