次のような OpenCV の簡単な例を試してみたかったのです。
Mat greyMat;
cvtColor(image, greyMat, CV_BGR2GRAY);
filtered_image = [self UIImageFromCVMat:greyMat];
[color_filtered_view setImage:filtered_image];
ここで、image は別のマット (カメラから取得) であり、ボタンが押された場合に実行されます。
残念ながら、絶対に何も起こりません。画像ビューは空白のままです。
setNeedsLayout と setNeedsDisplay は役に立ちませんが、デバイスを回転させると (そしてレイアウトを強制的に他の向きに合わせると)、画像が突然表示されます。
どうしたの?
アップデート:
この問題が発生するのは、CvVideoCamera が別のビューにストリーミングされているためであり、Mat から UIImage への変換が原因ではないことがわかりました。問題は、これ (実行中の CvVideoCamera) が setImage をブロックする理由/方法です。