¿Cómo puedo convertir un cv :: Mat a una escala de grises en OpenCv?

¿Cómo puedo convertir un cv :: Mat a una escala de grises?

Estoy intentando ejecutar la función drawKeyPoints desde opencv, sin embargo, he recibido un error de declaración archivada. Mi conjetura es que necesita recibir una imagen en escala de grises en lugar de una imagen en color en el 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>

}

Respuestas a la pregunta(2)

Su respuesta a la pregunta