2014-10-08 3 views
0

포인트 클라우드를 시각화 할 때 잠시 PCL 라이브러리를 기다릴 수있는 방법이 있습니까? 일련의 점 구름을 가지고 있으며 PCLVisualizer에서 단일 점 구름을 업데이트하거나 루프에 새로운 점 구름을 제거하여 + 표시하여 "애니메이션"하고 싶습니다.C++의 포인트 클라우드 라이브러리 (PCL) 대기/지연/슬립 기능

저는 C++을 사용하고 CloudViewer example을 설정했습니다. 지금까지는 OpenCV로 크로스 컴파일하고 waitKey (밀리 초) 함수를 사용하여 어느정도 지연 될 수있었습니다. 우분투 14.04 LTS입니다. OpenCV의로 만든 예를 들어 작업 :

void viewerPsycho (pcl::visualization::PCLVisualizer& viewer) 
{ 
    static unsigned count = 0; 
    std::stringstream ss; 
    ss << "Once per viewer loop: " << count++; 
    viewer.removeShape ("text", 0); 
    viewer.addText (ss.str(), 200, 300, "text", 0); 

    // this will delay counter but shows nothing 
    waitKey(1000); 
    viewer.addPointCloud(point_cloud_ptr, "first"); 
    waitKey(1000); 
    viewer.removePointCloud("first"); 
} 

내 코드는 다음과 같습니다

#include <opencv2/opencv.hpp> 
using namespace cv; 

는 그러나 waitKey는 정말 그 기능에 카운터를 지연시키는 viewerPsycho 함수의 맨 끝에서 간단한 사용 내에서 작동 원래 예제보다 더 풍부하고 지연을 시도하지 않을 때 addPointCloud 메소드가 제대로 작동합니다. 아무 것도 표시되지 않기 때문에 removePointCloud 메소드가 작동합니다 (waitKey가 무시됩니까?).

작품 (전용 방송) :

viewer.addPointCloud(point_cloud_ptr, "first"); 

waitKey는이 같은 addPointCloud 및 removePointCloud과 같은 방법을 사용하는 경우 (함수의 끝에서)를 viewerOneOff 기능을 무시하는 것 (아무것도 표시되지 않습니다) 작동하지 않습니다

viewer.addPointCloud(point_cloud_ptr, "first"); 
waitKey(5000); 
viewer.removePointCloud("first"); 

내 CMakeLists.txt을 :

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 

project(opencv_pcl) 

find_package(PCL 1.2 REQUIRED) 
find_package(OpenCV REQUIRED) 

include_directories(${PCL_INCLUDE_DIRS}) 
include_directories(${OpenCV_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 

add_executable (opencv_pcl opencv_pcl.cpp)  
target_link_libraries (opencv_pcl ${PCL_LIBRARIES} ${OpenCV_LIBS}) 

어떤 도움을 주셔서 감사합니다.

답변

1

코드에 spin() 또는 spinOnce() 메서드가 있습니까?

viewer->spinOnce (100); 

이 렌더러를 업데이트하고 모든 상호 작용 (http://docs.pointclouds.org/trunk/classpcl_1_1visualization_1_1_p_c_l_visualizer.html#a896556f91ba6b45b12a9543a2b397193)를 처리합니다.

+0

네 말이 맞아,이게 내가 찾고 있던거야. 내가 CloudViewer 클래스를 사용하려고했지만 그것은 회전/지연 메서드를 가지고있는 것 같아 그래서 그것은 조금 이상한 행동을 waitKey. 하나는 실제 spin/spinOnce를위한 "큰"PCLVisualizer 클래스로 전환해야합니다. – Kozuch

관련 문제