OpenCVのCvCaptureで取得したIplImage構造体のデータをwxImageに変換する方法を調べたけどあんまり見つからなかったから作ってみた。

とりあえず実行結果。ウインドウタイトルについては気にしないでください。
[cpp]
/**
 * OpenCV画像からwxImage形式に変換
 * @param[in] base 元画像
 * @return 変換後のwxImage
 */
wxImage *CvWxImageConvert(IplImage *base){
	wxImage *img = new wxImage();
	img->Create(base->width, base->height);
	unsigned char *pixels = img->GetData();
	//コピー
	for(int x = 0; x < base->width; x++){
		for(int y = 0; y < base->height; y++){
			int index = x * 3 + base->width * y * 3;
			pixels[index + 0] = base->imageData[index + 2];
			pixels[index + 1] = base->imageData[index + 1];
			pixels[index + 2] = base->imageData[index + 0];
		}
	}
	return img;
}
[/cpp]
変換コード。OpenCVとwxWidgetsでRGBの順番が違うのか、そのままコピーすると色がおかしくなるのでRGBを反転してコピー。
これを
[cpp]
	IplImage *frame = cvQueryFrame(camera);
	wxImage *image = CvWxImageConvert(frame);
	this->capture->SetBitmap(wxBitmap(*image));
	delete image;
[/cpp]
としてあげると、実行例のように画面のwxStaticBitmapコントロールに描写される。
ただ、これ書いてから気づいたけど、画面がすっごいちらつくので何とかしないといけないと思う…