ネット上の画像を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;
}