opencv - 为什么转换为灰度opencv?

标签 opencv

我在 opencv 中做一些基本的人脸检测,我看到的每个示例代码都转换为灰度,然后在灰度上执行人脸检测...

一开始我以为是性能方面的原因,但是我做了一个对比,并没有发现明显的性能提升。

这段代码:

faceCascade.detectMultiScale(*image, *faces, 1.1, 3, CASCADE_SCALE_IMAGE, Size(60,60));

执行与此代码大致相同:

Mat gray;
cvtColor(*image, gray, COLOR_BGR2GRAY);
faceCascade.detectMultiScale(gray, *faces, 1.1, 3, CASCADE_SCALE_IMAGE, Size(60,60));

那么这就引出了一个问题,为什么大家都在opencv中转成灰度呢?

谢谢

最佳答案

每个人都转换为灰度,因为许多功能都需要灰度。来自 OpenCV documentation faceCascade.detectMultiScale() 还需要灰度:

CascadeClassifier::detectMultiScale(const Mat& image,...)

image – CV_8U 类型的矩阵,包含检测到对象的图像。

CV_8U 是 1 channel 图像,与 CV_8U3 相反,后者是 3 channel 图像。

编辑:如果您在传递给方法之前不将其转换为灰度图,OpenCV 会在后台为您完成。

关于opencv - 为什么转换为灰度opencv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42867928/

相关文章:

python - 如何在 Python OpenCV 中删除轮廓内部的轮廓?

python - 使用PIL或Opencv以实色显示用HSV编码的图像

c - OpenCV 和 C,cvPreprocessCategoricalResponses 中的错误参数(响应 #0 不是整数)

c++ - 在 opencv c++ 中查找图像卷积时出现段错误(核心转储)错误

opencv - 建议模板匹配算法

linux - 在 Linux 中为多个 Python 版本安装 OpenCV

android - 如何在 Chaquopy 中使用 OpenCV 等待键

opencv - 出现错误 - 'PngImageFile' 对象在使用 Socketio 将视频帧从客户端传输到 Flask 服务器时没有属性 'shape'

django - 如何在 Django 中使用 opencv?

python - 获取给定行的像素坐标