1. 镜像翻转
    flip()函数:
    flip函数是矩阵或者图像翻转,其实图像的本质也是矩阵。
    void flip(InputArray src, OutputArray dst, int flipCode)
    参数声明
    src:输入矩阵
    dst:翻转后矩阵,类型与src一致
    flipCode:翻转模式,flipCode==0垂直翻转(沿X轴翻转)、 flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)

Python实现:

    src = cv.imread("D://Image/lena.jpg")h, w, ch = src.shapecv.imshow("input", src)dst = np.zeros(src.shape, src.dtype)for row in range(h):for col in range(w):b, g, r = src[row, col]dst[row, w - col - 1] = [b, g, r]cv.imshow("output", dst)

openCV实现:

    # APIxs = cv.flip(src, -1)cv.imshow("xs", xs)
  1. 图像旋转
    rotate() 函数:
    rotate(src, rotateCode[, dst] )
    参数声明:
    src:原始图像。
    rotateCode:一个枚举,用于指定如何旋转数组。
    dst:与src图像大小和深度相同的输出图像。它是一个可选参数。
    返回值:它返回一个图像。

顺时针旋转90度:

cv2.rotate(src, cv2.ROTATE_90_CLOCKWISE)

顺时针旋转180度:

cv2.rotate(src, cv2.ROTATE_180)

顺时针旋转270度:

cv2.rotate(src, cv2.ROTATE_90_COUNTERCLOCKWISE)

图像旋转原理:



warpAffine()函数:

void cv::warpAffine     (   InputArray      src,OutputArray     dst,InputArray      M,Size    dsize,int     flags = INTER_LINEAR,int     borderMode = BORDER_CONSTANT,const Scalar &      borderValue = Scalar() )

参数解释
. src: 输入图像
. dst: 输出图像,尺寸由dsize指定,图像类型与原图像一致
. M: 2X3的变换矩阵
. dsize: 指定图像输出尺寸
. flags: 插值算法标识符,有默认值INTER_LINEAR,如果插值算法为WARP_INVERSE_MAP, warpAffine函数使用如下矩阵进行图像转换
. borderMode: 边界像素模式,有默认值BORDER_CONSTANT
. borderValue: 边界取值,有默认值Scalar()即0

常用的插值算法如下:

代码:

# 图像旋转
def rotate_demo():src = cv.imread("D://Image/lena.jpg")cv.imshow("input", src)dst = cv.rotate(src, cv.ROTATE_90_COUNTERCLOCKWISE)dst2 = cv.flip(dst, 0)cv.imshow("rotate", dst)cv.imshow("dst2", dst2)# 旋转任意角度h, w, ch = src.shapecy = h // 2cx = w // 2M = cv.getRotationMatrix2D((cx, cy), 45, 1.0)  # 图像旋转的中心位置print(M)cos = np.abs(M[0, 0])sin = np.abs(M[0, 1])nw = np.int(h * sin + w * cos)nh = np.int(h * cos + w * sin)M[0, 2] += (nw / 2) - cxM[1, 2] += (nh / 2) - cydst = cv.warpAffine(src, M, (nw, nh))cv.imshow("output", dst)

openCV Python基础--镜像翻转和图像旋转相关推荐

  1. 基于深度学习的目标检测:数据增强(一)图像翻转、图像旋转、图像放缩

    1.数据增强简介 数据增强(data augmentation),又名数据增广或数据扩充,其本质是通过使用图像处理方法,基于有限的数据产生更多的数据,以此增加训练样本的数量以及多样性,进而提升模型的泛 ...

  2. OpenCV python 图片镜像

    OpenCV python 图片镜像 输入图片 source.jpg 源代码 #!/usr/bin/env python3 # -*- coding: utf-8 -*- ""&q ...

  3. Docker定制化Python基础镜像

    1.选择基础镜像的难题 在使用Docker部署某类服务时,第一个面临的问题就是选择一个基础镜像.那么如何选择基础镜像更有利于我们的工作呢? 我们知道docker是基于linux的,任何一个镜像,其包含 ...

  4. OpenCV Python教程(2、图像元素的访问、通道分离与合并)

    OpenCV Python教程之图像元素的访问.通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] v ...

  5. python数字图像处理笔记10 图像旋转

    图像旋转 旋转前 旋转后 矩阵表示 def rotate(img, angle):H, W, C = img.shapeanglePi = angle * math.pi / 180.0cosA = ...

  6. python图片镜像翻转_翻转图像/镜像图像

    你混淆了基于0和基于1的索引.x范围从0到org.size[0]-1.但是a的范围从org.size[0]到1,因为您从a=org.size[0]开始使用它,而不需要首先减去. 最有可能的错误来自这一 ...

  7. python图片镜像翻转_python图像处理之镜像实现方法

    本文实例讲述了python图像处理之镜像实现方法.分享给大家供大家参考.具体分析如下: 图像的镜像变化不改变图像的形状.图像的镜像变换分为三种:水平镜像.垂直镜像.对角镜像 设图像的大小为M×N,则 ...

  8. python图片镜像翻转_python中镜像实现方法

    图像的镜像变化不改变图像的形状.图像的镜像变换分为三种:水平镜像.垂直镜像.对角镜像 设图像的大小为M×N,则 水平镜像可按公式 I = i J = N - j + 1 垂直镜像可按公式 I = M ...

  9. OpenCV Python教程(1、图像的载入、显示和保存)

    本文是OpenCV  2 Computer Vision Application Programming Cookbook读书笔记的第一篇.在笔记中将以Python语言改写每章的代码. PythonO ...

最新文章

  1. html.textboxfor id,How to update the textbox value @Html.TextBoxFor(m = m.MvcGridModel.Rows[j].Id)
  2. c语言溢出该怎么算,解决整数运算溢出方法——C语言
  3. 使用cookie保存用户名状态
  4. html在不同浏览器器下颜色不同,CSS在不同浏览器下实现颜色渐变效果
  5. bzoj3572 [HNOI2014]世界树 虚树 +乱dp
  6. Linux的tasklet函数详解
  7. iOS根据模型获取模型字段以及字段的类型(用于创建数据库的表)
  8. 招行笔试java编程
  9. Linux丢包故障的解决与思路
  10. 跨国面板数据(1960-2020)十三:GDP、人均GDP、国民收入、储蓄(excel、stata版)
  11. 工欲善其事必先利其器-前端实习简历篇
  12. 鸡啄米c语言入门,鸡啄米编程课堂-最适合程序员在线学习和参考的教程站
  13. 中创软件哪个部分是外包_什么是外包| 第1部分
  14. 使用chalk时颜色不变的问题解决
  15. dlopen和dlsym
  16. javaweb学习笔记(五)
  17. Android与uni-app 互相通信案例(包含源代码)
  18. 使用蒙特卡洛技术解决一个小虫爬铁丝问题。
  19. 自顶向下计算机网络学习 应用层
  20. 保存DWG格式文件并在CAD中编辑转换成PDF文件

热门文章

  1. 会PHP如何拥有一个自己的QQ机器人?(三)
  2. 147_Merkle(默克尔)树简单理解
  3. Zebec获BNB Chain生态大力支持,ZBC通证将陆续登录一线平台
  4. java实现图像对比度增强_java图片对比度调整示例代码
  5. 【CTA03】期货套利策略
  6. fatal error C1859: 意外的预编译头错误,只需重新运行编译器就可能修复此问题
  7. navicat下的数据库迁移
  8. STM32学习笔记 —— STM32CubeIDE安装与配置
  9. 计算机考研408-I/O方式大题答题流程
  10. 仿小米官网源码,2021年9月最新版