2016-09-09 9 views
0

私はuchar *からmatオブジェクトを作成しようとしています。私は役に立つ変換を見つけることができませんでした。私のコードは以下の通りです。Opencv - 配列からMatを作成する

uchar* urgbImg; // this value is created another function 

Mat img_argb(HEIGHT, WIDTH, CV_8UC4, urgbImg); 
Mat img_rgb(HEIGHT, WIDTH, CV_8UC3); 
img_argb.convertTo(img_rgb, CV_8UC3); 


cv::imwrite("RGB.png", img_rgb); 

QImage img1(urgbImg, WIDTH, HEIGHT, QImage::Format_ARGB32); 
QImage img2 = img1.convertToFormat(QImage::Format_RGB32); 

QFile file2(QString::fromStdString("QRGB.png")); 
file2.open(QIODevice::WriteOnly); 
img2.save(&file2,"PNG",100); 
file2.close(); 

QRGBファイルは良好な結果ですが、RGBファイルではありません。私はuchar配列を持っているので、それは8ビットです。

私はCV_8UC3(CV_8UC4からの変換なし)、CV_32SC3およびCV_32SC4を試しました。すべての結果は悪いです。 uchar *からrgbイメージを作成する方法は?

+0

を使用する必要がありますCV_8UC3

にCV_8UC4の画像を変換しませんか?あなたは 'RGB.png'を添付できますか? – Berriel

答えて

0

convertTo()は、あなたが正確に問題は何cvtColor()機能

Mat img_argb(HEIGHT, WIDTH, CV_8UC4, urgbImg); 
Mat img_rgb; 
cvtColor(img_argb,img_rgb,COLOR_BGRA2BGR); 
関連する問題