OpenCV 重映射
2015-09-07 22:00
495 查看
原理:
重映射把一个图像中一个位置的像素放置到另一个图片指定位置的过程。
通过重映射来表达每个像素的位置 (x,y) : g(x,y) = f ( h(x,y) ),其中g为目标图像,f为原图像。
比如说这个函数:
,就是将图像按照x轴进行旋转。在下面的代码中所使用的也是这个函数。
函数:
src: 源图像
dst: 目标图像,与 src 相同大小
map_x: x方向的映射参数. 它相当于方法 h(i,j) 的第一个参数
map_y: y方向的映射参数. 注意 map_y 和 map_x 与 src 的大小一致。
CV_INTER_LINEAR: 非整数像素坐标插值标志. 这里给出的是默认值(双线性插值).
BORDER_CONSTANT: 默认
代码:
运行图:
重映射把一个图像中一个位置的像素放置到另一个图片指定位置的过程。
通过重映射来表达每个像素的位置 (x,y) : g(x,y) = f ( h(x,y) ),其中g为目标图像,f为原图像。
比如说这个函数:
,就是将图像按照x轴进行旋转。在下面的代码中所使用的也是这个函数。
函数:
void remap( InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode = BORDER_CONSTANT, const Scalar& borderValue = Scalar());
src: 源图像
dst: 目标图像,与 src 相同大小
map_x: x方向的映射参数. 它相当于方法 h(i,j) 的第一个参数
map_y: y方向的映射参数. 注意 map_y 和 map_x 与 src 的大小一致。
CV_INTER_LINEAR: 非整数像素坐标插值标志. 这里给出的是默认值(双线性插值).
BORDER_CONSTANT: 默认
代码:
int main() { RNG rng(12345); Mat a = imread("1RT05508-0.jpg"); imshow("原图", a); Mat x, y; x.create(a.size(), CV_32FC1); y.create(a.size(), CV_32FC1); for (int j = 0; j < a.rows; j++) { for (int i = 0; i < a.cols; i++) { x.at<float>(j, i) = static_cast<float>(a.cols - i); y.at<float>(j, i) = static_cast<float>(j); } } remap(a, a, x, y, CV_INTER_LINEAR); imshow("效果图", a); cvWaitKey(10000); }
运行图:
相关文章推荐
- 如何在点击shell/elisp类型的link时,不要弹出确认窗口
- Linux中的SSH登录
- Linux/Mac/Windows换行符及对'\r'和'\n'的不同处理
- 在linux 配置matlab的 libsvm
- 马哥linux学习(linux任务计划)
- Linux下配置用msmtp和mutt发邮件
- HDU1053 - Entropy (哈夫曼树)
- CentOS安装VMware Tools
- Linux下配置用msmtp和mutt发邮件
- linux或mac系统下的端口转发
- shell syntax error near unexpected token
- 阿里云盾网站安全防御(WAF)的使用方法(图文)
- centos下安装mysql
- Linux-----Ubuntu搭建FTP服务器
- XAMPP Apache服务器解析php页面汉字乱码的解决
- CentOS 加载/挂载光驱
- Apache 伪静态设置
- 7.【SELinux学习笔记】约束
- Apache开启不了------The requested operation has failed!
- hadoop中HBase、Flume、Hive、Zookeeper简要概述