问题标签 [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.
iphone - GPUImageMovieWriter 帧演示时间
我有一个GPUImageColorDodgeBlend
连接了两个输入的过滤器:
- A
GPUImageVideoCamera
从 iPhone 摄像机获取帧。 - A
GPUImageMovie
这是一个 (MP4) 视频文件,我想放在实时摄像机源上。
然后将GPUImageColorDodgeBlend
其连接到两个输出:
- A
GPUImageImageView
提供混合操作的实时预览。 - A
GPUImageMovieWriter
按下录制按钮后将电影写入存储。
现在,在视频开始录制之前,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
似乎如此随意?为什么它在每个之间交替 - 帧编号方案不应该在所有帧之间保持一致?frameTime
GPUImageVideoCamera
GPUImageMovie
我认为这个问题是由不增加
frameTime
的 s 引起的是否正确?...如果是这样,为什么100% 的时间在屏幕上
GPUImageView
接受和显示frameTime
s 就好了,但GPUImageMovieWriter
需要订购它们?...如果是这样,我如何确保
frameTime
进来的 s 是有效的?我尝试添加if (frameTime.value < previousFrameTime.value) return;
以跳过任何有效的编号较小的帧 - 大多数情况下。不幸的是,当我设置playsAtActualSpeed
它时,GPUImageMovie
这往往变得不那么有效,因为所有帧最终都会在某个点之后被跳过。
...或者这可能是一个错误,在这种情况下,我需要在 GitHub 上报告它——但我很想知道在frameTime
s 的工作方式中是否有一些我在这里忽略的东西。
iphone - Gpu 图像照片应用程序崩溃
我正在使用 GPU 图像开源框架来实现图像效果。问题是当我尝试在图像上定期应用过滤器时,应用程序会给我一个内存警告然后崩溃。
这是代码:
请帮助我摆脱这个问题。谢谢
ios - GPUImage 创建一个自定义过滤器来改变选定的颜色
使用令人惊叹的 GPU 图像框架,我正在尝试使用自定义片段着色器创建一个自定义过滤器,该着色器将一些颜色向量作为制服传递,详细说明每个片段用制服中的一种颜色替换选择的颜色。我使用 Quartz 做到了这一点,它可以工作,但是由于我正在使用这个框架在 OpenGL 世界中迈出第一步,所以我想尝试一下 GPU 处理。
我制作的片段着色器似乎工作正常,但输出有问题。我只发布了一个调试 porpoise 的示例
生成的图像有很多伪影。如果写入磁盘,它在屏幕上似乎是像素化的,并且创建得不好。这是一些屏幕。
第一张是起始图,第二张是过滤后的法师在iphone屏幕上的截图,第三张是写入磁盘的过滤后的图像。深入研究我记得纹素和像素不是一回事,所以可能我没有正确映射它们。我想要一个 1:1 的位置比率,但可能不会发生。
我怎样才能做到这一点?
谢谢,安德里亚
gpuimage - GPU Image - 组合来自两组不同案例的两个 GPUImageFilterGroups
我正在使用 Brad Larson 的 GPUImage 并基于 GoBackSpaces 的 DLCImagePickerController 为 iPhone 构建一个照片应用程序(到目前为止它帮助我学习了很多东西),但我坚持使用我希望应用程序具有的功能之一. 我有两组案例:
案例A:一组代表“胶卷”的盒子(Filter Cases) 案例B:一组代表“相机镜头”的盒子(Len Cases)
在每种情况下,我都有 GPUImageFilterGroups。我希望用户能够从案例 A 中选择一个过滤器,然后能够在同一个静态图片上应用案例 B 中的另一个过滤器。所以,简而言之,在用户从案例 A 中选择一个过滤器后,静态图片会根据选择的过滤器发生变化,然后我想在修改后的静态图片上应用案例 B 中的另一个过滤器。我尝试了几种不同的方法,但我没有运气。从案例 B 中选择过滤器后,StaticPicture 消失。我需要保留一些东西吗?任何帮助将不胜感激。这是我的代码:
提前感谢菜鸟对这个问题的任何解释或帮助。
iphone - 如何使用 iOS GPUImage 生成直方图?
在https://github.com/luisespinoza/LEColorPicker项目上工作,我正在尝试使用项目 GPUImage(https://github.com/BradLarson/GPUImage)从任意输入 UIImage 生成直方图 UIImage。
我正在使用的当前代码如下:
问题是 histogram.png 导致每个输入图像都只有一条黑线。
那么,如何使用 iOS GPUImage 生成直方图 UIImage 的正确代码?
ios - 处理视频文件时切换到后台时 GPUImage 崩溃
我GPUImage
在切换到后台时遇到了一些问题。
在我的应用程序中,我不使用GPUImage
类捕获视频。用户从卷中选择一个视频,然后我的应用程序应用 3 个 GPUImage 过滤器。当用户在视频处理过程中将应用程序发送到后台时,就会出现问题。
我知道当应用程序在后台时我无法访问 GPU,所以在我的applicationWillResignActive
: 我调用GPUImageMovie
andGPUImageMovieWriter endProcessing
方法。问题是,即使我调用了这个方法,我仍然有gpus_ReturnNotêrmittedKillClient
错误。
有想法该怎么解决这个吗?
提前致谢!
ios - 卷积 UIImage 与 GPUImage 框架
我正在尝试使用 GPUImage 框架的 GPUImage3x3ConvolutionFilter 但无法正常工作。
这是我的代码,我只得到一个白色的图像。
我也在尝试改变:
为了:
iphone - GPUImage 的 GPUImageOpacityFilter 未按预期运行,不会更改 Alpha 通道
我正在尝试Overlay Blend
使用相机提要的输出来制作库存图像,其中库存图像的不透明度小于 100%。我想我可以GPUImageOpacityFilter
在过滤器堆栈中放置一个,一切都会好起来的:
- GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
- GPUImagePicture -> GPUImageOpacityFilter (Opacity 0.1f) -> MY_GPUImageOverlayBlendFilter
- MY_GPUImageOverlayBlendFilter -> GPUImageView
但这导致的结果不是将 GPUImagePicture 的 0.1f alpha 版本混合到 GPUImageVideoCamera 中,而是导致 GPUImagePicture 的颜色/对比度变柔和并混合。所以我做了一些搜索,并根据一个建议尝试从 GPUImageOpacity 过滤器中获取 UIImageimageFromCurrentlyProcessedOutput
并将其发送到 BlendFilter:
- GPUImagePicture -> MY_GPUImageOpacityFilter (Opacity 0.1f)
- [MY_GPUImageOpacityFilter imageFromCurrentlyProcessedOutput] -> MY_alphaedImage
- GPUImagePicture (MY_alphaedImage) -> MY_GPUImageOverlayBlendFilter
- GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
- MY_GPUImageOverlayBlendFilter -> GPUImageView
这完全符合我的预期。那么,为什么我必须这样做,这不imageFromCurrentlyProcessedOutput
应该只是顺其自然吗?以下是上述两种场景的代码片段:
第一:
第二个:
ios - 我想用 GPUImage 制作两个以上的输入纹理过滤器。但我得到了黑色输出
我想制作一个像 GPUImage 的 GPUImageTwoInputFilter 这样的新过滤器。
这是我的代码。一个名为IFFourInputFilter的基类,很可能是GPUImageTwoInputFilter。
一个名为 IFamaroFilter 的类扩展了 IFFourInputFilter。
当我使用过滤器时,我得到了黑色输出。下面的代码: