opencv::像素重映射
像素重映射(cv::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
)
Mat src, dst, map_x, map_y;
const char* OUTPUT_TITLE = "remap demo";
int index = ;
void update_map(void);
int main(int argc, char** argv) {
src = imread(STRPAHT3);
if (!src.data) {
printf("could not load image...\n");
return -;
}
namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE); map_x.create(src.size(), CV_32FC1);
map_y.create(src.size(), CV_32FC1); int c = ;
while (true) {
c = waitKey();
if ((char)c == ) {
break;
}
index = c % ;
update_map();
remap(src, dst, map_x, map_y, INTER_LINEAR, BORDER_CONSTANT, Scalar(, , ));
imshow(OUTPUT_TITLE, dst);
}
return ;
} void update_map(void) {
for (int row = ; row < src.rows; row++) {
for (int col = ; col < src.cols; col++) {
switch (index) {
case :
if (col > (src.cols * 0.25) && col <= (src.cols*0.75) && row > (src.rows*0.25) && row <= (src.rows*0.75))
{
map_x.at<float>(row, col) = * (col - (src.cols*0.25));
map_y.at<float>(row, col) = * (row - (src.rows*0.25));
}
else
{
map_x.at<float>(row, col) = ;
map_y.at<float>(row, col) = ;
}
break;
case :
map_x.at<float>(row, col) = (src.cols - col - );
map_y.at<float>(row, col) = row;
break;
case :
map_x.at<float>(row, col) = col;
map_y.at<float>(row, col) = (src.rows - row - );
break;
case :
map_x.at<float>(row, col) = (src.cols - col - );
map_y.at<float>(row, col) = (src.rows - row - );
break;
} }
}
}
opencv::像素重映射的更多相关文章
- opencv —— remap 重映射
重映射的概念 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程. 实现重映射:remap 函数 将图像进行重映射几何变换,基于的公式为:dst (x, y) = src ( mapx ...
- opencv之重映射
好久没写呆码了 今天发个重映射 #include "opencv2/video/tracking.hpp" #include "opencv2/imgproc/imgpr ...
- OpenCV函数 重映射
重映射是什么意思? 把一个图像中一个位置的像素放置到另一个图片指定位置的过程. 为了完成映射过程, 有必要获得一些插值为非整数像素坐标,因为源图像与目标图像的像素坐标不是一一对应的. 我们通过重映射来 ...
- 【OpenCV新手教程之十七】OpenCV重映射 & SURF特征点检測合辑
本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨) ...
- OpenCV探索之路(八):重映射与仿射变换
重映射 重映射就是把一幅图像中某个位置的像素放置到另一个图片中指定位置的过程. 用一个数学公式来表示就是: 其中的 f 就是映射方式,也就说,像素点在另一个图像中的位置是由 f 来计算的. 在Open ...
- OpenCV学习笔记(九) 重映射、仿射变换
重映射 通过重映射来表达每个像素的位置 : 这里 是目标图像, 是源图像, 是作用于 的映射方法函数.想象一下我们有一个图像 , 我们想满足下面的条件作重映射:,图像会按照 轴方向发生翻 ...
- OpenCV——重映射、仿射变换
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- opencv 5 图像转换(3 重映射 仿射变换 直方图均衡化)
重映射 实现重映射(remap函数) 基础示例程序:基本重映射 //---------------------------------[头文件.命名空间包含部分]------------------- ...
- C++ Opencv remap()重映射函数详解及使用示例
一.重映射及remap()函数介绍 重映射,就是把一幅图像中某位置的像素放置到另一图像指定位置的过程.即: 在重映射过程中,图像的大小也可以同时发生改变.此时像素与像素之间的关系就不是一一对应关系,因 ...
随机推荐
- web性能优化实践
一.SQL查询优化 1.循环中有多次查询sql,改为在循环外一次查询后再处理 2.循环多次插入,改为组装好数据后批量插入 3.梳理业务逻辑能一次查完的,绝不分多次查 4.索引用起来 5.分页查询 二. ...
- Flink cep的初步使用
一.CEP是什么 在应用系统中,总会发生这样或那样的事件,有些事件是用户触发的,有些事件是系统触发的,有些可能是第三方触发的,但它们都可以被看做系统中可观察的状态改变,例如用户登陆应用失败.用户下了一 ...
- tcp居然会数据延迟40ms被发送
tcpdump是很好的tcp分析工具,在此配合nc命令来学习tcpdump nc -l 8000 tcpdump -S -n -i lo tcp and host 127.0.0.1 and port ...
- 实现一个正则表达式引擎in Python(一)
前言 项目地址:Regex in Python 开学摸鱼了几个礼拜,最近几天用Python造了一个正则表达式引擎的轮子,在这里记录分享一下. 实现目标 实现了所有基本语法 st = 'AS342abc ...
- TCP/IP 物理层卷一 -- 基本概念
一.基本概念: 物理层:TCP/IP 协议簇的最底层,物理层所需要考虑的是如何在连接计算机的传输媒体上传输数据的比特流,而不是连接计算机的具体物理设备. 信号:数据的电气或电磁表现,是数据在传输媒体上 ...
- 构建之法——homework4
手机应用——软件腾讯QQ: QQ是腾讯公司开发的一款基于Internet的即时通信软件.最初通过在线广告进行盈利(Banner广告.Email广告等).然后通过免费注册QQ,获取大量用户.开发QQ相关 ...
- Unity - 存读档机制简析
本文旨在于简要分析Unity中的两种存档机制,即:PlayerPrefs数据持久化方法及Serialization数据序列化方法 较比与源项目,我另加了JSON方法.XML方法等及一些Unity设置, ...
- 动态insert mybatis与ibatis
mybatis: <insert id="insert" parameterType="hashMap"> INSERT INTO item < ...
- CSS 换行
默认情况下,元素的属性是 white-space:normal:自动换行:(不把单词截断,会把单词看作一个整体) -----但是但是但是但是..当元素中的内容是一对没有空格的字符/数字时,超过容器宽度 ...
- Windows10+YOLOv3实现检测自己的数据集(1)——制作自己的数据集
本文将从以下三个方面介绍如何制作自己的数据集 数据标注 数据扩增 将数据转化为COCO的json格式 参考资料 一.数据标注 在深度学习的目标检测任务中,首先要使用训练集进行模型训练.训练的数据集好坏 ...