2012-04-27 4 views
25

어떻게하면 cv :: Mat를 회색조로 변환 할 수 있습니까?OpenCv에서 cv :: Mat를 회색조로 변환하려면 어떻게해야합니까?

OpenCv에서 drawKeyPoints func를 실행하려고하는데 어설 션 파일 오류가 발생했습니다. 내 생각 엔 매개 변수의 컬러 이미지보다는 회색조 이미지를 받아야한다는 것입니다.

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

}

답변

50

는 C++ API를 사용하여 함수 이름이 약간 변경하고 지금 기록 :

#include <opencv2/imgproc/imgproc.hpp> 

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

주요 어려움 (함수가 imgproc 모듈에 있음 있습니다), 그리고 기본적으로 cv :: Mat는보다 일반적인 RGB 대신 Blue Green Red (BGR) 순서로되어 있습니다.

OpenCV의 3

에서 OpenCV 3.0을 시작으로는, 또 다른 규칙이있다. 변환 코드는 cv:: 네임 스페이스에 포함되며 접두사는 COLOR입니다. 그래서, 예는 다음이된다 :

#include <opencv2/imgproc/imgproc.hpp> 

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

는 지금까지 내가 본대로, 포함 된 파일 경로가 변경되지 않은 (이것은 오타 아니다).

+1

OpenCV 3에서 변환 유형 상수가 COLOR_BGR2GRAY –

+0

으로 변경되었습니다. 감사합니다. 답변을 업데이트하겠습니다. OpenCV 3이 곧 출시 될 것이므로 유용 할 것입니다. – sansuiso

관련 문제