返回顶部
首页 > 资讯 > 后端开发 > Python >python opencv旋转图片的使用方法
  • 272
分享到

python opencv旋转图片的使用方法

2024-04-02 19:04:59 272人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录背景原始图像:OpenCV函数numpy函数旋转90度参考背景 在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的

背景

在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的处理。这种旋转图片的应用场景也比较多,比如用户上传图片是竖着的时候,不好进行处理,也需要对其进行旋转,以便后续算法处理。常见的旋转处理有两种方式,一种是转化为numpy矩阵后,对numpy矩阵进行处理,另外一种是使用opencv自带的函数进行各种变换处理,以实现旋转角度的结果。

原始图像:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fo40V1TN-1592548330569)(C:\Users\DELL-3020\AppData\Roaming\Typora\typora-user-images\image-20200618180728108.jpg)]

opencv函数

旋转中常用的函数有以下几个函数

cv2.transpose: 对图像矩阵进行转置处理


img = cv2.imread(origin_img_path)
img_transpose = cv2.transpose(img)
cv2.imshow('transpose', img_transpose)
cv2.waiTKEy(0)

在这里插入图片描述

cv2.flip : 对图像矩阵进行翻转处理,参数可以设置为1,0,-1,分别对应着水平翻转、垂直翻转、水平垂直翻转。


img = cv2.imread(origin_img_path)
img_flip = cv2.flip(img, 1)
cv2.imshow('flip', img_flip)
cv2.waitKey(0)

在这里插入图片描述

cv2.getRotationMatrix2D: 构建旋转矩阵M,后续旋转时候只需要与旋转矩阵进行乘积即可完成旋转操作

旋转矩阵M

img


img = cv2.imread(origin_img_path)
rows, cols = img.shape
# 这里的第一个参数为旋转中心,第二个为旋转角度,第三个为旋转后的缩放因子
# 可以通过设置旋转中心,缩放因子以及窗口大小来防止旋转后超出边界的问题
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,0.6)

cv2.warpAffine: 对图像进行仿射变换,一般进行平移或者旋转操作


img = cv2.imread(origin_img_path)
cv2.warpAffine(img, M,(lengh,lengh),borderValue=(255,255,255))  # M为上面的旋转矩阵

numpy函数

numpy实现旋转一般是使用numpy.rot90对图像进行90度倍数的旋转操作

官方介绍:

numpy.rot90(m, k=1, axes=(0, 1))[source]

Rotate an array by 90 degrees in the plane specified by axes.

Rotation direction is from the first towards the second axis.

k: Number of times the array is rotated by 90 degrees.

关键参数k表示旋转90度的倍数,k的取值一般为1、2、3,分别表示旋转90度、180度、270度;k也可以取负数,-1、-2、-3。k取正数表示逆时针旋转,取负数表示顺时针旋转。

旋转90度

逆时针

  • 使用opencv函数的转置操作+翻转操作实现旋转
  • 使用numpy.rot90实现

def rotateAntiClockWise90(img_file):  # 逆时针旋转90度
	img = cv2.imread(img_file)
    trans_img = cv2.transpose(img)
    img90 = cv2.flip(trans_img, 0)
    cv2.imshow("rotate", img90)
    cv2.waitKey(0)
    return img90
    
def totateAntiClockWise90ByNumpy(img_file):  # np.rot90(img, -1) 逆时针旋转90度
    img = cv2.imread(img_file)
    img90 = np.rot90(img, -1)
    cv2.imshow("rotate", img90)
    cv2.waitKey(0)
    return img90

在这里插入图片描述

顺时针


def rotateClockWise90(self, img_file):
	img = cv2.imread(img_file)
    trans_img = cv2.transpose( img )
    img90 = cv2.flip(trans_img, 1)
    cv2.imshow("rotate", img90)
    cv2.waitKey(0)
    return img90

def totateClockWise90ByNumpy(img_file):  # np.rot90(img, 1) 顺时针旋转90度
    img = cv2.imread(img_file)
    img90 = np.rot90(img, 1)
    cv2.imshow("rotate", img90)
    cv2.waitKey(0)
    return img90

在这里插入图片描述

旋转180度、270度

使用numpy.rot90实现旋转180度、270度

180度


img180 = np.rot90(img, 2)
cv2.imshow("rotate", img180)
cv2.waitKey(0)

在这里插入图片描述

270 度


img270 = np.rot90(img, 3)
cv2.imshow("rotate", img270)
cv2.waitKey(0)

在这里插入图片描述

旋转任意角度,以任意色值填充背景


import cv2
from math import *
import numpy as np
 
# 旋转angle角度,缺失背景白色(255, 255, 255)填充
def rotate_bound_white_bg(image, angle):
    # grab the dimensions of the image and then determine the
    # center
    (h, w) = image.shape[:2]
    (cX, cY) = (w // 2, h // 2)
 
    # grab the rotation matrix (applying the negative of the
    # angle to rotate clockwise), then grab the sine and cosine
    # (i.e., the rotation components of the matrix)
    # -angle位置参数为角度参数负值表示顺时针旋转; 1.0位置参数scale是调整尺寸比例(图像缩放参数),建议0.75
    M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)
    cos = np.abs(M[0, 0])
    sin = np.abs(M[0, 1])
 
    # compute the new bounding dimensions of the image
    nW = int((h * sin) + (w * cos))
    nH = int((h * cos) + (w * sin))
 
    # adjust the rotation matrix to take into account translation
    M[0, 2] += (nW / 2) - cX
    M[1, 2] += (nH / 2) - cY
 
    # perfORM the actual rotation and return the image
    # borderValue 缺失背景填充色彩,此处为白色,可自定义
    return cv2.warpAffine(image, M, (nW, nH),borderValue=(255,255,255))
    # borderValue 缺省,默认是黑色(0, 0 , 0)
    # return cv2.warpAffine(image, M, (nW, nH))
 
img = cv2.imread("dog.png")
imgRotation = rotate_bound_white_bg(img, 45)
 
cv2.imshow("img",img)
cv2.imshow("imgRotation",imgRotation)
cv2.waitKey(0)

45度

在这里插入图片描述

60度

在这里插入图片描述

参考

cv2.getRotationMatrix2D博客介绍

cv2.warpAffine 博客介绍

numpy.rot90

旋转任意角度

到此这篇关于python opencv旋转图片的使用方法的文章就介绍到这了,更多相关Python opencv旋转图片内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python opencv旋转图片的使用方法

本文链接: https://lsjlt.com/news/127562.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python opencv旋转图片的使用方法
    目录背景原始图像:opencv函数numpy函数旋转90度参考背景 在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,旋转角度扩充图片是一种常见的...
    99+
    2024-04-02
  • python opencv怎么旋转图片
    本篇内容介绍了“python opencv怎么旋转图片”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!函数用法(h,w)=img2.shape...
    99+
    2023-06-30
  • python中opencv旋转图片怎么用
    这篇文章将为大家详细讲解有关python中opencv旋转图片怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景在图像处理中,有的时候会有对图片进行角度旋转的处理,尤其是在计算机视觉中对于图像扩充,...
    99+
    2023-06-15
  • 旋转图片两种方法
    这两种方法在旋转图像时,可能会产生一些不同的效果: rotate_image_new()旋转后的图像完全包含旋转前的内容,并且填充边界尽可能小 rotate_image() 保持原始图像的大小,并根据填充选项决定是否填充边界为白色。如果 i...
    99+
    2023-08-30
    python
  • 怎么在python中利用opencv对图片进行旋转
    今天就跟大家聊聊有关怎么在python中利用opencv对图片进行旋转,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译...
    99+
    2023-06-14
  • Exif.js图片旋转修正的方法
    本文实例为大家分享了Exif.js图片旋转修正的具体方法,供大家参考,具体内容如下 上传后图片旋转修正 测试流程 上传 -> base64展示 -> 获取旋转值 ->...
    99+
    2024-04-02
  • python opencv图像旋转怎么实现
    要在Python中使用OpenCV实现图像旋转,可以使用OpenCV中的getRotationMatrix2D和warpAffine...
    99+
    2023-10-21
    python
  • PHP实现图片旋转的方法详解
    最近有一个需求需要将前端上传过来的图片进行逆时针旋转90°,这个主要需要使用到php的imagerotate方法对于图片进行旋转,具体实现方法如下: <php na...
    99+
    2022-11-13
    PHP图片旋转方法 PHP图片旋转 PHP 旋转
  • opencv图片的任意角度旋转实现示例
    目录一 旋转角度坐标的计算二 旋转任意角度的步骤三 实现一 旋转角度坐标的计算 1.如果O点为圆心,则点P绕点O旋转redian弧度之后,点P的坐标变换为点Q的计算公式为: Q.x=...
    99+
    2024-04-02
  • Android实现旋转,放大,缩小图片的方法
    本文实例讲述了Android实现旋转,放大,缩小图片的方法。分享给大家供大家参考,具体如下: 项目中需要做到一个预览图片的功能 最初设想自定义个一个view,在onDraw中用...
    99+
    2022-06-06
    小图 方法 图片 Android
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2024-04-02
  • 怎么使用php代码实现图片旋转方向
    这篇文章主要讲解了“怎么使用php代码实现图片旋转方向”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用php代码实现图片旋转方向”吧!php实现图片旋转方向的代码方法是:1、创建一个p...
    99+
    2023-07-04
  • 在HTML中怎样使图片旋转
    这篇文章将为大家详细讲解有关在HTML中怎样使图片旋转,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在HTML中使图片旋转的方法:首先在文件中添加图片,并在html文件中添加class为anim的div;...
    99+
    2023-06-06
  • OpenCV图像旋转Rotate的详细介绍
    目录功能函数 getRotationMatrix2D函数原型getRotationMatrix2D参数说明warpAffine函数原型warpAffine参数说明C++测试...
    99+
    2024-04-02
  • OpenCV+Imutils实现图像的旋转操作
    目录前言 使用 OpenCV 旋转图像使用 OpenCV 顺时针旋转图像围绕任意点旋转图像使用 Imutils 旋转图像总结前言  本文,将描述使用 OpenC...
    99+
    2024-04-02
  • 如何使用CSS实现图片的旋转效果
    如何使用CSS实现图片的旋转效果CSS(Cascading Style Sheets)是一种用于设置网页样式和布局的标记语言。通过CSS,我们可以实现许多吸引人的网页效果,其中包括图片的旋转效果。在本文中,我们将讨论如何使用CSS来实现图片...
    99+
    2023-11-21
    CSS 图片 旋转
  • python使用opencv切割图片白边
    本文实例为大家分享了python使用opencv切割图片白边的具体代码,可以横切和竖切,供大家参考,具体内容如下 废话不多说直接上码,分享使人进步: from PIL impor...
    99+
    2024-04-02
  • Android使用Matrix旋转图片模拟碟片加载过程
    今天实现了一个模拟碟片加载过程的小demo,在此展示一下。由于在公司,不好截取动态图片,因此就在这截取两张静态图片看看效果先。 下面简单的将代码列出来。 setp1、准备两张...
    99+
    2022-06-06
    图片 matrix Android
  • OpenCV实现绕图片中任意角度旋转任意角度
    最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转任意角度的,都是向下面这样写的: 绕图片中心...
    99+
    2024-04-02
  • C++实现旋转图像的方法
    这篇文章主要讲解了“C++实现旋转图像的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++实现旋转图像的方法”吧!Rotate Image 旋转图像You are given an&n...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作