Система зависает при запуске кода .cpp с использованием алгоритма SURF - PullRequest
0 голосов
/ 24 мая 2018

Я работаю над обработкой изображений с использованием openCV и c ++.Я написал код с использованием алгоритма SURF для определения ключевых точек на изображении и показа обнаруженных ключевых точек.Я могу собрать и запустить код без каких-либо ошибок.Но система зависает после запуска кода.

Я использую Ubuntu 16.04, ROS Kinetic и OpenCV 3.3.1, который был автоматически установлен вместе с ROS.

Я включил все необходимые заголовочные файлы для использованияАлгоритм SURF, а также использовал необходимые «пространства имен».Основной файл моего кода выглядит следующим образом:

using namespace cv;
using namespace std
using namespace cv::xfeatures2d;
int main(int argc,char **argv)
{
ros::init(argc,argv,"image_detection");
while(1)
{
Mat temp_image=imread("/home/pelican/Pictures/sign.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat temp_kp;

//initialize SURF
Ptr<SURF>detector=SURF::create(500,4,4,false,false);

//compute keypoints
vector<KeyPoint>kp;
detector->detect(temp_image,kp);

//display keypoints
drawKeypoints(temp_image,kp,temp_kp,Scalar(255,0,150),DrawMatchesFlags::DEFAULT);
cout<<"detected kp="<<kp.size()<<endl;

namedWindow("template_image",CV_WINDOW_NORMAL);
imshow("template_image",temp_image);
namedWindow("temp_kp",CV_WINDOW_NORMAL);
imshow("temp_kp",temp_kp);

ros::spinOnce();
if(waitKey(30)==27) //wait for esc key press for 30ms. If pressed,break loop
{
cout<<"esc key pressed"<<endl;
break;
}
}
return 0;
}

Я также отредактировал файлы CMakeLists.txt и Package.xml.После этого я выполнил следующие действия:

  1. roscore
  2. измените каталог на catkin_ws и отправьте его.
  3. catkin_make
  4. rosrun имя_пакета имя_узла

Когда код запускается, система зависает.Итак, я просто пытаюсь построить и запустить каждый шаг.Я узнал, что система работает нормально до vector<KeyPoint>kp;.Но система зависает, если я включаю шаг detector->detect(temp_image,kp);.Если я попытаюсь запустить весь код (приведенный выше код), через 5-6 минут он отобразит количество обнаруженных ключевых точек, а также окна 'template_image' и 'temp_kp' с изображением (sign.jpg), но не отображаетобнаруженные ключевые точки в 'temp_kp'.И, наконец, я вынужден перезапустить систему с помощью кнопки питания.

Как это исправить и в чем может быть причина?

Заранее спасибо.

...