我想像这样尝试一个简单的 OpenCV 示例:
Mat greyMat;
cvtColor(image, greyMat, CV_BGR2GRAY);
filtered_image = [self UIImageFromCVMat:greyMat];
[color_filtered_view setImage:filtered_image];
其中图像只是另一个 Mat(从相机获得),如果按下按钮则执行。
不幸的是,绝对没有任何事情发生。 ImageView 保持空白。
setNeedsLayout 和 setNeedsDisplay 没有帮助,但如果我旋转我的设备(并强制布局适应其他方向)图像突然可见。
怎么了?
更新:
发现这个问题只是因为 CvVideoCamera 正在流式传输到另一个 View ,而不是因为 Mat 到 UIImage 的转换。问题是这个(正在运行的 CvVideoCamera)为什么/如何阻止 setImage?
最佳答案
今天我遇到了同样的问题,我相信这与从另一个线程调用 setImage 调用有关。这段代码对我有用:
dispatch_sync(dispatch_get_main_queue(), ^{
[color_filtered_view setImage:filtered_image];
});
祝你好运!
关于ios - 从 Mat 创建 UIImage 后,OpenCV UIImageView setImage 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575223/