gpt4 book ai didi

ios - GPUImage 直方图和丢帧

转载 作者:行者123 更新时间:2023-11-29 01:58:40 27 4
gpt4 key购买 nike

我有:

主 GPUImage 预览窗口GPUImage 直方图位于单独的 GPUImageView 上。

//Adding main preview
self.previewView = [[GPUImageView alloc] init];
self.previewView.backgroundColor = [UIColor blackColor];
self.previewView.frame = CGRectMake(0, 0, 414, 552);

[self.view addSubview:self.previewView];
[self.stillCamera addTarget:self.previewView];

//Adding Histogram
self.histogramContainerView = [[GPUImageView alloc] init];
self.previewView.frame = CGRectMake(0, 0, 414, 200);
self.previewView.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.histogramContainerView];

self.histFilter = [[GPUImageHistogramFilter alloc] initWithHistogramType:4];
sellf.histGenerator = [[GPUImageHistogramGenerator alloc] init];
[self.histGenerator forceProcessingAtSize:histogramContainerView.sizeInPixels];
[self.stillCamera addTarget:self.histFilter];
[self.histFilter addTarget:self.histGenerator];
[self.histGenerator addTarget:self.histogramContainerView];

上面显示了主预览窗口内小容器中的直方图。直方图看起来不错。

问题:直方图出现后,主预览窗口开始大量丢帧。这是在 iP6+ 上进行的。当我在这里询问如何将多线程 (GCD) 与 GPUImage 结合使用时,他们建议我不要这样做。

如何解决掉帧问题?有没有办法安全地将直方图任务分派(dispatch)到不同的线程?

最佳答案

GPUImageHistogramFilter 使用 GPU 上的分散/聚集操作进行操作。所有 GPU 绑定(bind)的处理操作已经在后台线程上运行,并且需要协调它们的事件,因此在线程方面没有任何可以改进的地方。

直方图运算的速度取决于它必须处理多少点。 downsamplingFactor 属性导致只处理图像的一部分。默认情况下,这是图像的 1/16,但即使这样也可能被大图像重载。

您可以在直方图之前使用虚拟过滤器,并在其上设置 -forceProcessingAtSize: 以重新缩放进入直方图的图像。这可以显着减少直方图过滤器等过滤器的处理时间。

最后,我应该指出,如果您的 stillCamera 实例是 GPUImageStillCamera,您认为丢帧的可能实际上只是相机捕获预览的速度。从静态相机中抓取视频源作为预览不同于从摄像机实例中获取帧。静态相机预览往往以低于 15 FPS 的速度更新,因此您可能会误以为滤镜会减慢速度。

关于ios - GPUImage 直方图和丢帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30578457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com