OpenCV计算机视觉基础教程(Python版)试题及答案

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenCV计算机视觉基础教程(Python版)
试题及答案
一、单项选择题(本大题共20小题,每小题1分,共20分)
1、OpenCV从()版本开始使用Apache 2许可。

A、4.2.0
B、4.3.0
C、4.4.0
D、4.5.0
2、OpenCV提供机器学习功能的模块是()
A、calib3d
B、stitching
C、ml
D、dnn
3、OpenCV使用()语言实现。

A、Java
B、C/C++
C、Python
D、JavaScript
4、下列选项中,可在NumPy中表示复数的数据类型是()。

A、int
B、single
C、complex64
D、double
5、NumPy中可执行矩阵乘法的运算符是()
A、*
B、**
C、/
D、@
6、OpenCV用于读取图像文件的函数是()
A、imread()
B、imshow()
C、imwrite()
D、VideoCapture()
7、OpenCV用于绘制矩形的函数是()
A、line()
B、rectangle()
C、ellipse()
D、polylines()
8、在cvtColor()函数中用于将图像从BGR色彩空间转换为GRAY色彩空间的参数是()
A、COLOR_BGR2RGB
B、COLOR_BGR2GRAY
C、COLOR_BGR2YCrCb
D、COLOR_BGR2HSV
9、OpenCV用于实现中值滤波的函数是()
A、blur()
B、boxFilter()
C、medianBlur()
D、filter2D()
10、moments()函数返回的轮廓矩中,()表示轮廓的面积。

A、m00
B、m10
C、m20
D、m21
11、下列选项中,可返回轮廓拟合椭圆的函数是()
A、minAreaRect()
B、fitEllipse()
C、fitLine()
D、minEnclosingTriangle()
12、下列选项中,可绘制直方图的函数是()
A、hist()
B、calcHist()
C、histogram()
D、equalizeHist()
13、下列关于模板匹配的说法中错误的是()
A、模板图像与输入图像逐像素进行比较。

B、matchTemplate()函数可返回多个匹配目标。

C、matchTemplate()函数执行匹配时,匹配值越大,说明匹配度越高。

D、匹配结果包含了匹配值和位置。

14、在grabCut()函数返回的掩模图像中,表示确定前景的是()
A、0
B、1
C、2
D、3
15、FAST特征检测返回关键点信息中不包含()
A、角度
B、领域大小
C、坐标
D、距离
16、下列关于Haar级联分类器的说法错误的是()
A、OpenCV使用预训练好的分类器文件创建Haar分类器对象。

B、Haar级联分类器可检测彩色图像中的人脸。

C、Haar级联分类器可检测图像中的猫脸。

D、可检测图像中的多张人脸。

17、下列选项中,不能将多维数组转换为一维数组的函数是()
A、reshape()
B、resize()
C、ones()
D、ravel()
18、下列关于图像加法运算的说法中错误的是()
A、加法运算符“+”可用于执行图像加法运算。

B、cv2.add()函数可用于执行图像加法运算。

C、加法运算符“+”和cv2.add()函数运算结果相同。

D、运算结果中像素值不会大于255。

19、下列关于跟踪栏(Trackbar)的说法中错误的是()
A、跟踪栏可响应用户单击行为。

B、创建跟踪栏时应指定图像窗口。

C、跟踪栏返回的值为整数。

D、跟踪栏回调函数不能接受可选数据。

20、warpAffine()函数不能实现的图像操作是()
A、平移
B、旋转
C、缩放
D、扭曲
二、名词解释(本大题共5小题,每小题4分,共20分)
1、高斯滤波
2、二值化阈值处理
3、膨胀
4、色彩空间
5、图像金字塔
三、简单题(本大题共4小题,每小题5分,共20分)
1、请问如何在Windows 10中配置使用OpenCV和Python的视觉应用开发环境?
2、请问如何处理图像窗口鼠标事件?
3、请问使用OpenCV中的深度学习预训练模型进行图像识别包含哪些步骤?
4、请问FisherFaces人脸识别包含哪些步骤?
四、程序填空题(本大题共4个空,每空5分,共20分)
在程序空白处填入适当的代码,将程序补充完整。

1、下面的命令创建一个数组,在改变其形状后将其转换为一维数组输出,在划线处填入适当的代码,将程序补充完整。

>>> import numpy as np
>>> a=np.arange(9)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> a.resize(3,3)
>>> np.ravel(a)
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> np.ravel(_______________)
array([0, 3, 6, 1, 4, 7, 2, 5, 8])
2、下面的代码将图像下半部分设置为黑色,在划线处填入适当的代码,将程序补充完整。

import cv2
img=cv2.imread(test.jpg')
cv2.imshow('img1',img) #显示原图像
h,w,r=img.shape
h2=int(h/2)
______________________________ #修改图像
cv2.imshow('img2',img) #显示修改后的图像
cv2.waitKey(0)
3、下面的代码将图像的宽度放大1倍、高度缩小一半,,在划线处填入适当的代码,将程序补充完整。

import cv2
img=cv2.imread('test.jpg')
cv2.imshow('img1',img) #显示原图像
img2=cv2.resize(________________________) #缩放图像
cv2.imshow('img2',img2) #显示修改后的图像
cv2.waitKey(0)
4、下面的代码对图像执行膨胀操作,在划线处填入适当的代码,将程序补充完整。

import cv2
import numpy as np
img=cv2.imread('yang.jpg') #读取图像
cv2.imshow('img',img) #显示原图像
kernel = np.ones((3,3),np.uint8) #定义大小为3×3的内核
img2 = ______________________________________ #膨胀,迭代3次
cv2.imshow('img2',img2) #显示转换结果图像
cv2.waitKey(0)
五、编程题(本大题共2小题,每小题10分,共20分)
在程序空白处填入适当的代码,将程序补充完整。

1、编写一段程序,使用calcHist()函数查找图像的二维直方图,并利用matplotlib.pyplot.imshow()函数显示二位直方图。

2、编写一段程序,使用FisherFaces实现人脸识别,已知第1人人脸图像文件名称分别为x11.jpg、x12.jpg、x13.jpg,已知第2人人脸图像文件名称分别为x21.jpg、x22.jpg、
x23.jpg,未知人脸图像文件名为no.jpg。

参考答案
一、单项选择题(本大题共20小题,每小题1分,共20分)
1~5:DCBCD 6~10:ABBCA
11~15:BACBD 16~20:BCCDD
六、名词解释(本大题共5小题,每小题4分,共20分)
1、高斯滤波
答:高斯滤波按像素点与中心点的不同距离,赋予像素点不同的权重值,越靠近中心点权重值越大,越远离中心点权重值越小;然后根据权重值计算邻域内所有像素点的和,将和作为中心点的像素值。

2、二值化阈值处理
答:cv2.threshold()函数的type参数值为cv2.THRESH_BINARY时执行二值化阈值处理,将大于阈值的像素值设置为255,将其他像素值设置为0。

3、膨胀
答:膨胀操作与腐蚀操作刚好相反,它对图像的边界进行扩张。

其执行遍历操作时,只有在内核完全处于前景外部时,内核中心对应像素点的值才设置为0,否则设置为1。

4、色彩空间
答:色彩空间也称颜色模型、颜色空间、色彩模型等,它是图像在计算机内部的一种存储方式。

常见的色彩空间包括RGB、GRAY、XYZ、YCrCb、HSV等。

5、图像金字塔
答:图像金字塔从分辨率的角度分析处理图像。

图像金字塔的底部为原始图像,对原始图像进行梯次向下采样,得到金字塔的其他各层图像。

层次越高,分辨率越低,图像越小。

通常,每向上一层,图像的宽度和高度就为下一层的一半。

常见的图像金字塔可分为高斯金字塔和拉普拉斯金字塔。

七、简单题(本大题共4小题,每小题5分,共20分)
1、请问如何在Windows 10中配置使用OpenCV和Python的视觉应用开发环境?
答:在Windows 10中配置使用OpenCV和Python的视觉应用开发环境主要包括:安装Python、安装NumPy、安装OpenCV-Python以及编程工具(如Visual Studio Code)。

2、请问如何处理图像窗口鼠标事件?
答:第一步:定义鼠标事件回调函数。

第二步:调用cv2.setMouseCallback()函数将回调函数绑定到图像窗口。

3、请问使用OpenCV中的深度学习预训练模型进行图像识别包含哪些步骤?
答:使用OpenCV中的深度学习预训练模型进行图像识别的基本步骤如下。

(1)从配置文件和预训练模型文件中加载模型。

(2)将图像文件处理为块数据(blob)。

(3)将图像文件的块数据设置为模型的输入。

(4)执行预测。

(5)处理预测结果。

4、请问FisherFaces人脸识别包含哪些步骤?
答:FisherFaces人脸识别的基本步骤如下。

(1)调用cv2.face.FisherFaceRecognizer_create()函数创建FisherFaces识别器。

(2)调用识别器的train()方法以便使用已知图像训练模型。

(3)调用识别器的predict()方法以便使用未知图像进行识别,确认其身份。

八、程序填空题(本大题共4个空,每空5分,共20分)
1、a,order='F'
2、img[h2:,:,:]=0
3、img,None,fx=2,fy=0.5
4、cv2.dilate(img,kernel,iterations = 3)
九、编程题(本大题共2小题,每小题10分,共20分)
1、编写一段程序,使用calcHist()函数查找图像的二维直方图,并利用
matplotlib.pyplot.imshow()函数显示二位直方图。

参考代码如下。

import cv2
import matplotlib.pyplot as plt
img=cv2.imread(test.jpg') #打开图像
cv2.imshow('original',img) #显示原图像
img2=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #转换色彩空间为HSV
hist = cv2.calcHist([img2], [0, 1], None,
[180, 256], [0, 180, 0, 256]) #计算颜色直方图
plt.imshow(hist,interpolation = 'nearest') #绘制颜色直方图
plt.show() #显示颜色直方图
3、编写一段程序,使用FisherFaces实现人脸识别,已知第1人人脸图像文件名称分别为x11.jpg、x12.jpg、x13.jpg,已知第2人人脸图像文件名称分别为x21.jpg、x22.jpg、x23.jpg,未知人脸图像文件名为no.jpg。

参考代码如下。

import cv2
import numpy as np
#读入训练图像
img11=cv2.imread('x11.jpg',0) #打开图像,灰度图像
img12=cv2.imread('x12.jpg',0) #打开图像,灰度图像
img13=cv2.imread('x13.jpg',0) #打开图像,灰度图像
img21=cv2.imread('x21.jpg',0) #打开图像,灰度图像
img22=cv2.imread('x22.jpg',0) #打开图像,灰度图像
img23=cv2.imread('x23.jpg',0) #打开图像,灰度图像train_images=[img11,img12,img13,img21,img22,img23] #创建训练图像数组labels=np.array([0,0,0,1,1,1]) #创建标签数组,0和1表示训练图像数组中人脸的身份recognizer=cv2.face.FisherFaceRecognizer_create() #创建FisherFaces识别器recognizer.train(train_images,labels) #执行训练操作
testimg=cv2.imread(no.jpg',0) #打开测试图像
label,confidence=recognizer.predict(testimg) #识别人脸
#输出识别结果
print('匹配标签:',label)
print('可信程度:',confidence)。

相关文档
最新文档