第三节:缩放图像,裁剪图像,旋转图像

  • (一)缩放图像(cv2.resize)
  • (二)裁剪图像(img[y1:y2,:x1:x2])
  • (三)旋转图像(cv2.getRotationMatrix2D,cv.warpAffine)
  • (四)结语

(一)缩放图像(cv2.resize)

改变图像的尺寸大小我们需要cv2.resize()
cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None)

scr:原图

dsize:输出图像尺寸

fx:沿水平轴的比例因子

fy:沿垂直轴的比例因子

interpolation:插值方法

在缩放时推荐cv2.INTER_AREA,在拓展时推荐cv2.INTER_CUBIC(慢)和cv2.INTER_LINEAR。默认情况下所有改变图像尺寸大小的操作使用的是插值法都是cv2.INTER_LINEAR。
实现图片图片的缩放,利用这个函数有两种方法
上代码:

方法一:

import cv2img = cv2.imread('images/lambo.png')
print(img.shape)#这里是打印图片的高宽信息,以及通道数
height , width =img.shape[:2]#这里获得图片的高,宽的信息
res = cv2.resize(img,None,fx=1.5,fy=1.5,interpolation=cv2.INTER_CUBIC)
#这里None本应该是输出图像的尺寸,但是因为后面我们设置了缩放因子,所以,这里为Noneprint(res.shape)#这里是打印缩放后的图片的高宽信息,以及通道数cv2.imshow("Image",img)
cv2.imshow("res",res)
cv2.waitKey(0)


方法二:

import cv2
img = cv2.imread('images/lambo.png')
print(img.shape)#这里是打印图片的高宽信息,以及通道数
height , width =img.shape[:2]#这里获得图片的高,宽的信息
res = cv2.resize(img,(2*width,2*height),interpolation=cv2.INTER_AREA)
#这里直接设置输出图像的尺寸,所以不用设置缩放因子print(res.shape)#这里是打印缩放后的图片的高宽信息,以及通道数cv2.imshow("Image",img)
cv2.imshow("res",res)
cv2.waitKey(0)

(二)裁剪图像(img[y1:y2,:x1:x2])

裁剪图像我们需要用到numpy的数组功能,这里需要注意的是,在opencv中img.shape打印出的信息分别是高,宽,通道数。img[y1:y2,:x1:x2],表示先是竖直方向起始像素点由y1到y2,然后是水平方向起始像素点由x1到x2
上代码:

import cv2
import numpy as npimg = cv2.imread('images/lambo.png')
print(img.shape)#这里是打印图片的高宽信息,以及通道数
imagecrop=img[0:200,200:500]print(imagecrop.shape)#这里是打印裁剪后图片的高宽信息,以及通道数
cv2.imshow("Image",img)
cv2.imshow("imagecrop",imagecrop)
cv2.waitKey(0)

(三)旋转图像(cv2.getRotationMatrix2D,cv.warpAffine)

在OpenCV中图像旋转首先根据旋转角度和旋转中心获取旋转矩阵(cv2.getRotationMatrix2D的返回值即为旋转矩阵),然后根据旋转矩阵进行变换(将前面的得到的旋转矩阵传入cv.warpAffine),即可实现任意角度和任意中心的旋转效果。
cv2.getRotationMatrix2D(center, angle, scale),它有三个参数,分别为:
center:旋转中心

angle:旋转角度

scale:缩放比例

cv2.warpAffine(img,M,(x,y)),它有三个参数,分别为:
img:带旋转的图像

M:上面的到的旋转矩阵

(x,y):旋转后的输出图像的窗口大小

上代码:(下面对lena以中心旋转90度)

import cv2
import numpy as npimg=cv2.imread('lena.png')
h,w=img.shape[:2]
print(h,w)M=cv2.getRotationMatrix2D((w/2,h/2),90,1)#这里以图像中心旋转90度,1表示对图片不进行缩放。小伙伴可以将1改为2试试看
result=cv2.warpAffine(img,M,(w,h))#这里(w,h)你可以理解为设置窗口的大小,你多改几一下就知道了cv2.imshow('img',img)
cv2.imshow('result',result)
cv2.waitKey(0)


这里小伙伴们可能不理解(scale:缩放比例)和((x,y):旋转后的输出图像的窗口大小)的作用,因为我这里使用的是宽高相同的图片,如果你使用宽高不同的图片,你就会理解这两个参数的作用,因为旋转函数只会旋转图像,不会旋转图像窗口(这是不同的),我说的可能不清楚,小伙伴多改一下参数就行了。

(四)结语

学习opencv有很多的方法,我的建议是你可以加一些群,可以充分利用B站,CSDN,和百度。

在我的博客中,我不会讲解opencv的算法实现(当然我也不太会),我只会讲解一些函数的调用,不理解就多改一些参数,多尝试尝试,慢慢你就理解来。相信你总有一天可以说opencv不过“Ctrl+C,Crtl+V”

PS:如果有什么错误的地方,还请大家批评指正,不过错了也没啥关系,反正也没什么人看
最后,希望小伙伴们都能有所收获。码字不易,喜欢的话,关注一波在走吧

opencv-python 小白笔记(3)相关推荐

  1. python爬虫爬取京东图片(python小白笔记七)

    有时候需要统计,图片参考等,用python爬虫.爬下来的图片再存储到本地,同时把文件的名称取出一下.同时,python真是个有趣的东西,欢迎一起交流学习. 代码如下: 我的只是提取第一页,同时把图片保 ...

  2. openCV Python学习笔记(二)画几何

    此处要花几何图形,我们需要用到如下几个函数: cv2.line 画线函数 cv2.circle 画圆函数 cv2.ellipse 画椭圆 cv2.rectangle 画矩形 1.画线 img=cv2. ...

  3. OpenCV Python学习笔记(5)—— 边缘保留滤波(EPF)

    1 边缘保留滤波 高斯双边 均值迁移 2 测试 import cv2 as cv import numpy as npdef bi_demo(image):dst = cv.bilateralFilt ...

  4. OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并

    OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...

  5. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  6. OpenCV之Python学习笔记

    RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...

  7. 从零开始用Python实现股票量化交易之小白笔记(7)

    传送门 本系列原创博文传送门: 从零开始用Python实现股票量化交易之小白笔记(1) 从零开始用Python实现股票量化交易之小白笔记(2) 从零开始用Python实现股票量化交易之小白笔记(3) ...

  8. 前阿里大佬干货分享,0基础小白,转行必看Python学习笔记(七)

    Python学习笔记7 异常处理 包和模块 包和模块的一般操作 导入操作的本质 模块检索的路径 导入模块的场景 第三方包和模块的安装 异常处理 系统内部一开始已经内置了一些特定的错误场景,当我们触发了 ...

  9. 【Python 小白到精通 | 课程笔记】第二章:图灵和恩尼格马密码机2(文本分析)

    Alstudio 课程地址:飞桨AI Studio - 人工智能学习实训社区 (baidu.com) Python 小白到精通--第二章:图灵和恩尼格马密码机2(文本分析) 今天的任务:破解密钥 原以 ...

  10. Win10系统(无GPU)环境/Anacoda:Python小白如何从入门到成功运行YoloV3图片+视频demo

    前言 作为深耕FPGA多年的老司机,最近几年入坑AI异构计算FPGA加速领域,免不了要与各种深度学习算法模型打交道,但又不懂python,可是急坏了我这名老司机. 这不,最近杠上了Python,下面就 ...

最新文章

  1. luogu P1280 尼克的任务 序列DP
  2. python 函数部分
  3. split分片主要源码解析
  4. [HDU517] 小奇的集合
  5. 4 linux编辑器
  6. thinkphp 随机取10条数据_spark调优-数据倾斜
  7. 技术新星决战巅峰,全国大学生操作系统设计赛圆满结束!
  8. 螺纹的规定,http://www.doc88.com/p-30089302852.html
  9. web前端设计与开发大作业(五)----期末设计报告
  10. 想成为时间管理大师?试试番茄工作法!
  11. 解决:115网盘下载路径失败
  12. 汪华:未来三年的移动互联网创业
  13. 【华为OD机试真题 JS】竖直四子棋
  14. 浅谈网站PR值 如何提高PR值
  15. 水冷计算机配置单,新手水冷电脑组装的详细图文教程
  16. 3.wildcard
  17. UE4 HUD相关的笔记
  18. 50、ubuntu18.0420.04+CUDA11.1+cudnn11.3+TensorRT7.2/8.6+Deepsteam5.1+vulkan环境搭建和YOLO5部署
  19. 苹果旧版app_曾经被吹爆的苹果,这次彻底跌下神坛
  20. 数据结构与算法笔记(青岛大学王卓老师视频)

热门文章

  1. Python语言程序设计 - 北京理工大学 网课所有资料(源码,pdf,ppt课件,视频等)
  2. adblockplus简单介绍
  3. matlab 微分符号,Matlab 符号微积分
  4. Kafka常用命令(1):kafka-topics
  5. 如何删除360奇安信软件
  6. 图解CPU生产全过程——以intel CORE i7为例,展望CPU架构
  7. 中国计算机制造业比较优势分析,在全球产业链中,中国制造业拥有哪些显著的比较优势?()...
  8. hdu 4114 Disney's FastPass 状压dp
  9. 开源免费,最好用的3大系统9大防火墙软件安利给你们
  10. 化学计算机专业就业方向,女生就读数学专业、计算机类或化学专业怎么样?考研方向,就业前景?...