Como posso converter um cv :: Mat para uma escala de cinza no OpenCv?

Como posso converter um cv :: Mat para uma escala de cinza?

Eu estou tentando executar drawKeyPoints func da opencv, no entanto eu tenho recebido um erro de Assertion Arquivado. Meu palpite é que ele precisa receber uma imagem em escala de cinza em vez de uma imagem colorida no parâmetro.

<code>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);
</code>

}

questionAnswers(2)

yourAnswerToTheQuestion