2、OpenCV 面试题 该文章只针对面试时面试官提问如何回答的更全更好看此文章没有讲解太多太细节的知识点。如果知识点本身不会背诵此文章可能能让你找到一份工作但不能让你持续的干下去。还是需要自身精通对应知识点。该文章适合有学习过OpenCV 和Python的朋友阅读主要是针对本科应届生。收录了十道近几年非常经典的OpenCV面试题。如果您觉得这篇文章对您有帮助想深入学习人工智能相关技术可以私信我谢谢1.灰度化的原理有哪些技术灰度化原理灰度化是将一幅彩色图像转换为灰度图像的过程。彩色图像通常由多个通道如RGB模型的R、G、B组成而灰度图像是单通道图像每个像素只有一个强度值表示从黑0到白255的亮度。其核心原理是通过一个加权组合或选择将三个通道的颜色信息融合成一个能代表该点亮度的单值。常用技术1. 分量法直接取某一个通道的值作为灰度值。Gray RR分量法Gray GG分量法Gray BB分量法2. 最大值法取 R、G、B 三个分量中的最大值。Gray max(R, G, B)3. 平均值法取 R、G、B 三个分量的简单算术平均值。Gray (R G B) / 34. 加权平均法最常用、最符合人眼感知根据人眼对不同颜色的敏感度人眼对 绿色最敏感红色次之蓝色最不敏感赋予不同的权重进行加权平均。这是 OpenCV等库 默认使用的方法。Gray 0.299R 0.587G 0.114BITU-R BT.601标准2.二值化的原理有哪些二值化原理二值化是将灰度图像转换为只有纯黑0和纯白255两种像素值的图像的过程。它通过设定一个阈值Threshold将灰度图像中每个像素的灰度值与阈值进行比较大于阈值的像素点置为白色255小于等于阈值的像素点置为黑色0常用技术1. 全局阈值法简单阈值法手动指定一个全局阈值。效果高度依赖于人工选择。OTSU大津法/最大类间方差法最常用的自动全局阈值法。它遍历所 有可能的阈值计算前景目标和背景的类间方差使类间方差最大的阈值即为最佳阈值。适用于双峰直方图的图像前景和背景的灰度值分布明显分开。迭代法通过不断迭代逼近最佳阈值。2. 局部/自适应阈值法图像不同区域的光照条件可能不同全局阈值效果差。自适应阈值法为图像中的每个小区域计算其独有的阈值。自适应均值阈值阈值取的是目标像素点周围一个邻域区域的平均值。自适应高斯阈值阈值取的是目标像素点周围一个邻域区域的加权平均值权重由高斯核函数确定。比均值法更常用抗噪能力更强。3.模板匹配了解哪些有哪些技术模板匹配是一种在较大图像中搜索和查找与给定模板图像最匹配区域的技术。它通过在输入图像上滑动模板图像块并计算模板图像与输入图像对应区域的相似度度量来实现。常用技术相似度度量方法1.平方差匹配法TM_SQDIFF计算平方差值越小越匹配。2.归一化平方差匹配法TM_SQDIFF_NORMED对平方差进行归一化结果在0~1之间越接近0越匹配。3.相关匹配法TM_CCORR计算乘法相关值值越大越匹配。但对亮度敏感。4.归一化互相关匹配法TM_CCORR_NORMED对互相关进行归一化结果在0~1之间越接近1越匹配。5.相关系数匹配法TM_CCOEFF计算模板与图像的相关系数值越大越匹配。解决了对亮度的敏感性。6.归一化相关系数匹配法TM_CCOEFF_NORMED最常用、效果最好。对相关系数进行归一化结果在-1~1之间越接近1越匹配。精度高对光照变化有稳健性。4.模板匹配的原理怎么实现原理核心是“滑动窗口相似度计算”。实现以OpenCV和TM_CCOEFF_NORMED方法为例import cv2 import numpy as np # 1. 读取主图像和模板图像 img cv2.imread(main_image.jpg, 0) # 以灰度模式读取 template cv2.imread(template.jpg, 0) h, w template.shape # 2. 执行模板匹配 # 使用归一化相关系数匹配法 result cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)# 3. 定位最匹配的位置 min_val, max_val, min_loc, max_loc cv2.minMaxLoc(result) top_left max_loc # 因为 TM_CCOEFF_NORMED 是最大值最匹配 bottom_right (top_left[0] w, top_left[1] h) # 4. 绘制矩形框并显示 cv2.rectangle(img, top_left, bottom_right, 255, 2) cv2.imshow(Matched, img) cv2.waitKey(0) cv2.destroyAllWindows()5.是否了解ORB特征描述子是的。ORBOriented FAST and Rotated BRIEF是一个非常高效且免费SIFT、SURF已专利化的特征检测与描述算法。特征检测使用改进的FAST角点检测器Oriented FAST来寻找关键点并为 其计算方向通过质心法使其具有旋转不变性。特征描述使用改进的BRIEF描述子rBRIEF - Rotation-aware BRIEF来描述关键点周围的区域。它根据关键点的方向对 BRIEF描述子进行了旋转增强了其旋转不变性。优点速度快比 SIFT 快两个数量级效果良好具备旋转和尺度不变性通过图像金字塔实现对噪声和亮度变化有一定鲁棒性。是许多实时应用的首选。6. AKAZE算法AKAZEAccelerated-KAZE是KAZE算法的加速版。与SIFT/ORB的区别传统方法如SIFT使用高斯金字塔和DoG高斯差分进行多尺度特征检测但高斯核是线性滤波器会模糊图像边缘。而 KAZE/AKAZE使用非线性扩散滤波来构建尺度空间能在保留边缘和细节的同时平滑噪声因此特征定位更精确。描述子使用Modified-Local Difference Binary (M-LDB)描述子该描述子不仅 包含了灰度梯度信息还包含了方向信息且是二进制的匹配速度非常快。优点比 KAZE 更快特征质量高对噪声、模糊、旋转和尺度变化具有很好的鲁 棒性。在许多情况下其性能优于 ORB 和 SIFT但速度比 ORB 慢。7.余弦相似度余弦相似度通过测量两个向量夹角的余弦值来度量它们之间的相似性。公式对于两个向量A和B其余弦相似度为cos(θ) (A · B) / (||A|| ||B||)其中 A·B是点积||A||和||B||是向量的模长度。取值范围[-1, 1]。1方向完全相同最相似。0正交无关。-1方向完全相反最不相似。在CV中的应用将图像特征如HOG、深度特征视为高维向量计算其余弦相似度。在自然语言处理中衡量词向量的相似性。与欧氏距离的区别余弦相似度只关心向量的方向而不关心其大小幅度 。这使得它对绝对数值不敏感更适合衡量“差异”。8.怎么识别手写体或者怎么消除手写体识别手写体这是一个复杂的模式识别问题通常使用机器学习/深度学习。1.传统方法特征提取如HOG、轮廓、骨架等分类器如SVM、随机森林。2.现代方法主流CNN卷积神经网络用于单个字符或短数字串的识别。如LeNet-5用于邮 政编码识别。CNN RNN CTC用于整行手写文字的识别。CNN提取特征RNN如LSTM处理序列依赖关系CTCConnectionist Temporal Classification解决对齐问题。消除手写体图像修复/Inpainting目标是移除图像中的手写内容并用合理的背景填充。1.传统方法基于扩散的方法从区域边界向内部传播信息适合修复小区域。基于patch的方法从图像的其他部分搜索最相似的图像块来填充被手写体覆 盖的区域。OpenCV中的cv2.inpaint()函数即实现了此类方法。2.深度学习方法使用生成对抗网络GANs或U-Net等结构进行图像修复。这些模型经过大量数据训练能够生成非常逼真和连贯的内容来填充大面积缺失区域效果远超传统方 法。9.图像矫正具体怎么实现的图像矫正通常指将发生透视变形如拍摄角度倾斜或仿射变形的图像变换回正面、规整的视图。实现步骤以矫正一张倾斜的文档为例1.边缘检测使用Canny等算子检测图像中的边缘。2.轮廓查找找到最外围的轮廓理想情况下是文档的四个顶点的轮廓。3.顶点定位使用轮廓近似算法如cv2.approxPolyDP找到轮廓的四个角点。4.计算变换矩阵定义目标图像的四个角点坐标如[0,0], [w,0], [w,h], [0,h]。使用cv2.getPerspectiveTransform(src_pts, dst_pts)计算从原图四个角点到目标角点的透视变换矩阵3x3。5.应用变换使用cv2.warpPerspective(image, transformation_matrix, (width, height))对原图进行透视变换得到矫正后的图像。如果只是简单的旋转矫正没有透视变形可以通过霍夫变换检测直线计算倾斜角度然后进行仿射旋转。10.答题卡填涂识别还要区分正反面保证识别到轻涂避免识别擦除的有印子的区域这是一个系统工程需要多步骤处理和高鲁棒性的算法设计。处理流程1.图像预处理灰度化、二值化使用自适应阈值法可以有效克服光照不均和纸张反光比全局阈值更能清晰地分离出笔迹包括轻涂和印子。形态学操作使用闭运算先膨胀后腐蚀连接轻涂区域可能存在的断点使其成为一个完整的连通域。2.区分正反面特征匹配/模板匹配在答题卡的固定位置如左上角、右上角设计一个正面独有的标记如一个二维码、特定图案“A面”或“B面”文字。通过检测该标记是否存在来判断正反面。结构分析如果正面和反面的题目布局有显著不同如选择题框的位置可以通过检测特定区域的布局特征来判断。3.定位选项框由于答题卡是标准化的选项框的位置是固定的。可以通过预先设计好的模板或坐标来直接定位每一个选项框的区域ROI。4.识别填涂区域核心统计像素法对每个选项框ROI统计其中白色像素或黑色像素取决于你的二值化方式的数量。设定动态阈值未填涂白色像素多黑色像素少。轻涂/正常填涂黑色像素显著增多。有印子的擦除黑色像素比未填涂多但比正常填涂少。关键策略为每个选项设置一个动态的、相对的判断阈值。例如识别一整列同一题的所有选项的填涂情况将其中填充度最高的那个选项判为有效填涂并且其填充度必须超过一个绝对下限阈值以避免将印子误判为填涂同时与其他选项的填充度要有足够的差距以避免多涂误判。形态学分析分析选项框内黑色像素的连通域特性。一个规范的填涂通常 是一个较大的、形状规则的连通域而擦除的印子可能是多个细小的、分散的连通域。5.后处理与校验检查是否有多选题涂了多个选项根据规则判断是否有效。可以与 OMR光学标记识别设备的硬件设计结合如使用红光扫描碳素笔芯吸收红光来更容易地区分笔迹和印刷体。