Qt+OpenCVで画像を表示する2つの方法(コードデモ)

ガイド

    この記事では主にQt+OpenCVで画像を表示する2つの方法を紹介し、その効果をコードで示します。

背景紹介

    OpenCV 自体はいくつかの GUI メソッドを提供しますが、それらの使用には依然として制限があります。C++ を例に挙げると、ほとんどの人は、実際のアプリケーションで GUI プログラムを作成するために Qt または MFC を使用します。対照的に、Qt は MFC よりも使いやすく、豊富なインターフェイス スタイルを備えているため、ますます多くの C++ ビジュアル開発者や企業がビジュアル プロジェクトの GUI として Qt を使用する傾向があります。

    Qt で OpenCV イメージを表示するには 2 つの一般的に使用される方法があります。1 つは QLabel を使用して表示する方法、もう 1 つは QGraphicsView を使用して表示する方法です。

写真

写真

実装手順

    まず、表示する画像を準備し、OpenCV 環境を設定し (ここではスキップします)、新しい Qt Widgets アプリケーションを作成します。

[1] Label コントロールと Graphics View コントロールを追加し、Label テキスト コンテンツを削除し、枠線を追加します。

写真

[2] 2 つのプッシュ ボタン (それぞれ QLabel と Graphics View という名前) を追加し、レイアウトを簡単に設計します。

[3] ボタンに対応するスロット関数に移動し、コードを追加します。

//QLabel显示OpenCV图像void MainWindow::on_pushButton_clicked(){
   
       Mat srcImg = imread("1.jpg");    if(srcImg.empty())    {
   
           QMessageBox::information(this,"警告","图片读取失败,请检查图片路径!");        return;    }    Mat imgShow;    cvtColor(srcImg, imgShow, COLOR_BGR2RGB); // 图像格式转换    QImage qImg = QImage((unsigned char*)(imgShow.data), imgShow.cols,                             imgShow.rows, imgShow.cols*imgShow.channels(), QImage::Format_RGB888);    ui->label->setPixmap(QPixmap::fromImage(qImg.scaled(ui->label->size(), Qt::KeepAspectRatio)));}

//Graphics View显示OpenCV图像void MainWindow::on_pushButton_2_clicked(){
   
       Mat srcImg = imread("2.jpg");    if(srcImg.empty())    {
   
           QMessageBox::information(this,"警告","图片读取失败,请检查图片路径!");        return;    }    Mat imgShow;    cvtColor(srcImg, imgShow, COLOR_BGR2RGB); // 图像格式转换    QImage qImg = QImage((unsigned char*)(imgShow.data), imgShow.cols,                             imgShow.rows, imgShow.cols*imgShow.channels(), QImage::Format_RGB888);
    QGraphicsScene *scene = new QGraphicsScene;//图像显示    ui->graphicsView->setScene(scene);    ui->graphicsView->show();    scene->addPixmap(QPixmap::fromImage(qImg));}

[4] 出力結果 (左側が QLabel、右側がグラフィックス ビュー):

写真

デフォルトでは、画像が完全に表示されていない場合、グラフィックス ビューは自動的にスライダーを生成します。

写真

要約する

    上記は、Qt+OpenCV で画像を表示する 2 つの方法を示しています。QLabel 方法は初心者や簡単なアプリケーションに適しており、グラフィックス ビューは高度な開発やプロジェクトでの使用に推奨されます。今後も役立つ記事を掲載していきますので、お楽しみに!

おすすめ

転載: blog.csdn.net/stq054188/article/details/132257183