matlab 重映射,opencv3.1学习笔记(22) 像素重映射

演示代码:#include 

#include 

#include 

using namespace cv;

using namespace std;

int index = 0;

Mat src, dst,mapx,mapy;

void updateMap(void);

const char* OUTTITLE = "remap";

int main(int argc, char** argv) {

src = imread("e:/girl.png");

namedWindow("src", CV_WINDOW_AUTOSIZE);

namedWindow(OUTTITLE, CV_WINDOW_AUTOSIZE);

imshow("src", src);

mapx.create(src.size(), CV_32FC1);

mapy.create(src.size(), CV_32FC1);

int c = 0;

while (true) {

c = waitKey(500);

if ((char)c == 27) {

break;

}

index = c % 4;

updateMap();

remap(src, dst, mapx, mapy, INTER_LINEAR, BORDER_CONSTANT, Scalar(0, 255, 255));

imshow(OUTTITLE,dst);

}

waitKey(0);

return 0;

}

void updateMap(void) {

for (int row = 0; row 

for (int col = 0; col 

switch (2) {

case 0: //变成原来1/2

if (col > (src.cols * 0.25) && col

row>(src.rows * 0.25) && row 

mapx.at(row, col) = 2 * (col - (src.cols * 0.25) + 0.5);

mapy.at(row, col) = 2 * (row - (src.rows * 0.25) + 0.5);

}

else {

mapx.at(row, col) = 0;

mapy.at(row, col) = 0;

}

break;

case 1: //x方向对调

mapx.at(row, col) = (src.cols - col - 1);

mapy.at(row, col) = row;

break;

case 2: //y方向对调

mapx.at(row, col) = col;

mapy.at(row, col) = (src.rows - row - 1);

break;

case 3: //xy方向周时对调

mapx.at(row, col) = (src.cols - col - 1);

mapy.at(row, col) = (src.rows - row - 1);

break;

}

}

}

}

6e753b20c7d3a974388d2bada9542bb1.png

(0  缩小1/2)

3a02354c2aceb82966985f9e2a453ba1.png

(1 x方向对调)

5208ef8473464ac9cf3f9a14bd140184.png

(2  y方向对调)

2511d201f689b4a13cb061205f26c4c1.png

(3  x,y方向同时对调)

代码说明:

什么是像素重映射

简单点说就是把输入图像中各个像素按照一定的规则映射到另外一张图像的对应位置上去,形成一张新的图像。

ee1fe4f7245c317a6c8c7c370f577778.png

假设有映射函数

367df249a8ad0a17d338240b78ce10fc.png

badd612264cd1817806e73f6e7b121d1.png

API介绍cv::remapRemap(

InputArray src,// 输入图像

OutputArray dst,// 输出图像

InputArray  map1,// x 映射表 CV_32FC1/CV_32FC2

InputArray map2,// y 映射表

int interpolation,// 选择的插值方法,常见线性插值,可选择立方等

int borderMode,// BORDER_CONSTANT

const Scalar borderValue// color

)

7a5867a24c84fdbd2ec15e508d889e5f.png

---------------------

作者:hackpig

来源:www.skcircle.com

版权声明:本文章代码及资料部分或全部来自贾志刚老师的视频,勇哥只是在个人理解的基础上做学习笔记,转载请附上博文链接!

#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

收藏 | 0点赞 | 0打赏作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值