前言

最近有些其他事情,一周未更新了,实在抱歉。以后争取,每周多更新几次。虽然也不知道能有多少人看到,但是也算自己的一种坚持吧!

1 旋转

1.1 旋转基本操作

旋转的概念正如我们平常听见的一样:将图片选装x度。我们先通过多少度来旋转图片,然后我们将写一个旋转函数。

import numpy as np #1
import argparse #2
import imutils #3
import cv2 #4ap = argparse.ArgumentParser() #5
ap.add_argument("-i", "--image", required = True,help = "Path to the image") #6
args = vars(ap.parse_args()) #7image = cv2.imread(args["image"]) #8
cv2.imshow("Original", image) #9(h, w) = image.shape[:2] #10
center = (w // 2, h // 2) #11M = cv2.getRotationMatrix2D(center, 45, 1.0) #12
rotated = cv2.warpAffine(image, M, (w, h)) #13
cv2.imshow("Rotated by 45 Degrees", rotated) #14M = cv2.getRotationMatrix2D(center, -90, 1.0) #15
rotated = cv2.warpAffine(image, M, (w, h)) #16
cv2.imshow("Rotated by -90 Degrees", rotated) #17rotated = imutils.rotate(image, 180) #18
cv2.imshow("Rotated by 180 Degrees", rotated) #19
cv2.waitKey(0) #20

#1-9:
与前几节一样的操作,进行导包,然后显示原始图片,但是需要注意的是在第三行 import imutils,还记得它是什么吗?我们在上一节还详细介绍过啊。忘记了,可以返回上一节看看。

#10-11:
在第10行中我们得到了图像的宽和高,然后我们通过”//”将它们除以2取整来得到旋转的中心。当然我们也可以不以中心为旋转中心,这里为了方便。

#12:
正如我们定义一个矩阵来移动图像一样,我们还需要定义一个矩阵来旋转图像,然而不同的是我们不是通过NumPy来构造矩阵的,而是通过:

cv2.getRotationMatrix2D()

第一个参数:表示向以哪一点进行旋转?这里就是图像的中心
第二个参数:表示我们希望旋转的角度。这里为正45度,表示顺时针旋转45度
第三个参数:表示图像旋转后的大小,这里设为1表示大小与原图大小一致

#13-14:
通过cv2.warpAffine()方法,我们便可进行旋转图像的操作,第一个参数为原图,第二个参数为旋转矩阵,第三个参数为图像(宽,高)的元组,然后将旋转后的图像显示出来

#15-17:
采用同样的方法将图像逆时针旋转90度,然后展示出来

#18-20:
在第18行我们使用了:imutils这个自己写的库,然后调用了rotate()方法。第一个参数是需要操作的图像,第二个参数是要旋转的度数。

1.2 自写的函数库

在imutils.py中我们自定义rotate函数

def rotate(image, angle, center=None, scale=1.0): #1(h, w) = image.shape[:2] #2if center is None: #3center = (w // 2, h // 2) #4M = cv2.getRotationMatrix2D(center, angle, scale) #5rotated = cv2.warpAffine(image, M, (w, h)) #6return rotated #7

#1-4:
我们的旋转方法又四个参数,第一个是图像,第二个是我们所希望旋转的角度,我们还提供了两个可选择的变量:中心点和规模。中心点是我们希望我们的图像围绕哪一点旋转?如果,没有给它赋值,我们会默认将图像的中心点赋值给它。规模大小我们默认为1.0,表示没有任何大小的变化。

#5-7:
通过构造我们的旋转矩阵,然后我们将旋转后的结果返回。

2 效果展示


转载请注明出处:
CSDN:楼上小宇__home:http://blog.csdn.net/sty945
简书:楼上小宇:http://www.jianshu.com/u/1621b29625df

5 用python进行OpenCV实战之图像变换2(旋转)相关推荐

  1. 4 用python进行OpenCV实战之图像变换1(平移)

    前言 到目前为止,经过前几节的介绍,我们已经有了一个坚实的基础去做一些图像处理,在本节我们先将介绍图像变换中的平移,为后面几节学习图像变换中的旋转.改变大小.镜像.裁剪打下一个好的基础 1 平移 1. ...

  2. python用opencv实现图片的移入移出,4 用python进行OpenCV实战之图像变换1(平移)

    前言 到目前为止,经过前几节的介绍,我们已经有了一个坚实的基础去做一些图像处理,在本节我们先将介绍图像变换中的平移,为后面几节学习图像变换中的旋转.改变大小.镜像.裁剪打下一个好的基础 1 平移 1. ...

  3. 2 用python进行OpenCV实战之图像基本知识

    前言 在这一节,我们将学习图像的基本构成单元--像素,我们将详细的探讨什么是像素?像素是如何使用来构成图像的?然后学习如何通过OpenCV来获取和操纵像素. 1 什么是像素 所有的图像都包含一组像素, ...

  4. 1 用python进行OpenCV实战之用OpenCV3实现图片载入、显示和储存

    code 将下面文档存为load_display_save.py #-*- coding:utf-8 -*- from __future__ import print_function #1 impo ...

  5. 3 用python进行OpenCV实战之画图(直线,矩形,圆形)

    前言 在上一节我们通过使用NumPy的数组分割成功的在我们的图像上画了一个绿色的方块,但是如果我们想画一个单一的线条或者圆圈该怎么办呢?NumPy没有提供相关的功能,但是OpenCV提供了相关的函数, ...

  6. 实战:使用 Python 和 OpenCV 创建自己的“CamScanner”

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小伙伴们有没有想过"CamScanner"如何 ...

  7. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇Python+OpenCV实战项目的 ...

  8. Python OpenCV实战应用

    OpenCV实战应用 摘要 传统计算机视觉 传统特征提取方法 SIFT(尺度不变特征变换) HOG方向梯度特征图 SIFT和HOG的比较 LBP 建筑物轮廓提取 介绍 代码 API说明 车道线检测 介 ...

  9. 太肝了,挑战扫雷世界纪录:扫雷自动化Python+OpenCV实战(附迪迦250G人工智能学习资料)

    咱们废话不多说,先看成果~ 中级 - 0.74秒 3BV/S=60.81 相信许多人很早就知道有扫雷这么一款经典的游(显卡测试)戏(软件),更是有不少人曾听说过中国雷圣,也是中国扫雷第一.世界综合排名 ...

最新文章

  1. 威纶通宏开机后使用初始化宏指令_【操作系统】我们按下电脑开机键的背后发生了什么?...
  2. Waymo自动驾驶汽车扎堆冲进死胡同,一天多达50辆,附近居民蚌埠住了
  3. Adobe PhotoShop(PS) for Mac 如何隐藏切片框?
  4. React开发(170):ant design datapicker限制选择时间
  5. ❤️《10个超级常用Python方法总结》复制即用丨小白捷径【文末赠书2本】❤️
  6. mysql 1556_mysql导入时Error Code: 1556 - You can't use locks with log tables.
  7. 将日期变为中文星期几
  8. Mapx中的图元移动
  9. 点击某些按钮不要触发验证控件
  10. IDL | 实验二、IDL语法基础
  11. web前端网页界面/css 仿微软官网界面
  12. Java 映射(Map)和集合(Set) 用法总结
  13. python股票收益率协方差_Python如何评估投资组合的收益率和风险
  14. 集成editormd支持markdown语法(一)之基本使用
  15. Android ToolBar修改返回按钮图标
  16. 解决火绒提示helper_haozip.exe文件是病毒威胁
  17. [Xcode]自己常用的Code Snippets、Xcode插件、文件目录
  18. NFTScan 开发者平台推出多链 NFT 数据 Pro API 服务
  19. [语音处理] .flac文件转.wav文件
  20. org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

热门文章

  1. Reject: HTTP ‘DELETE‘ is not allowed, Not injecting HSTS.....DELETE请求PUT请求跨域问题
  2. 2022-2028年中国电池制造行业市场供需规模及投资前景预测报告
  3. linux配置java环境变量(详细)
  4. dbeaver数据库工具
  5. 信息熵及其相关概念--数学
  6. BiLSTM-CRF学习笔记(原理和理解) 维特比
  7. 科技公司合作伙伴清单
  8. X-Deep Learning功能模块
  9. AMD–7nm “Rome”芯片SOC体系结构,支持64核
  10. 编译器设计-有限自动机