Подтвердить что ты не робот

Как преобразовать cv:: Mat в серию в OpenCv?

Как я могу преобразовать cv:: Mat в серовую шкалу?

Я пытаюсь запустить drawKeyPoints func из opencv, однако я получаю сообщение, подтверждающее утверждение. Я предполагаю, что ему нужно получить изображение с серой шкалой, а не цветное изображение в параметре.

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

}

4b9b3361

Ответ 1

Используя API С++, имя функции немного изменилось и теперь оно записывается:

#include <opencv2/imgproc/imgproc.hpp>

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

Основные трудности заключаются в том, что функция находится в модуле imgproc (не в ядре), и по умолчанию cv:: Mat находятся в списке Blue Green Red (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);

Насколько я видел, включенный путь к файлу не изменился (это не опечатка).