小编lin*_*bot的帖子

使用 CMake 未定义对“shm_open”的引用

我在 Ubuntu 14.04 下使用 CMake 来配置我的项目。我需要使用第三方库(比如 stuff.so)。在 CMakeLists.txt 中,我使用 TARGET_LINK_LIBRARIES 链接内容库。但是,我收到一个错误:

DIR_TO_LIB/stuff.so:-1: 错误: 未定义对 `shm_open' 的引用

我尝试将这些标志放入 CMakeLists.txt 但它不起作用:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lrt")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lrt")
Run Code Online (Sandbox Code Playgroud)

一篇文章(链接)说 -lrt 应该作为 g++ 的最后一个参数。在我使用 CMake 的情况下,我该怎么做?

更新:我添加了

SET (CMAKE_VERBOSE_MAKEFILE 1)
Run Code Online (Sandbox Code Playgroud)

我发现 -lrt 不是最后一个(即使我把它放在目标链接的末尾)。请参阅此链接以获取编译输出。

从编译输出中可以看到,opencv 有一些链接标志。我不明白为什么会发生这种情况,因为我首先在 TARGET_LINK_LIBRARIES 中链接 OpenCV 库。CMake 如何处理这些链接顺序?

另请参阅我的CMakeLists.txt

谢谢。

c++ g++ cmake librt

6
推荐指数
1
解决办法
7398
查看次数

SolvePnP - 平面物体的姿态估计 - 模糊情形

我有一个类似于的非对称圆点图案.我使用opencv solvePnP函数来估计基于a)已知3D模式点的模式的姿势; b)在2D图像中检测到图案点

我发现在某些情况下(当图案正面朝向相机并倾斜一点时),该solvePnP功能返回的估计姿势是不稳定的.几乎相同的模式姿势有两个结果(没有移动).我想这是由于模糊的平面姿势具有相同的2D投影.

除了这里建议的时间过滤之外,有没有解决方案: 类似的问题

更新:我试图应用这篇解决模糊案例的论文,但它没有用.我使用的代码来自这里.我可以得到与cv::solvePNP使用算法几乎相同的结果,但不稳定的情况仍然存在.

3d opencv computer-vision

6
推荐指数
1
解决办法
3270
查看次数

VTK - 在renderWindow中更新vtkPolyData而不阻止交互

我使用VTK显示点云并在循环中更新它.第一次显示云时,窗口可以通过鼠标进行交互,如果我想更新云,我必须按'q',窗口将显示更新的云.但是,虽然云更新并在窗口中正确显示,但我失去了对窗口的控制(即不能使用鼠标移动或旋转窗口中的点云).

以下是重新创建问题的最小代码.我有一个Visualization类来处理它,它的初始化列表:

points(vtkSmartPointer<vtkPoints>::New())
, vertices(vtkSmartPointer<vtkCellArray>::New())
, pointsPolyData(vtkSmartPointer<vtkPolyData>::New())
, mapper(vtkSmartPointer<vtkPolyDataMapper>::New())
, actor(vtkSmartPointer<vtkActor>::New())
, renderer(vtkSmartPointer<vtkRenderer>::New())
, renderWindow(vtkSmartPointer<vtkRenderWindow>::New())
, renderWindowInteractor(vtkSmartPointer<vtkRenderWindowInteractor>::New())
Run Code Online (Sandbox Code Playgroud)

这是init函数:

void Visualization::init(const cv::Mat &point_cloud){
noPoints = point_cloud.cols * point_cloud.rows;

// Preallocate memory
points->SetNumberOfPoints(noPoints);

// Copy
int element_stripe = sizeof(float) * point_cloud.channels();
for (unsigned i = 0; i < noPoints; i++)
{

    float x = point_cloud.at<cv::Vec3f>(i)[0];
    float y = point_cloud.at<cv::Vec3f>(i)[1];
    float z = point_cloud.at<cv::Vec3f>(i)[2];

    vtkIdType pid[1] = {i};
    points->SetPoint(i, x, y, z);
    vertices->InsertNextCell(1, pid);
}

// Push …
Run Code Online (Sandbox Code Playgroud)

c++ vtk

3
推荐指数
1
解决办法
3714
查看次数

ROS-在代码中获取当前可用主题(不是命令)

我想在代码中获得当前可用的主题,以便可以相应地设置发布者和订阅者。我知道命令“ rostopic list”会显示此信息,但是我想在程序运行时获取信息。

有没有API可以做到这一点?

c++ ros

2
推荐指数
1
解决办法
3697
查看次数

标签 统计

c++ ×3

3d ×1

cmake ×1

computer-vision ×1

g++ ×1

librt ×1

opencv ×1

ros ×1

vtk ×1