当前位置: 首页 > news >正文

opencv期末练习题(2)附带解析

图像插值与缩放

%matplotlib inline
import cv2
import matplotlib.pyplot as plt
def imshow(img,gray=False,bgr_mode=False):if gray:img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img,cmap="gray")else:if not bgr_mode:img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)plt.imshow(img)plt.show()

这段代码主要是一个用于在Jupyter Notebook中显示图像的辅助函数。让我们逐行解读:

  1. %matplotlib inline: 这是一个Jupyter Notebook的魔法命令,它告诉Jupyter在Notebook中内联显示matplotlib的图表,而不是弹出新的窗口。

  2. import cv2: 导入OpenCV库,用于图像处理。

  3. import matplotlib.pyplot as plt: 导入matplotlib.pyplot库,用于绘图和图像显示。

  4. def imshow(img, gray=False, bgr_mode=False)::定义了一个名为imshow的函数,该函数用于显示图像。它接受三个参数:

    • img: 要显示的图像。
    • gray: 一个布尔值,指示是否将图像转换为灰度(默认为False)。
    • bgr_mode: 一个布尔值,指示是否将图像从BGR模式转换为RGB模式(默认为False)。
  5. if gray:: 如果 gray 参数为 True,则执行以下语句块:

    • img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY): 使用OpenCV将图像转换为灰度。

    • plt.imshow(img, cmap="gray"): 使用matplotlib.pyplot的imshow函数显示灰度图像。

  6. else:: 如果 gray 参数为 False,则执行以下语句块:

    • if not bgr_mode:: 如果 bgr_mode 参数为 False,则执行以下语句块:

      • img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB): 使用OpenCV将图像从BGR模式转换为RGB模式。
    • plt.imshow(img): 使用matplotlib.pyplot的imshow函数显示图像。

  7. plt.show(): 显示图像。这一行代码会在Notebook中直接显示图像。

这个函数的作用是根据输入的参数显示彩色或灰度图像,确保在Jupyter Notebook中正确显示图像。

logo = cv2.imread("zju.png")
imshow(logo)

读取图像并用上面定义的函数处理,得到如下所示图像

logo.shape[:2]

读取图像尺寸:得到(829,843)

插值图像

resize函数

src:输入图像。
dst:输出图像,图像的数据类型与src相同。
dsize:输出图像的尺寸。
fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2。
fy:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2。
interpolation:差值方法的标志。

imshow(cv2.resize(logo,dsize=(500,500)))

将图像resize为500*500的尺寸,以便后续处理,得到如下图

imshow(cv2.resize(logo,dsize=(100,100)))

将图像缩小为100*100尺寸,得到如下图

图像翻转

imshow(cv2.flip(logo,0)) # 上下翻转

上下翻转得到如下图

imshow(cv2.flip(logo,1)) # 1 左右 翻转

左右翻转得到如下图

图像的合并

img1 = cv2.flip(logo,0)
img2 = cv2.flip(logo,1)
imshow(cv2.hconcat([img1,img2]))

img3 = cv2.hconcat([img1,img2])
img4 = cv2.flip(img3,1)
imshow(cv2.vconcat([img3,img4]))

http://www.lryc.cn/news/272553.html

相关文章:

  • 【Mybatis】深入学习MyBatis:高级特性与Spring整合
  • C语言与人生函数的对比,使用,参数详解
  • 机器人动力学一些笔记
  • Plantuml之甘特图语法介绍(二十八)
  • Docker support for NVIDIA GPU Accelerated Computing on WSL 2
  • SQL窗口函数大小详解
  • C#上位机与欧姆龙PLC的通信06---- HostLink协议(FINS版)
  • 认识SpringBoot项目中的Starter
  • ChatGPT 4.0真的值得花钱买入吗?
  • vue3对比vue2是怎样的
  • openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证
  • [Verilog语言入门教程] Verilog 减法器 (半减器, 全减器, 加减共用)
  • 预编译仓库中的 Helm Chart
  • Python requests get和post方法发送HTTP请求
  • 在Cadence中单独添加或删除器件与修改网络的方法
  • 轻松调整视频时长,创意与技术的新篇章
  • 树与二叉树笔记整理
  • 如何自动生成 API 接口文档 - 一份详细指南
  • 【CF比赛记录】—— Good Bye 2023(A、B、C)
  • MySQL:索引
  • CUMT--Java复习--核心类
  • Redis:原理速成+项目实战——Redis实战4(解决Redis缓存穿透、雪崩、击穿)
  • 后端开发——jdbc的学习(一)
  • 阿里云免费SSL证书时长只有3个月,应对方法来了
  • Flutter 中使用 ICON
  • 百度编辑器常用设置
  • Java ORM 框架 Mybatis详解
  • 前端:html+css+js实现CSDN首页
  • 三种 SqlSession
  • Mybatis SQL构建器类 - 问题答案