OpenCV图像几何变换——转置,镜像,倒置
图像几何变换方法之——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图像几何变换——转置,镜像,倒置相关推荐
- [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- OpenCV图像几何变换专题(缩放、翻转、仿射变换及透视)【python-Open_CV系列(五)】
OpenCV图像几何变换专题(缩放.翻转.仿射变换及透视)(python为工具) [Open_CV系列(五)] 文章目录 准备图片 1. 缩放 cv2.resize()方法 2. 翻转 cv2.fli ...
- [Python图像处理] 三十六.OpenCV图像几何变换万字详解(平移缩放旋转、镜像仿射透视)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- OpenCV-Python学习(18)—— OpenCV 图像几何变换之图像平移(cv.warpAffine)
1. 学习目标 学习图像的平移矩阵: 学习 OpenCV 图像平移函数. 2. 图像的平移矩阵 平移是物体位置在水平和垂直方向的移动. 像素点 (x,y) 沿 x 轴平移 dx.沿 y 轴平移 dy, ...
- OpenCV-Python学习(19)—— OpenCV 图像几何变换之图像缩放(cv.warpAffine、cv.resize)
1. 学习目标 学习图像的缩放矩阵: 学习 OpenCV 图像缩放函数 cv.resize 和 cv.warpAffine. 2. 图像的缩放矩阵 缩放是物体在 x 轴和 y 轴的缩放比例. fx 是 ...
- Opencv图像几何变换
DataWhale 机器视觉组队学习task2 2.1 简介 该部分将对基本的几何变换进行学习,几何变换的原理大多都是相似,只是变换矩阵不同,因此,我们以最常用的平移和旋转为例进行学习.在深度学习 ...
- opencv android 透视,OpenCV图像几何变换之透视变换
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 1. 基本原理 透视变换(Perspective Transformation)的本质是将图像投影到一个新的视平面 ...
- opencv 图像几何变换
变换 大小 import numpy as np import cv2 as cv img = cv.imread('messi5.jpg') res = cv.resize(img,None,fx= ...
- C#图像处理-OpenCVSharp教程(十二) OpenCVSharp图像几何变换:平移、旋转、缩放、转置和镜像等
本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp图像几何变换:平移.旋转.缩放.转置和镜像等! 一.图像缩放 // 图像缩放-- - Resize Mat ...
最新文章
- 13分页和shell命令行模式
- mq系列传感器的程序_深圳现代通信系列实训系统
- 关于web开发字符集问题解决方法
- libjingle源码解析(4)-【PseudoTcp】建立UDP之上的TCP(2):对交互数据流的处理
- jQuery中的text()、html()和val()以及innerText、innerHTML和value
- 拿不到offer全额退款 | 第四期人工智能 NLP / CV 课 培训招生
- android.mk 翻译,翻译ANDROID-MK.TXT
- android 三星 白色,时尚实用都拥有 白色Android手机盘点
- dubbo 自定义路由_高性能可扩展分布式RPC框架Dubbo内核原理揭秘
- 搜索 + 剪枝 --- POJ 1101 : Sticks
- 怎么删除计算机的一个用户名和密码,哪位晓得电脑有两个账户怎么删除一个
- springmvc中校验框架(hibernate)
- GIS游程编码两种方法
- Ionic页面传参跳转
- java界面添加动态背景图片
- IGRP原理及配置案例
- Java8流处理正序倒序排序
- tmux | 使用手册 (cheat sheet)
- php导入excel读取内容
- 利用Python对MNIST手写数据集进行数字识别(初学者入门级)
热门文章
- 距离传感器 和摇一摇功能
- JetBrains在CLion的Linux和OS X版本中引入Swift支持
- iOS 5与iOS 6的 low-memory 处理
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
- C++11中容器迭代器操作总结
- 泰勒展开与找第一项系数不为1的解题策略
- tensorflow 中,修改张量tensor特定元素的值
- ndk-build官方使用说明
- [转]STL(容器)与DEBUGNEW运算符冲突的解决
- 【luogu4145】 上帝造题的七分钟2 / 花神游历各国 [线段树]