旋转图片两种方法

这篇具有很好参考价值的文章主要介绍了旋转图片两种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这两种方法在旋转图像时,可能会产生一些不同的效果:

rotate_image_new()旋转后的图像完全包含旋转前的内容,并且填充边界尽可能小

rotate_image() 保持原始图像的大小,并根据填充选项决定是否填充边界为白色。如果 if_fill_white 参数为 True,则填充边界为白色;否则,边界将保持原始图像的值。这种方法可以更快速地旋转图像,但可能会导致旋转后的图像包含额外的空白区域或丢失部分图像信息。文章来源地址https://www.toymoban.com/news/detail-682386.html


def rotate_image_new(image, degree):
    '''
    旋转图片角度
    '''
    from math import *
    # dividing height and width by 2 to get the center of the image
    height, width = image.shape[:2]

    heightNew = int(width * fabs(sin(radians(degree))) + height * fabs(cos(radians(degree))))
    widthNew = int(height * fabs(sin(radians(degree))) + width * fabs(cos(radians(degree))))

    matRotation = cv2.getRotationMatrix2D((width / 2, height / 2), degree, 1)
    matRotation[0, 2] += (widthNew - width) / 2  # 重点在这步,目前不懂为什么加这步
    matRotation[1, 2] += (heightNew - height) / 2  # 重点在这步

    imgRotation = cv2.warpAffine(image, matRotation, (widthNew, heightNew), borderValue=(255, 255, 255))

    return imgRotation

def rotate_image( image, angle,if_fill_white = False):
    '''
    顺时针旋转
    '''
    # dividing height and width by 2 to get the center of the image
    height, width = image.shape[:2]
    # get the center coordinates of the image to create the 2D rotation matrix
    center = (width / 2, height / 2)

    # using cv2.getRotationMatrix2D() to get the rotation matrix
    rotate_matrix = cv2.getRotationMatrix2D(center=center, angle=angle, scale=1)

    # rotate the image using cv2.warpAffine
    if not if_fill_white:
        rotated_image = cv2.warpAffine(src=image, M=rotate_matrix, dsize=(width, height) )
    else:
        color = (255, 255) if len(image.shape)==2 else (255, 255,255)
        rotated_image = cv2.warpAffine(src=image, M=rotate_matrix, dsize=(width, height), borderValue=color)
    return rotated_image


到了这里,关于旋转图片两种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何将图片恢复水平位置?图片旋转矫正方法大全,ddddocr作者基于RotNet的旋转验证码深度学习识别模型Rotate-Captcha-Crack

    该模型首先使用边缘检测算法对图像进行边缘检测,然后找到边缘上的直线,并计算直线的角度。最后通过旋转图像来校正图像的角度。 该模型基于Hough变换算法来检测图像中的直线,并计算直线角度,然后使用旋转矩阵将图像旋转到正确的角度。 该模型使用图像的局部特征

    2024年02月08日
    浏览(67)
  • Qt+OpenCV显示图片的两种方法(代码演示)

    导  读     本文主要介绍Qt+OpenCV显示图像的两种方法,并通过代码演示效果。 背景介绍     OpenCV本身提供了一些GUI方法,但使用起来仍有局限性。以C++为例,实际应用中我们大多会使用Qt或MFC来编写GUI程序。相较之下,Qt比MFC更易上手且界面样式更丰富,所以越来越多的

    2024年02月07日
    浏览(45)
  • uni-app 轮播图视频+图片 视频图片全屏预览 两种方法

    在做商城项目的时候,商品详情的轮播图需要同时显示视频和图片,并且能够全局预览 如果项目里有uview这个组件库,可以通过swiper轮播图的指定类型进行解决,点击这里进行跳转 也可以通过uni-app自带的swiper去解决这个问题,点击这里进行跳转 就目前的两种方案,第二种方

    2024年02月12日
    浏览(109)
  • 用python对比两种图片的相似程度

    要比较两张图片的相似程度,通常可以使用图像处理库如OpenCV或Pillow。其中的一些方法包括: 均方误差(Mean Square Error, MSE):计算两张图片的每个像素值之间的平均差值,结果越小表示两张图片越相似。 结构相似性指数(Structural Similarity Index, SSIM):比较两张图片的结构、

    2024年02月15日
    浏览(35)
  • Halcon中图像旋转的两种方式

    Halcon图像旋转有两种类型,一种类型是直接使用 这样的图像只能围绕中心进行旋转,而且设置的时候只能设置旋转角度,其中函数组成如下: 效果如下:   这种变换方法简单方便,但是可控制参数太少,如果要实现更多功能,我们可以通过仿射变换算子来进行图像旋转缩放

    2024年02月11日
    浏览(36)
  • 两种实现模糊匹配的方法--python

    以下举例以同一个excel中, sheet2的词语去匹配sheet1中词语找模糊匹配结果来举例 导入数据,读取excel中sheet1(被匹配的目标词库),sheet2(需要进行匹配的词) 结果: ………………………………………………………… 把需要匹配的词语和目标词语做分词,对比分词匹配度判定关联

    2024年02月12日
    浏览(39)
  • Python-两种方法实现输出素数(质数)

    方案一: 程序的设计为: 1、设为被除数,取值范围可以自行设定,本例设为3-100;(1、2均不是素数) 2、设计为除数,除数的取值范围为除掉1和自身以及比自身大的数字(当被除数本身不为0时,除以比自身大的数余数一定不为零。) 3、在这两个前提下,先让固定,遍历范

    2024年02月11日
    浏览(35)
  • Python创建多线程的两种常用方法

    这篇文章主要为大家详细介绍了Python中创建多线程的两种常用方法,文中的示例代码简洁易懂,对我们掌握Python有一定的帮助,需要的可以收藏一下 经过总结,Python创建多线程主要有如下两种方法: 函数 类 接下来,我们就来揭开多线程的神秘面纱。 在Python3中,Python提供了

    2024年02月15日
    浏览(38)
  • python元组tuple添加元素的两种方法

    方法一 :可以使用python内置的__add__()方法,使用该方法为python元组添加元素时,需要使用元组来对象来进行调用,然后将需要添加的元素,以元组的数据类型进行传递,该方法并需修改调用对象,而是以新的元组进行返回,具体可见下方的实例代码。 方法二 :将python的元组

    2024年02月12日
    浏览(39)
  • 折半查找(二分查找)的两种方法及实现 Python

    概念: 在计算机科学中,折半查找,也称二分查找,是一种在有序数组中查找某一特定元素的搜索算法。 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包