gpt4 book ai didi

c++ - 如何在 OpenCv 中将 cv::Mat 转换为灰度?

转载 作者:IT老高 更新时间:2023-10-28 12:33:09 28 4
gpt4 key购买 nike

如何将 cv::Mat 转换为灰度?

我正在尝试从 opencv 运行 drawKeyPoints func,但是我收到了 Assertion Filed 错误。我的猜测是它需要在参数中接收灰度图像而不是彩色图像。

void SurfDetector(cv::Mat img){
vector<cv::KeyPoint> keypoints;
cv::Mat featureImage;

cv::drawKeypoints(img, keypoints, featureImage, cv::Scalar(255,255,255) ,cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS);

cv::namedWindow("Picture");
cv::imshow("Picture", featureImage);

}

最佳答案

使用C++ API,函数名略有变化,现在写成:

#include <opencv2/imgproc/imgproc.hpp>

cv::Mat greyMat, colorMat;
cv::cvtColor(colorMat, greyMat, CV_BGR2GRAY);

主要困难在于该函数在 imgproc 模块中(不在核心中),并且默认情况下 cv::Mat 是蓝绿红(BGR)顺序而不是更多常见的 RGB。

OpenCV 3

从 OpenCV 3.0 开始,还有另一个约定。转换代码嵌入在命名空间 cv:: 中,并以 COLOR 为前缀。所以,例子就变成了:

#include <opencv2/imgproc/imgproc.hpp>

cv::Mat greyMat, colorMat;
cv::cvtColor(colorMat, greyMat, cv::COLOR_BGR2GRAY);

据我所见,包含的文件路径没有改变(这不是错字)。

关于c++ - 如何在 OpenCv 中将 cv::Mat 转换为灰度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com