openCV面试
时间: 2025-04-29 21:38:15 浏览: 31
### OpenCV 面试常见问题及解答
#### 图像滤波的概念及其分类
滤波可以被理解为一个包含加权系数的窗口操作,在图像处理过程中,通过将此窗口放置于图像之上实现特定效果。滤波的主要作用在于去除图像中的噪声[^2]。
- **低通滤波器**:用于消除图像中的高频成分,从而达到模糊化的效果。
- **高通滤波器**:旨在移除图像内的低频部分,进而使图像更加锐利。
- **线性滤波器**:包括但不限于方框滤波、均值滤波以及高斯滤波等技术。
- **非线性滤波**:涵盖了中值滤波和双边滤波等多种方式。
这些不同类型的滤波器适用于各种场景下的图像预处理工作,能够有效改善图像质量或突出某些特性以便后续分析。
#### SIFT/SURF 特征提取方法如何保持尺度不变性?
SIFT 和 SURF 的核心理念是在多尺度空间内寻找稳定的关键点(即特征点),并通过构建描述子来表征这些关键点周围的局部结构。具体来说:
- 对于每一个可能的位置和大小组合,都会检测是否存在显著响应;
- 计算每个选定位置处梯度方向直方图作为其描述符的一部分;
- 这种基于多分辨率金字塔的方法确保了即使目标物体发生缩放变换也依然能识别出来相同的特征点集;
因此,无论对象尺寸如何改变,只要形态相似就能匹配成功,这就是所谓的“尺度不变”。
#### cv2.add() 与 cv2.addWeighted()
两者都是用来执行两个数组间按元素相加的操作函数,但是它们之间存在差异:
`cv2.add()` 函数简单地实现了两幅图片像素级别的求和运算,不考虑权重比例关系。
```python
import numpy as np
import cv2
img1 = np.ones((5,5),dtype=np.uint8)*100
img2 = np.ones((5,5),dtype=np.uint8)*50
res_add = cv2.add(img1,img2)
print(res_add)
```
相比之下 `cv2.addWeighted(src1,alpha,src2,beta,gamma)` 则允许指定源图像之间的相对贡献因子 alpha 和 beta ,同时还可加入偏置项 gamma 。这使得后者更适合应用于图像混合任务当中。
```python
alpha = 0.7
beta = 0.3
gamma = 0
res_weighted = cv2.addWeighted(img1,alpha,img2,beta,gamma)
print(res_weighted)
```
这种灵活性让开发者可以根据实际需求调整最终合成结果的比例分布情况。
阅读全文
相关推荐

















