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

2024-01-02 12:29:37

尝试对car.jpg中的车辆用蓝色框进行选中,并在左下角显示车牌.
%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中正确显示图像。

import cv2
car = cv2.imread("car.jpg")
imshow(car)

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

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 中显示带有矩形框的图像。

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 中显示带有文本的图像。

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 中显示带有圆形的图像。

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 中显示带有矩形框的图像。

cv2.imwrite("text_car.jpg",text_car)

最后将图片保存到本地。

文章来源:https://blog.csdn.net/weixin_45266691/article/details/135295708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。