ios - 从 Mat 创建 UIImage 后,OpenCV UIImageView setImage 不工作

标签 ios opencv

我想像这样尝试一个简单的 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/

相关文章:

c++ - 接近矩形的轮廓

python - 如何使用opencv拼接多张图像?

ios - 使用 Swift 4 在 iOS 中将多级 JSON 解码为结构

iOS - 这是枚举的任务吗?

ios - 字典数组还是带数组的字典?

ios - 如何从特定位置查找字符串中字符的索引

c - 使用 ffmpeg 或 OpenCV 处理 .Raw 图像

python - 使用 Python + OpenCV 的 "import cv"和 "import opencv.cv"之间的区别?

c++ - OpenCV,如何删除小像素并填充整个感兴趣区域

android - Facebook App 链接(深层链接)不适用于移动浏览器