GPUImageAlphaBlendFilter 来自 GPUImageStillCamera 源的实时处理

2024-04-19

我正在使用 GPUImage 库,我正在尝试实时混合两个图像,并将它们显示在GPUImageView。我正在尝试将普通相机输入与其过滤版本进行 alpha 混合。这是我想做的:

          ----------------->----v
--camera--|                     alpha blend ----> image view
          -----> color filter --^

我发现了一些关于使用混合过滤器的帖子,但它们似乎不是实时处理的方法。我找到了https://github.com/BradLarson/GPUImage/issues/319 https://github.com/BradLarson/GPUImage/issues/319, GPUImage:混合两个图像 https://stackoverflow.com/questions/11608332/gpuimage-blending-two-images, and https://github.com/BradLarson/GPUImage/issues/751 https://github.com/BradLarson/GPUImage/issues/751(但它们要么不用于实时处理(第一个和第二个),要么不起作用(第三个)。

我几乎尝试了所有方法,但我得到的只是 GPUImageView 中的白色图像。如果我不使用 alpha 混合滤镜,比如说,只使用伪彩色滤镜或类似的东西,它就可以完美地工作。这是我的代码:

blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 0.5;
[blendFilter prepareForImageCapture];
[blendFilter addTarget:imageView];

passThrough = [[GPUImageFilter alloc] init];
[passThrough prepareForImageCapture];
[passThrough addTarget:blendFilter];

selectedFilter = [[GPUImageFalseColorFilter alloc] init];
[selectedFilter prepareForImageCapture];
[selectedFilter addTarget:blendFilter];

stillCamera = [[GPUImageStillCamera alloc] init];
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

[stillCamera addTarget:passThrough];
[stillCamera addTarget:selectedFilter];
[stillCamera startCameraCapture];

我得到的只是一个白色的空白屏幕。如果我改变[selectedFilter addTarget:blendFilter]; to [selectedFilter addTarget:imageView];然后假彩色滤镜就会显示在图像上。

Alpha 混合滤镜似乎有问题。我在一些我需要打电话的帖子中读到过processImage关于输入,但据我了解,这些帖子都是非实时输入。如何让 GPUImageAlphaBlendFilter 实时工作?


好的,在通过互联网和项目问题列表进一步调查该问题之后(https://github.com/BradLarson/GPUImage/issues https://github.com/BradLarson/GPUImage/issues)并找到了解决方法。在将混合滤镜设置为目标时,我需要专门指定纹理索引。由于某种原因(可能是错误),添加目标混合过滤器两次不会在下一个索引处正确添加第二个纹理。因此,将纹理索引明确设置为 0 和 1 确实有效:

[passThrough addTarget:blendFilter atTextureLocation:0];
[selectedFilter addTarget:blendFilter atTextureLocation:1];

对于作为单一源目标的过滤器,addTarget:就足够了,例如[stillCamera addTarget:selectedFilter];.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPUImageAlphaBlendFilter 来自 GPUImageStillCamera 源的实时处理 的相关文章

随机推荐

  • 在 python 中,对于标量, math.acos() 比 numpy.arccos() 更快吗?

    我正在Python中进行一些科学计算 其中包含大量几何计算 并且我遇到了使用之间的显着差异numpy与标准相比math图书馆 gt gt gt x timeit Timer v np arccos a import numpy as np
  • 如何在 Python 中搜索文本文件中的特定单词

    我想在文本文件中查找与存储在名为 items 的现有列表中的单词相匹配的单词 该列表是在上一个函数中创建的 我也希望能够在下一个函数中使用该列表 但我不确定如何为此 我尝试使用类来实现这一点 但我无法做到正确 我无法弄清楚其余代码的问题是什
  • Django:在发布到模型之前我应该​​将感知日期时间实例转换为 UTC 吗?

    I have aware日期时间实例 其中tzinfo America Los Angeles 我想保存到模型中 我应该在保存之前将其转换为 UTC 吗 或者我可以按原样保存它 因为它知道自己的时区 我需要稍后将其转换为用户的时区吗acti
  • 阻止文本环绕在锚点内的图标下方

    我正在尝试创建一个由图标表示的链接 我正在使用字体很棒 questions tagged font awesome用于图标 和一些文本 如果文本换行到下一行 我希望它与文本对齐 而不是出现在图标下方 我尝试过在此找到的解决方案answer
  • 打破parallel.foreach?

    我怎样才能摆脱困境并行 for http msdn microsoft com en us library system threading tasks parallel for aspx loop 我有一个非常复杂的声明 如下所示 Par
  • 如何使用Git在不同平台上拥有不同的工作目录结构?

    在 Windows 上我们有root folder1 root folder2 root folder3 在Linux上我们有root folder1 folder2 root folder1 folder3 我强烈希望不要使用子模块或子树
  • 复选框的自定义图片?

    我想将复选框显示为切换按钮 但我无法使用 CCS 将自定义图片应用到它 仍然绘制复选框 如何完成这个任务呢 My CSS input type checkbox settingsbutton border style none backgr
  • Eloquent ORM(laravel 5) 是否负责 SQL 注入?

    我在网上找不到它 但是 Eloquent ORM 是否像 PDO 准备好的语句一样处理 SQL 注入 没有任何框架能够 处理 SQL 注入 You处理 SQL 注入 框架可以提供方便地执行此操作的方法 但您仍然必须一致地使用这些方法 例如
  • CUDA素数生成

    当数据大小增加超过 260k 时 我的 CUDA 程序停止工作 它不打印任何内容 有人能告诉我为什么会发生这种情况吗 这是我的第一个 CUDA 程序 如果我想要更大的素数 如何在 CUDA 上使用大于 long long int 的数据类型
  • 在 Hive 中获取空值 使用 REGEX 创建和加载查询

    我有一个日志文件 我需要在其中使用 REGEX 存储数据 我尝试了下面的查询 但加载了所有 NULL 值 我已经检查了 REGEXhttp www regexr com http www regexr com 它对我的 数据工作正常 CRE
  • 从 VideoView 录制视频

    目前在做直播项目 成功实现视频直播 现在我的下一个任务是录制 VideoView 中正在播放的视频 我进行了搜索 能够找到捕获视频 但使用表面 相机 但在 VideoView 中我没有任何表面 任何帮助表示赞赏 你可以看到this http
  • 支持多屏幕的应用程序骨架

    正如我们所知 Android 随各种设备一起提供 这些设备具有不同的功能 功能 分辨率和屏幕尺寸 因此在开发支持的应用程序时 多个 小和大 屏幕存在尺寸和布局障碍 这导致了不同的组合屏幕尺寸 分辨率和 DPI这给 Android 设备的设计
  • gem install pg 错误:无法理解 Yosemite w/ Ruby 2.1.5 上的 kern.osversion `14.0.0'

    我使用 RVM 安装 Ruby 2 1 5 并再次运行捆绑包 现在 pg gem 无法安装 我收到此错误 gem install pg v 0 17 1 with pg config Applications Postgres app Co
  • c# 如何在 select 语句中指定 not ?

    我在数据集上使用 select 方法来检索符合我的条件的结果 foreach DataRow dr in dsPone2 Tables tt pone Select strWhereCondition dsPone Tables tt po
  • Tensorflow 中的平衡准确度分数

    我正在为高度不平衡的分类问题实现 CNN 并且我想在张量流中实现自定义指标以使用 选择最佳模型 回调 具体来说 我想实现平衡的准确度分数 这是每个类别的召回率的平均值 请参阅 sklearn 实现here https scikit lear
  • 如何将一个word文档的内容复制到另一个word文档中?

    我有一个包含一些文本和图像的Word文档 我想使用C 将word文档的内容复制到另一个word文档中 Thanks 尝试下面的代码 这可能对你有帮助 using System using System Collections Generic
  • Android 与 gms play 服务的依赖问题

    我收到一个错误 因为我正在尝试使用来自 Google 的应用程序索引库 同时还导入一个库 该库使用旧版本的 android gms 库作为不同的组件 来自 Google Play 服务的转换库 错误指出 所有 com google andr
  • delta Lake - 在 pyspark 中插入 sql 失败,并显示 java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.expressions.Alias

    Dataproc 集群是使用映像创建的2 0 x带有 Delta io 包io delta delta core 2 12 0 7 0 Spark版本是3 1 1 Spark shell 启动于 pyspark conf spark sql
  • “无法转换为 IComparer”

    我为装箱的RegistryItem对象定义了以下IComparer public class BoxedRegistryItemComparer IComparer public int Compare object left object
  • GPUImageAlphaBlendFilter 来自 GPUImageStillCamera 源的实时处理

    我正在使用 GPUImage 库 我正在尝试实时混合两个图像 并将它们显示在GPUImageView 我正在尝试将普通相机输入与其过滤版本进行 alpha 混合 这是我想做的 gt v camera alpha blend gt image