ネット上の画像をIplImageに変換
前教えてもらったやり方を記事にまとめておく。
C++/CLIで.NET Frameworkを使って画像をいったんBitmapに変換し、それから中身をIplImageに格納する。
IplImage* GetIplImage() { IplImage *img = 0; String^ url = URL; HttpWebRequest^ request; HttpWebResponse^ response; Stream^ receiveStream; Drawing::Bitmap^ bitmap; Drawing::Imaging::BitmapData^ bd; request = (HttpWebRequest^)(WebRequest::Create(url)); response = (HttpWebResponse^)(request->GetResponse()); receiveStream = response->GetResponseStream(); try{ bitmap = gcnew Drawing::Bitmap(receiveStream); img = cvCreateImage(cvSize(bitmap->Width, bitmap->Height), IPL_DEPTH_8U, 3); bd = bitmap->LockBits( Drawing::Rectangle(0, 0, bitmap->Width, bitmap->Height), Drawing::Imaging::ImageLockMode::ReadOnly, Drawing::Imaging::PixelFormat::Format24bppRgb ); } catch (Exception^ e){ // cout << "Exception Raised" << endl; Console::WriteLine(e->Message); } memcpy(img->imageData, bd->Scan0.ToPointer(), img->imageSize); bitmap->UnlockBits(bd); delete bitmap; response->Close(); receiveStream->Close(); return img; }