我想尝试一个简单的OpenCV示例,如下所示:
Mat greyMat;
cvtColor(image, greyMat, CV_BGR2GRAY);
filtered_image = [self UIImageFromCVMat:greyMat];
[color_filtered_view setImage:filtered_image];
如果图像只是另一个Mat(从相机获取),则按下按钮即可执行。
不幸的是,绝对没有任何反应。图像 View 保持空白。
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/