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光学标记识别设备的硬件设计结合如使用红光扫描碳素笔芯吸收红光来更容易地区分笔迹和印刷体。

相关新闻

医学图像分割实战:从UNet到UNet3+的演进、选型与调参指南

医学图像分割实战:从UNet到UNet3+的演进、选型与调参指南

1. 项目概述:从UNet到UNet3,医学图像分割的演进之路 如果你正在处理医学影像,比如从CT扫描中分割出肿瘤区域,或者在显微镜图像中勾勒出细胞边界,那么“UNet”这个名字你一定不陌生。它几乎成了医学图像分割领域的“标配…

2026/10/17 20:12:55 阅读更多 →
miniMax平台部署OpenClaw工具链实战指南

miniMax平台部署OpenClaw工具链实战指南

1. 项目概述:miniMax平台部署OpenClaw工具链最近在开发者社区看到不少关于miniMax平台部署AI工具链的讨论,特别是OpenClaw这个轻量级机器学习框架的热度持续攀升。作为一款专为边缘计算优化的框架,OpenClaw在资源受限设备上展现出的性能优势确…

2026/10/18 11:09:30 阅读更多 →
阿里云JVS Claw镜像:快速搭建开发环境的利器

阿里云JVS Claw镜像:快速搭建开发环境的利器

1. 项目概述:阿里云JVS Claw镜像解析最近在技术社区看到不少同行讨论阿里云新推出的JVS Claw镜像,这个命名挺有意思——把"澳龙"(Australian lobster)和"爪"(claw)组合在一起&#xff…

2026/10/16 4:49:37 阅读更多 →

最新新闻

Zynq裸机UART升级方案:无JTAG下的固件更新与BOOT.bin烧录

Zynq裸机UART升级方案:无JTAG下的固件更新与BOOT.bin烧录

简介:面向Zynq 7020开发板的裸机UART在线升级方案可运行源码,适合嵌入式开发者、FPGA工程师以及需要在Zynq平台实现固件远程升级的工程师参考。方案重点解决升级失败导致的板砖问题,完整覆盖Multiboot启动回退机制、升级标志位判定、CRC16数据…

2026/10/18 15:54:16 阅读更多 →
UDP组播通信实战:从原理到Python实现与避坑指南

UDP组播通信实战:从原理到Python实现与避坑指南

1. 从一个"发一份、收多份"的真实需求说起很多人第一次接触组播这个概念,是在做设备发现或者状态同步的时候。你手里有十几台设备,它们需要知道彼此的存在,或者某一台设备要同时给所有设备下发一条指令。最直觉的做法是维护一张IP列…

2026/10/18 15:54:16 阅读更多 →
Traefik v2.10+ 国内落地实战:HTTPS/QUIC/动态配置工程化指南

Traefik v2.10+ 国内落地实战:HTTPS/QUIC/动态配置工程化指南

简介:本资源是面向中国开发者的AI原生IDE——Trae CN的深度解析配套代码包,专为软件开发初学者、教育机构学员及中小企业技术团队设计,旨在帮助用户快速理解其架构逻辑、交互模式与工程集成方式。压缩包共3个文件(8KB)…

2026/10/18 15:54:16 阅读更多 →
QB64:现代Windows原生编译器,让QuickBASIC重获工程可用性

QB64:现代Windows原生编译器,让QuickBASIC重获工程可用性

简介:QB64是面向编程初学者、教育工作者及复古开发爱好者的现代化QuickBASIC实现,完美解决经典BASIC代码在现代系统中无法运行、缺乏图形音视频支持与跨平台能力等痛点。资源包共2000个文件,主体为C/C底层源码(如glew.c、freeglut…

2026/10/18 15:54:16 阅读更多 →
WPS连接Zotero:文献引用与参考文献自动生成全攻略

WPS连接Zotero:文献引用与参考文献自动生成全攻略

简介:这份资源面向需要在WPS中高效管理文献的学术写作者与论文作者,聚焦解决WPS与Zotero无法直接联动、引用插入繁琐的问题。包内共2个文件,以inscode与html为主要类型,分别承担配置脚本与说明页面的功能,压缩包整体约…

2026/10/18 15:54:16 阅读更多 →
AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南

AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南

AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南 2026年9月,开源AI视频生成模型已经形成完整梯队。本文横向对比5大可本地部署模型的核心参数、显存需求和实测速度,给出不同显卡的选型建议。文末附工作流模板和模型资源网盘链…

2026/10/18 15:53:16 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →