シミュレーターで撮影した動画を表示しようとしています。ヘッダー ファイルをインクルードして ROS に QT コードを実装しています。私のコードが実行されています。問題:: フレームを表示するために新しいウィンドウが開かれるたびに。cvWaitKey(10000) を保持しているため、新しいウィンドウは時間の遅れの後に表示されます。ただし、更新されたフレームは同じウィンドウ内にある必要があります。Plsはどうすればそれを行うことができますか?? 私のコードは次のとおりです。
void imageCallback( const sensor_msgs::ImageConstPtr& msg) //const sensor_msgs::ImageConstPtr&
{
imagePublisher.publish (cv_ptr->toImageMsg());
QImage temp(&(msg->data[0]), msg->width, msg->height, QImage::Format_RGB888);
QImage image;
image=temp;
// QT Layout with button and image
static QWidget *window = new QWidget;
static QLabel *imageLabel= new QLabel;
static QPushButton* quitButton= new QPushButton("Quit");
static QPushButton* exitButton= new QPushButton("Exit Image");
QVBoxLayout* layout= new QVBoxLayout;
imageLabel->setPixmap(QPixmap::fromImage(image));
layout->addWidget(imageLabel);
layout->addWidget(exitButton);
layout->addWidget(quitButton);
window->setLayout(layout);
QObject::connect(quitButton, SIGNAL(clicked()),window, SLOT(close())); // Adding Buttons
QObject::connect(exitButton, SIGNAL(clicked()),imageLabel, SLOT(close()));
window->show();
cvWaitKey(1);
}
int main(int argc, char **argv) {
ros::init(argc, argv, "imageSelectNode");
ros::NodeHandle n("~");
image_transport::ImageTransport it(n);
image_transport::Subscriber sub = it.subscribe("/camera/image_raw",1, imageCallback);
imagePublisher = it.advertise("imagePublisherTopic", 1); //Publish the image in 'imagePublisherTopic' node
QApplication a(argc, argv);
ros::spin();
return 0;
}