尝试对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中显示图像的辅助函数。让我们逐行解读:
-
%matplotlib inline
: 这是一个Jupyter Notebook的魔法命令,它告诉Jupyter在Notebook中内联显示matplotlib的图表,而不是弹出新的窗口。 -
import cv2
: 导入OpenCV库,用于图像处理。 -
import matplotlib.pyplot as plt
: 导入matplotlib.pyplot库,用于绘图和图像显示。 -
def imshow(img, gray=False, bgr_mode=False):
:定义了一个名为imshow
的函数,该函数用于显示图像。它接受三个参数:img
: 要显示的图像。gray
: 一个布尔值,指示是否将图像转换为灰度(默认为False
)。bgr_mode
: 一个布尔值,指示是否将图像从BGR模式转换为RGB模式(默认为False
)。
-
if gray:
: 如果gray
参数为True
,则执行以下语句块:-
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
: 使用OpenCV将图像转换为灰度。 -
plt.imshow(img, cmap="gray")
: 使用matplotlib.pyplot的imshow
函数显示灰度图像。
-
-
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
函数显示图像。
-
-
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 中显示结果。
让我们逐行解读:
-
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像素。
-
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 中显示结果。
让我们逐行解读:
-
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
: 文本的缩放比例。
-
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 中显示结果。
让我们逐行解读:
-
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
: 圆的边框宽度。
-
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 中显示结果。
让我们逐行解读:
-
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
: 矩形框的边框宽度。
-
imshow(license_car)
: 利用之前定义的imshow
函数显示带有添加矩形框的图像。
这段代码的效果是在之前绘制了蓝色圆形的图像上添加了一个绿色边框的矩形框,并在 Jupyter Notebook 中显示带有矩形框的图像。
python
cv2.imwrite("text_car.jpg",text_car)
最后将图片保存到本地。