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

图像插值与缩放

python 复制代码
%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中正确显示图像。

python 复制代码
logo = cv2.imread("zju.png")
imshow(logo)

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

python 复制代码
logo.shape[:2]

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

插值图像

resize函数

src:输入图像。

dst:输出图像,图像的数据类型与src相同。

dsize:输出图像的尺寸。

fx:水平轴的比例因子,如果将水平轴变为原来的两倍,则赋值为2。

fy:垂直轴的比例因子,如果将垂直轴变为原来的两倍,则赋值为2。

interpolation:差值方法的标志。

python 复制代码
imshow(cv2.resize(logo,dsize=(500,500)))

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

python 复制代码
imshow(cv2.resize(logo,dsize=(100,100)))

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

图像翻转

python 复制代码
imshow(cv2.flip(logo,0)) # 上下翻转

上下翻转得到如下图

python 复制代码
imshow(cv2.flip(logo,1)) # 1 左右 翻转

左右翻转得到如下图

图像的合并

python 复制代码
img1 = cv2.flip(logo,0)
img2 = cv2.flip(logo,1)
imshow(cv2.hconcat([img1,img2]))
python 复制代码
img3 = cv2.hconcat([img1,img2])
img4 = cv2.flip(img3,1)
imshow(cv2.vconcat([img3,img4]))
相关推荐
NAGNIP13 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab15 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab15 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP18 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年18 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼19 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS19 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区20 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈20 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang20 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx