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)

最后将图片保存到本地。

相关推荐
Yhame.23 分钟前
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
java·开发语言
Dovir多多1 小时前
Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息
网络·python·计算机网络·安全·网络安全·数据分析
明明真系叻1 小时前
第二十六周机器学习笔记:PINN求正反解求PDE文献阅读——正问题
人工智能·笔记·深度学习·机器学习·1024程序员节
mazo_command2 小时前
【MATLAB课设五子棋教程】(附源码)
开发语言·matlab
88号技师2 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手2 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
青春男大2 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
88号技师2 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
Zer0_on2 小时前
数据结构栈和队列
c语言·开发语言·数据结构
一只小bit2 小时前
数据结构之栈,队列,树
c语言·开发语言·数据结构·c++