2017-07-04 67 views
0

私はOpenCVとQtの初心者です。私のプロジェクトでは複数の画像を組み合わせてQt Creatorに表示しています。ここで複数の画像を結合してQtで表示

#include <stdio.h> 
#include <iostream> 
#include <mutex> 
#include <opencv2/opencv.hpp> 
using namespace std; 
int main(int argc, char** argv) { 
string img_path = "/home/m/pictures/cat.jpg"; 
std::vector<cv::Mat> img_pool; 
for (int i=0;i<10;i++) 
{ 
    cv::Mat data = cv::imread(img_path,-1); 
    img_pool.push_back(data); 
} 
    cv::Mat data = cv::imread(img_path,-1); 
cv::namedWindow("image", CV_WINDOW_NORMAL); 
cv::imshow("image",data); 
cv::waitKey(0); 
cv::Mat data_dst = cv::Mat::zeros(500, 500, data.type()); 
cv::Mat data_resize; 


for(int i=0;i<10;i++) 
{ 
    for(int j=0;j<10;j++) 
    { 
     cv::resize(img_pool[3], data_resize, cv::Size(50,50)); 
     cv::Rect f_target(i*50,j*50,50,50); 
     data_resize.copyTo(data_dst(f_target)); 
    } 
} 
cv::namedWindow("image_n", CV_WINDOW_NORMAL); 
cv::imshow("image_n",data_dst); 
cv::waitKey(0); 
return 0; 
} 

は結果である:

my code result

私のコードは今一枚の画像を表示することができますが、私がやりたいことは異なる複数の画像を表示され、私は画像や画像をロードする必要があると思いますベクトルへのパスが、私は失敗したので、誰かが私を助けることができますか?

+0

あなたのコードにはQtは使用されていません。また、どのように複数の画像を表示したいですか?すぐにグリッドで? – ni1ight

答えて

0

コードにQtは使用されていません。 Qtでこのようなことをしたいなら、グリッドレイアウトやフローレイアウトを持つ単純なウィジェットを使うことができます。次に、QImageの配列内のパスからすべてのイメージをロードし、それを表示します。

FlowLayoutの例があります。あなたはQImageのはQPixmapのと使用に変換し、画像を表示するQLabelを使用することができます。

QImage yourImage("path"); 
QLabel image new QLabel(centralwidget); 
imagelabel->setGeometry(QRect(20, 10, 371, 311)); 
imagelabel->setPixmap(QPixmap(QPixmap::fromImage(yourImage)); 

あなたがQtを使用して新しいしている場合、あなたはFlowLayoutのととQML成分の配列を使用してQMLと簡単に統合することができます。 ImageViewer

+0

申し訳ありません、私はQtを使用していますが、このプロジェクトではOpenCVを使用して最初に異なる複数の画像を結合してから、それを表示するテキストラベルを作成した後に場所に書き込みます。 –

関連する問題