【发布时间】:2016-12-12 22:49:42
【问题描述】:
我的应用程序中有一个 qt 线程,它发出一个 Mat 类型的图像,以便其他线程可以使用它。通过使用 opencv 库的 VideoCapture 对象,图像来自相机。现在我打算做的是从 rostopic 中获取此图像,而不是直接从相机中获取。为了做到这一点,我必须在我的线程中创建一个 ros 节点,在这里我被卡住了。有没有人有集成ros node和qt的经验? 这是我的主题:
#include "../include/Ground_Station/camera.h"
#include <iostream>
using namespace std;
Camera::Camera()
{
}
void Camera::run()
{
VideoCapture cap;
cap.open(0);
while(1){
Mat image;
cap >> image;
cvtColor(image,image,CV_BGR2RGB);
emit ImgSignal(&image);
QThread::msleep(30);
}
}
和Camera.h:
#ifndef CAMERA_H
#define CAMERA_H
#include <QObject>
#include <QThread>
#include <QtCore>
#include <QtGui>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <ros/ros.h>
#include <opencv2/opencv.hpp>
using namespace cv;
class Camera: public QThread
{
Q_OBJECT
public:
Camera();
void run();
bool Stop = false;
signals:
void ImgSignal(Mat*);
private:
public slots:
};
#endif // THREAD_H
【问题讨论】: