2016-04-06 23 views
1

私はOpenCVが新しく、いくつかのURLから画像を読むための小さなPOCを行っています。
ビデオキャプチャを使用してURLから画像を読み込んでいます。コードは次のとおりです。OpenCV:アルファチャンネルのPNG画像

VideoCapture vc; 
vc.open("http://files.kurento.org/img/mario-wings.png"); 
if(vc.isOpened() && vc.grab()) 
{ 
     cv::Mat logo; 
     vc.retrieve(logo); 
     cv::namedWindow("t"); 
     imwrite("mario-wings-opened.png", logo); 
     cv::imshow("t", logo); 
     cv::waitKey(0); 
     vc.release(); 
} 

この画像はアルファチャンネルのために正しく開かれません。 アルファチャンネルを保存して画像を正しく取得する方法は何ですか?

何か助けていただければ幸いです。
-Thanks

の予想される出力

Expected output

実際の出力

Actual output

答えて

2

だけイメージをロードしている場合は、私が代わりにimreadを使用することをお勧めいたします、また、sを指定する必要がありますecondパラメーターimreadも、CV_LOAD_IMAGE_UNCHANGEDまたはcv::IMREAD_UNCHANGEDのバージョンに応じて(最悪の場合は-1も動作します)、アルファチャンネルをロードします。

私が知る限り、VideoCaptureクラスは画像/動画を4チャンネル目で読み込みません。ウェブURLを使用しているため、画像のロードはimreadでは機能しませんが、データをダウンロード(例:カール)してからimdecodeをデータバッファに使用してcv::Matを取得することができます。 OpenCVはイメージ処理のためのライブラリであり、イメージをダウンロードするためのライブラリではありません。

+0

新しい名前はIMREAD_UNCHANGEDです – Miki

+0

@Mikiどちらも新しいバージョンではどちらのバージョンが導入されたのかわからないので、両方とも残しておく方が良いと思います。 – api55

+0

確かに新しい名前です – Miki

関連する問題