2013-08-13 4 views
0

, 나는 이미지의 완패에서 데이터를 읽을 수 없다 :이미지 데이터의 포인터를 사용하여 매트 데이터를 전달하는 방법 내 코드에서

float* srcImage;//pointer to image data 
    cv::Mat img_1(height, width, CV_32FC1, srcImage); 

그러나, 나는 다음과 같은 ORB 기능의 img_1을 사용하는 경우이 방법에 의해, 그것은

cv::ORB orb; 
vector<cv::KeyPoint> keyPoints_1; 
cv::Mat descriptors_1; 
orb(img_1, cv::Mat(), keyPoints_1, descriptors_1); 

어떻게 내가 싶어서 작동하지 않았다, 발견 포인터를 통해 매트에 데이터를 보냅니 까? imread() 함수와 포인터의 데이터 전달간에 차이가 있습니까? 또는 cv :: ORB 함수에 특별한 요청이 있습니까?

대단히 감사합니다. 저는 OpenCV에 익숙하지 않아 몇 주 동안 사용하기 시작했습니다.이 문제를 해결하기 만하면되고 코드의 나머지 부분은이 부분의 결과에 따라 달라집니다.

답변

1

orb는 CV_32FC1이 아닌 8 비트 회색 음영 이미지를 원합니다.

+0

고맙습니다. 나는 또 다른 특징 탐지 기능을 시도 할 것이다. – lucky

+0

다른 기능 감지기를 사용해 볼 필요가 없습니다 (이 기능은 "다른 기능 감지 기능"이라고 생각합니다). ORB는 잘 작동합니다. 이미지를 그레이 스케일로 변환하고 그것을 인수로 정규 표현식으로 전달하면됩니다. 원본 이미지를 변경하지 않으려는 경우 임시 이미지를 저장하지만 그레이 스케일로 저장하십시오. 컴퓨터 비전의 많은 알고리즘에서 색상 정보를 줄이면 나쁜 결과가 나오지 않을뿐만 아니라 성능이 향상됩니다 (특히 저장 공간이 현저한 경우). – rbaleksandar