图像几何变换方法之——remap使用。

源图像

一、图像转置

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);   imshow("src",src);Mat dst;dst.create( src.size(), src.type());Mat map_x;Mat map_y;map_x.create( src.size(), CV_32FC1);map_y.create( src.size(), CV_32FC1);for( int i = 0; i < src.rows; ++i){for( int j = 0; j < src.cols; ++j){map_x.at<float>(i, j) = (float) i;//j;//(src.cols - j) ;map_y.at<float>(i, j) = (float) j;//(src.rows - i) ;}}remap(src, dst, map_x, map_y, CV_INTER_LINEAR);imshow("dst", dst);  imwrite("invert3.jpg", dst);waitKey(0);system("pause");return 0;
}

结果:

二、图像倒置

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);   imshow("src",src);Mat dst;dst.create( src.size(), src.type());Mat map_x;Mat map_y;map_x.create( src.size(), CV_32FC1);map_y.create( src.size(), CV_32FC1);for( int i = 0; i < src.rows; ++i){for( int j = 0; j < src.cols; ++j){map_x.at<float>(i, j) = (float) j;//j;//(src.cols - j) ;map_y.at<float>(i, j) = (float) (src.rows - i) ;}}remap(src, dst, map_x, map_y, CV_INTER_LINEAR);imshow("dst", dst);  imwrite("invert.jpg", dst);waitKey(0);system("pause");return 0;
}

结果:

三、图像水平镜像

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);   imshow("src",src);Mat dst;dst.create( src.size(), src.type());Mat map_x;Mat map_y;map_x.create( src.size(), CV_32FC1);map_y.create( src.size(), CV_32FC1);for( int i = 0; i < src.rows; ++i){for( int j = 0; j < src.cols; ++j){map_x.at<float>(i, j) = (float) (src.cols - j) ;map_y.at<float>(i, j) = (float) i;//(src.rows - i) ;}}remap(src, dst, map_x, map_y, CV_INTER_LINEAR);imshow("dst", dst);  imwrite("invert2.jpg", dst);waitKey(0);system("pause");return 0;
}

结果:

四、水平镜像倒置

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{Mat src = imread("lena.jpg",CV_LOAD_IMAGE_UNCHANGED);   imshow("src",src);Mat dst;dst.create( src.size(), src.type());Mat map_x;Mat map_y;map_x.create( src.size(), CV_32FC1);map_y.create( src.size(), CV_32FC1);for( int i = 0; i < src.rows; ++i){for( int j = 0; j < src.cols; ++j){map_x.at<float>(i, j) = (float) (src.cols - j) ;map_y.at<float>(i, j) = (float) (src.rows - i) ;}}remap(src, dst, map_x, map_y, CV_INTER_LINEAR);imshow("dst", dst);  imwrite("invert2.jpg", dst);waitKey(0);system("pause");return 0;
}

结果:

OpenCV图像几何变换——转置,镜像,倒置相关推荐

  1. [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】

    OpenCV图像几何变换专题(缩放.翻转.仿射变换及透视)(python为工具) [Open_CV系列(五)] 文章目录 准备图片 1. 缩放 cv2.resize()方法 2. 翻转 cv2.fli ...

  3. [Python图像处理] 三十六.OpenCV图像几何变换万字详解(平移缩放旋转、镜像仿射透视)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  4. OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)

    1. 学习目标 学习图像的平移矩阵: 学习 OpenCV 图像平移函数. 2. 图像的平移矩阵 平移是物体位置在水平和垂直方向的移动. 像素点 (x,y) 沿 x 轴平移 dx.沿 y 轴平移 dy, ...

  5. OpenCV-Python学习(19)—— OpenCV 图像几何变换之图像缩放(cv.warpAffine、cv.resize)

    1. 学习目标 学习图像的缩放矩阵: 学习 OpenCV 图像缩放函数 cv.resize 和 cv.warpAffine. 2. 图像的缩放矩阵 缩放是物体在 x 轴和 y 轴的缩放比例. fx 是 ...

  6. Opencv图像几何变换

    DataWhale 机器视觉组队学习task2 2.1 简介   该部分将对基本的几何变换进行学习,几何变换的原理大多都是相似,只是变换矩阵不同,因此,我们以最常用的平移和旋转为例进行学习.在深度学习 ...

  7. opencv android 透视,OpenCV图像几何变换之透视变换

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 1. 基本原理 透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面 ...

  8. opencv 图像几何变换

    变换 大小 import numpy as np import cv2 as cv img = cv.imread('messi5.jpg') res = cv.resize(img,None,fx= ...

  9. C#图像处理-OpenCVSharp教程(十二) OpenCVSharp图像几何变换:平移、旋转、缩放、转置和镜像等

    本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp图像几何变换:平移.旋转.缩放.转置和镜像等! 一.图像缩放 // 图像缩放-- - Resize Mat ...

最新文章

  1. 13分页和shell命令行模式
  2. mq系列传感器的程序_深圳现代通信系列实训系统
  3. 关于web开发字符集问题解决方法
  4. libjingle源码解析(4)-【PseudoTcp】建立UDP之上的TCP(2):对交互数据流的处理
  5. jQuery中的text()、html()和val()以及innerText、innerHTML和value
  6. 拿不到offer全额退款 | 第四期人工智能 NLP / CV 课 培训招生
  7. android.mk 翻译,翻译ANDROID-MK.TXT
  8. android 三星 白色,时尚实用都拥有 白色Android手机盘点
  9. dubbo 自定义路由_高性能可扩展分布式RPC框架Dubbo内核原理揭秘
  10. 搜索 + 剪枝 --- POJ 1101 : Sticks
  11. 怎么删除计算机的一个用户名和密码,哪位晓得电脑有两个账户怎么删除一个
  12. springmvc中校验框架(hibernate)
  13. GIS游程编码两种方法
  14. Ionic页面传参跳转
  15. java界面添加动态背景图片
  16. IGRP原理及配置案例
  17. Java8流处理正序倒序排序
  18. tmux | 使用手册 (cheat sheet)
  19. php导入excel读取内容
  20. 利用Python对MNIST手写数据集进行数字识别(初学者入门级)

热门文章

  1. 距离传感器 和摇一摇功能
  2. JetBrains在CLion的Linux和OS X版本中引入Swift支持
  3. iOS 5与iOS 6的 low-memory 处理
  4. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
  5. C++11中容器迭代器操作总结
  6. 泰勒展开与找第一项系数不为1的解题策略
  7. tensorflow 中,修改张量tensor特定元素的值
  8. ndk-build官方使用说明
  9. [转]STL(容器)与DEBUGNEW运算符冲突的解决
  10. 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]