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]))
相关推荐
还是转转1 小时前
AI Code Review 工具
人工智能·代码复审
艾莉丝努力练剑1 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
拓端研究室4 小时前
专题:2025AI产业全景洞察报告:企业应用、技术突破与市场机遇|附920+份报告PDF、数据、可视化模板汇总下载
大数据·人工智能·pdf
lumi.5 小时前
Vue + Element Plus 实现AI文档解析与问答功能(含详细注释+核心逻辑解析)
前端·javascript·vue.js·人工智能
m0_650108246 小时前
InstructBLIP:面向通用视觉语言模型的指令微调技术解析
论文阅读·人工智能·q-former·指令微调的视觉语言大模型·零样本跨任务泛化·通用视觉语言模型
金融小师妹6 小时前
基于NLP语义解析的联储政策信号:强化学习框架下的12月降息概率回升动态建模
大数据·人工智能·深度学习·1024程序员节
AKAMAI8 小时前
提升 EdgeWorker 可观测性:使用 DataStream 设置日志功能
人工智能·云计算
银空飞羽8 小时前
让Trae CN SOLO自主发挥,看看能做出一个什么样的项目
前端·人工智能·trae
cg50179 小时前
基于 Bert 基本模型进行 Fine-tuned
人工智能·深度学习·bert
Dev7z9 小时前
基于Matlab图像处理的EAN条码自动识别系统设计与实现
图像处理·人工智能