0
ROSトピックのサブスクリプションを通じて配信される "rgb8"フォーマットのmsgがあります。 QImageを作成してqml Imageに画像を表示させるにはどうすればいいですか? 現在、次のコードスニペットを作成しています。ROS QImageの画像フォーマットの互換性
QImage *VideoPlayer::Mat2QImage(cv::Mat const& src)
{
QImage *imgPtr = new QImage((const uchar *) src.data,
src.cols, src.rows, src.step, QImage::Format_RGB888);
imgPtr->bits();
return imgPtr;
}
void VideoPlayer::imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
static int count = 0;
try
{
try {
Mat imgMat = cv_bridge::toCvShare(msg, "rgb8")->image;
delete imgProvider->currentShot;
imgProvider->currentShot = Mat2QImage(imgMat);
...
}
(* currentShot)は、qml側の 'source'プロパティからimageRequest(...)メソッドによって取り除かれます。
ありがとうございますが、私のqmlは、必要に応じてrequestImage()メソッドを呼び出しています。問題はqml Imageが送信されたイメージを表示していないことです(私は推測します)。だから、私はイメージのエンコーディング形式などについて無知だと思う。 qmlファイルで私はこのセクションを持っています: "Image {... source:" image:// images/"+ imageSN ...}" –
1. QImageをファイルに保存しようとしましたか? 2.デバッグメッセージにエラーメッセージはありますか? – diro
実際、私はちょうどそれをやった。それはpngファイルを正しく保存します。これは "imgProvider-> currentShot-> save(" delta.png ");"によって行われます。 - このコマンド。ここで、currentShotはQImageへのポインタです。 –