问题标签 [gpuimage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1229 浏览

iphone - GPUImageMovieWriter 帧演示时间

我有一个GPUImageColorDodgeBlend连接了两个输入的过滤器:

  1. AGPUImageVideoCamera从 iPhone 摄像机获取帧。
  2. AGPUImageMovie这是一个 (MP4) 视频文件,我想放在实时摄像机源上。

然后将GPUImageColorDodgeBlend其连接到两个输出:

  1. AGPUImageImageView提供混合操作的实时预览。
  2. AGPUImageMovieWriter按下录制按钮后将电影写入存储。

现在,在视频开始录制之前,100% 的时间一切正常。可以很好地GPUImageVideo混合在实时摄像机视频上,并且不会报告任何问题或警告。

但是,当GPUImageMovieWriter开始录制时,事情开始随机出错。大约 80-90% 的时间,GPUImageMovieWriter工作完美,没有错误或警告,输出视频正确写入。

然而,大约 10-20% 的时间(据我所知,这是相当随机的),在录制过程中似乎出现问题(尽管屏幕预览继续正常工作)。

具体来说,我开始收到数百个Program appending pixel buffer at time:错误。

此错误源自 中的- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex方法GPUImageWriter

此问题是由frameTime报告给此方法的值的问题触发的。

据我所知,问题是由于作者有时会收到由摄像机编号的帧(它们往往具有极高的时间值,例如64616612394291,时间刻度为1000000000)。但是,有时作者会得到编号GPUImageMovie为低得多的帧(例如200200的时间刻度为30000)。

GPUImageWriter只要帧值增加,这似乎很高兴,但是一旦帧值减少,它就会停止写入并发出Program appending pixel buffer at time:错误。

我似乎在做一些相当普遍的事情,而且这在任何地方都没有被报告为错误,所以我的问题是(对任何或所有这些问题的答案都值得赞赏——它们不一定都需要按顺序单独回答问题):

  • 值从何而来——为什么根据来源或来源编号frameTime似乎如此随意?为什么它在每个之间交替 - 帧编号方案不应该在所有帧之间保持一致?frameTimeGPUImageVideoCameraGPUImageMovie

  • 我认为这个问题是由不增加frameTime的 s 引起的是否正确?

  • ...如果是这样,为什么100% 的时间在屏幕上GPUImageView接受和显示frameTimes 就好了,但GPUImageMovieWriter需要订购它们?

  • ...如果是这样,我如何确保frameTime进来的 s 是有效的?我尝试添加if (frameTime.value < previousFrameTime.value) return;以跳过任何有效的编号较小的帧 - 大多数情况下。不幸的是,当我设置playsAtActualSpeed它时,GPUImageMovie这往往变得不那么有效,因为所有帧最终都会在某个点之后被跳过。

...或者这可能是一个错误,在这种情况下,我需要在 GitHub 上报告它——但我很想知道在frameTimes 的工作方式中是否有一些我在这里忽略的东西。

0 投票
1 回答
815 浏览

iphone - Gpu 图像照片应用程序崩溃

我正在使用 GPU 图像开源框架来实现图像效果。问题是当我尝试在图像上定期应用过滤器时,应用程序会给我一个内存警告然后崩溃。

这是代码:

请帮助我摆脱这个问题。谢谢

0 投票
1 回答
4078 浏览

ios - GPUImage 创建一个自定义过滤器来改变选定的颜色


使用令人惊叹的 GPU 图像框架,我正在尝试使用自定义片段着色器创建一个自定义过滤器,该着色器将一些颜色向量作为制服传递,详细说明每个片段用制服中的一种颜色替换选择的颜色。我使用 Quartz 做到了这一点,它可以工作,但是由于我正在使用这个框架在 OpenGL 世界中迈出第一步,所以我想尝试一下 GPU 处理。
我制作的片段着色器似乎工作正常,但输出有问题。我只发布了一个调试 porpoise 的示例

生成的图像有很多伪影。如果写入磁盘,它在屏幕上似乎是像素化的,并且创建得不好。这是一些屏幕。
开始图像 从屏幕过滤的图像 从磁盘过滤的图像

第一张是起始图,第二张是过滤后的法师在iphone屏幕上的截图,第三张是写入磁盘的过滤后的图像。深入研究我记得纹素和像素不是一回事,所以可能我没有正确映射它们。我想要一个 1:1 的位置比率,但可能不会发生。
我怎样才能做到这一点?
谢谢,安德里亚

0 投票
1 回答
2208 浏览

gpuimage - GPU Image - 组合来自两组不同案例的两个 GPUImageFilterGroups

我正在使用 Brad Larson 的 GPUImage 并基于 GoBackSpaces 的 DLCImagePickerController 为 iPhone 构建一个照片应用程序(到目前为止它帮助我学习了很多东西),但我坚持使用我希望应用程序具有的功能之一. 我有两组案例:

案例A:一组代表“胶卷”的盒子(Filter Cases) 案例B:一组代表“相机镜头”的盒子(Len Cases)

在每种情况下,我都有 GPUImageFilterGroups。我希望用户能够从案例 A 中选择一个过滤器,然后能够在同一个静态图片上应用案例 B 中的另一个过滤器。所以,简而言之,在用户从案例 A 中选择一个过滤器后,静态图片会根据选择的过滤器发生变化,然后我想在修改后的静态图片上应用案例 B 中的另一个过滤器。我尝试了几种不同的方法,但我没有运气。从案例 B 中选择过滤器后,StaticPicture 消失。我需要保留一些东西吗?任何帮助将不胜感激。这是我的代码:

提前感谢菜鸟对这个问题的任何解释或帮助。

0 投票
1 回答
3186 浏览

iphone - 如何使用 iOS GPUImage 生成直方图?

https://github.com/luisespinoza/LEColorPicker项目上工作,我正在尝试使用项目 GPUImage(https://github.com/BradLarson/GPUImage)从任意输入 UIImage 生成直方图 UIImage。

我正在使用的当前代码如下:

问题是 histogram.png 导致每个输入图像都只有一条黑线。

那么,如何使用 iOS GPUImage 生成直方图 UIImage 的正确代码?

0 投票
0 回答
661 浏览

ios - 处理视频文件时切换到后台时 GPUImage 崩溃

GPUImage在切换到后台时遇到了一些问题。

在我的应用程序中,我不使用GPUImage类捕获视频。用户从卷中选择一个视频,然后我的应用程序应用 3 个 GPUImage 过滤器。当用户在视频处理过程中将应用程序发送到后台时,就会出现问题。

我知道当应用程序在后台时我无法访问 GPU,所以在我的applicationWillResignActive: 我调用GPUImageMovieandGPUImageMovieWriter endProcessing方法。问题是,即使我调用了这个方法,我仍然有gpus_ReturnNotêrmittedKillClient错误。

有想法该怎么解决这个吗?

提前致谢!

0 投票
1 回答
851 浏览

ios - 卷积 UIImage 与 GPUImage 框架

我正在尝试使用 GPUImage 框架的 GPUImage3x3ConvolutionFilter 但无法正常工作。

这是我的代码,我只得到一个白色的图像。

我也在尝试改变:

为了:

0 投票
0 回答
1619 浏览

iphone - GPUImage 的 GPUImageOpacityFilter 未按预期运行,不会更改 Alpha 通道

我正在尝试Overlay Blend使用相机提要的输出来制作库存图像,其中库存图像的不透明度小于 100%。我想我可以GPUImageOpacityFilter在过滤器堆栈中放置一个,一切都会好起来的:

  1. GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
  2. GPUImagePicture -> GPUImageOpacityFilter (Opacity 0.1f) -> MY_GPUImageOverlayBlendFilter
  3. MY_GPUImageOverlayBlendFilter -> GPUImageView

但这导致的结果不是将 GPUImagePicture 的 0.1f alpha 版本混合到 GPUImageVideoCamera 中,而是导致 GPUImagePicture 的颜色/对比度变柔和并混合。所以我做了一些搜索,并根据一个建议尝试从 GPUImageOpacity 过滤器中获取 UIImageimageFromCurrentlyProcessedOutput并将其发送到 BlendFilter:

  1. GPUImagePicture -> MY_GPUImageOpacityFilter (Opacity 0.1f)
  2. [MY_GPUImageOpacityFilter imageFromCurrentlyProcessedOutput] -> MY_alphaedImage
  3. GPUImagePicture (MY_alphaedImage) -> MY_GPUImageOverlayBlendFilter
  4. GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
  5. MY_GPUImageOverlayBlendFilter -> GPUImageView

这完全符合我的预期。那么,为什么我必须这样做,这不imageFromCurrentlyProcessedOutput应该只是顺其自然吗?以下是上述两种场景的代码片段:

第一:

第二个:

0 投票
0 回答
386 浏览

iphone - 紫外线滤镜效果模拟

我需要在我的 iOS 应用程序中模拟紫外线效果。

我尝试应用直方图过滤器 -> 饱和度 -> 灰度。但这没有用。任何人都可以建议我如何让这个工作。

我可以为此使用GPUImage吗?需要应用什么滤镜组合才能获得这种效果?

0 投票
3 回答
2957 浏览

ios - 我想用 GPUImage 制作两个以上的输入纹理过滤器。但我得到了黑色输出

我想制作一个像 GPUImage 的 GPUImageTwoInputFilter 这样的新过滤器。

这是我的代码。一个名为IFFourInputFilter的基类,很可能是GPUImageTwoInputFilter。

一个名为 IFamaroFilter 的类扩展了 IFFourInputFilter。

当我使用过滤器时,我得到了黑色输出。下面的代码: