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

复制代码
尝试对car.jpg中的车辆用蓝色框进行选中,并在左下角显示车牌.
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 复制代码
import cv2
car = cv2.imread("car.jpg")
imshow(car)

上面这两行代码是读取本地car.jpg图片并用上面定义的imshow进行展示

python 复制代码
rect_car = cv2.rectangle(img=car,pt1=(460,0),pt2=(1000,350),color=(0,0,255),thickness=3)
imshow(rect_car)

这段代码利用 OpenCV 绘制了一个红色边框的矩形框,然后使用之前定义的 imshow 函数在 Jupyter Notebook 中显示结果。

让我们逐行解读:

  1. rect_car = cv2.rectangle(img=car, pt1=(460,0), pt2=(1000,350), color=(0,0,255), thickness=3): 这一行代码使用 cv2.rectangle 函数在图像 car 上绘制一个矩形框。具体参数解释如下:

    • img=car: 操作的图像,这里是 car。
    • pt1=(460,0): 矩形框的一个顶点坐标。
    • pt2=(1000,350): 矩形框对角线上的另一个顶点坐标。
    • color=(0,0,255): 绘制矩形的颜色,这里是红色 (BGR 格式,所以 (0, 0, 255) 表示红色)。
    • thickness=3: 矩形框的边框宽度,这里是3像素。
  2. imshow(rect_car): 利用之前定义的 imshow 函数显示带有绘制矩形框的图像。因为 imshow 函数中有默认参数 bgr_mode=False,所以在显示之前将 BGR 格式转换为 RGB 格式。

这段代码的效果是在 car 图像上绘制了一个红色边框的矩形框,并在 Jupyter Notebook 中显示带有矩形框的图像。

python 复制代码
text_car = cv2.putText(img=rect_car,text="SU EUK722",color=(255,255,255),thickness=2,
            org=(0,500),fontFace=1,fontScale=5)
imshow(text_car)

这段代码使用 OpenCV 的 cv2.putText 函数在之前绘制矩形框的图像上添加了文本,然后通过之前定义的 imshow 函数在 Jupyter Notebook 中显示结果。

让我们逐行解读:

  1. text_car = cv2.putText(img=rect_car, text="SU EUK722", color=(255,255,255), thickness=2, org=(0,500), fontFace=1, fontScale=5): 这一行代码使用 cv2.putText 函数在图像 rect_car 上添加文本。具体参数解释如下:

    • img=rect_car: 操作的图像,这里是之前绘制了矩形框的图像 rect_car。
    • text="SU EUK722": 要添加的文本内容。
    • color=(255,255,255): 文本的颜色,这里是白色 (BGR 格式,所以 (255, 255, 255) 表示白色)。
    • thickness=2: 文本的字体粗细。
    • org=(0,500): 文本的起始坐标,即左下角的位置。
    • fontFace=1: 字体的类型,这里是正常字体。
    • fontScale=5: 文本的缩放比例。
  2. imshow(text_car): 利用之前定义的 imshow 函数显示带有添加文本的图像。

这段代码的效果是在之前绘制了红色边框的图像上添加了白色文本 "SU EUK722",并在 Jupyter Notebook 中显示带有文本的图像。

python 复制代码
circle_car = cv2.circle(img=text_car,center=(730,230),radius=20,color=(255,0,0),thickness=3)
imshow(circle_car)

这段代码使用 OpenCV 的 cv2.circle 函数在之前添加了文本的图像上绘制了一个蓝色边框的圆形,然后通过之前定义的 imshow 函数在 Jupyter Notebook 中显示结果。

让我们逐行解读:

  1. circle_car = cv2.circle(img=text_car, center=(730,230), radius=20, color=(255,0,0), thickness=3): 这一行代码使用 cv2.circle 函数在图像 text_car 上绘制一个圆形。具体参数解释如下:

    • img=text_car: 操作的图像,这里是之前添加了文本的图像 text_car。
    • center=(730,230): 圆心的坐标。
    • radius=20: 圆的半径。
    • color=(255,0,0): 绘制圆的颜色,这里是蓝色 (BGR 格式,所以 (255, 0, 0) 表示蓝色)。
    • thickness=3: 圆的边框宽度。
  2. imshow(circle_car): 利用之前定义的 imshow 函数显示带有绘制圆形的图像。

这段代码的效果是在之前添加了文本的图像上绘制了一个蓝色边框的圆形,并在 Jupyter Notebook 中显示带有圆形的图像。

python 复制代码
license_car = cv2.rectangle(img=circle_car,pt1=(650,260),pt2=(800,300),color=(0,255,0),thickness=3)
imshow(license_car)

这段代码使用 OpenCV 的 cv2.rectangle 函数在之前绘制了蓝色圆形的图像上添加了一个绿色边框的矩形,然后通过之前定义的 imshow 函数在 Jupyter Notebook 中显示结果。

让我们逐行解读:

  1. license_car = cv2.rectangle(img=circle_car, pt1=(650,260), pt2=(800,300), color=(0,255,0), thickness=3): 这一行代码使用 cv2.rectangle 函数在图像 circle_car 上绘制一个矩形框。具体参数解释如下:

    • img=circle_car: 操作的图像,这里是之前添加了圆形的图像 circle_car。
    • pt1=(650,260): 矩形框的一个顶点坐标。
    • pt2=(800,300): 矩形框对角线上的另一个顶点坐标。
    • color=(0,255,0): 绘制矩形框的颜色,这里是绿色 (BGR 格式,所以 (0, 255, 0) 表示绿色)。
    • thickness=3: 矩形框的边框宽度。
  2. imshow(license_car): 利用之前定义的 imshow 函数显示带有添加矩形框的图像。

这段代码的效果是在之前绘制了蓝色圆形的图像上添加了一个绿色边框的矩形框,并在 Jupyter Notebook 中显示带有矩形框的图像。

python 复制代码
cv2.imwrite("text_car.jpg",text_car)

最后将图片保存到本地。

相关推荐
cuiZero0几秒前
主流大模型系列对比:GPT、GLM、DeepSeek 与 Claude 选型指南
大数据·人工智能·gpt
LMT_Lanmantech几秒前
MATLAB合规管理:如何避免侵权赔偿和审计风险
开发语言·matlab·信息可视化
硅农深芯3 分钟前
芯片设计中的版图依赖效应:被忽视的性能隐形约束
人工智能·layout·版图依赖效应·lde
闭包不眠4 分钟前
Word转HTML后体积不对,裁掉的截图原图还在
前端·图像处理·人工智能·计算机视觉·html·word
TMT星球4 分钟前
高精度还原指尖细节 觅蜂科技提出4D数据重建框架MEgoVista
人工智能·科技
启友玩AI5 分钟前
微安级唤醒、毫安级识别:基于 CI3422 的 AI 眼镜语音交互开发实战
c语言·人工智能·科技·嵌入式硬件·ai·ar·语音识别
xixixi777777 分钟前
大语言模型(LLM)核心能力及在政务领域的全域落地应用解析
人工智能·安全·ai·语言模型·大模型·数据处理·政务
开发笔记-阿牛8 分钟前
AM收音机蓝牙二合一设计复盘
人工智能·单片机·嵌入式硬件·音视频·音频
张继雁8 分钟前
30~50MPa数控高压清洗:前端分级过滤逻辑,抑制硬质磨粒对喷嘴冲蚀
大数据·数据库·人工智能·机器学习·创业创新
言乐610 分钟前
PythonLOLM自动生成复盘报告模型
开发语言·前端·数据库·人工智能·python