作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试记录摄像机的镜头,并使用“image”命令在图形窗口中用 matlab 表示它。我面临的问题是图像重绘速度缓慢,这当然会影响我的整个脚本。这是一些快速的伪代码来解释我的程序:
figure
while(true)
Frame = AcquireImageFromCamera(); % Mex, returns current frame
image(I);
end
AcquireImageFromCamera() 是来自相机 API 的 mex。现在,无需显示获取的图像,脚本即可轻松抓取来自相机的所有帧(它以有限的帧速率记录)。但是,一旦我显示实时视频流的每个图像,它的速度就会大大减慢,因此帧会因为未捕获而丢失。
有谁知道如何分割获取图像和显示图像的过程,以便使用 CPU 的多个核心?并行计算是我首先想到的,但是并行工具箱的工作方式与我想要的完全不同......
编辑:我是一名学生,在我的教师的 matlab 版本中包含了所有工具箱:)
最佳答案
运行两个线程或工作线程会有点棘手。相反,您可以简单地减少更新屏幕的频率吗?像这样的事情:
figure
count = 0;
while(true)
Frame = AcquireImageFromCamera(); % Mex, returns current frame
count = count + 1;
if count == 5
count = 0;
image(I);
end
end
要尝试的另一件事是仅调用一次 image() 来设置绘图,然后直接更新像素。这应该比每帧调用 image() 快得多。您可以通过获取图像句柄并更改 CData 属性来完成此操作。
h = image(I); % first frame only
set(h, 'CData', newPixels); % other frames update pixels like this
请注意,像这样更新像素可能需要调用 drawnow在屏幕上显示更改。
关于Matlab:如何分配工作量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491284/
我是一名优秀的程序员,十分优秀!