2.11.6 什么是纹理槽?
纹理槽是GPU中用于管理不同纹理资源的机制。在OpenGL或其他图形API中,一个纹理槽代表了一个可以被着色器程序使用的纹理的存储位置。由于GPU的限制,可用的纹理槽数量是有限的。
当在渲染过程中需要使用多个纹理时(例如,一个物体的漫反射贴图、法线贴图、高光贴图等),每个纹理都需要绑定到一个不同的纹理槽中,然后指定纹理槽来访问这些纹理。
在当前项目中,滤镜就是纹理,不同的滤镜会被绑定到不同的纹理槽中。
2.11.7 建立连接(source到target)?
重载后的这个函数会把图象源和一个滤镜连接起来,并且指定了源图像在滤镜处理过程中应该使用的纹理槽的位置。可以确保图像数据流向滤镜,以便图像处理或渲染。
2.12 landmarks生成之后,发生了什么?
1,生成之后,会调用之前注册的回调函数来处理这些landmarks数据。这些回调函数就是不同的滤镜了(纹理),不同的滤镜对象根据landmarks数据,对自己的纹理数据进行一个更新,然后将纹理数据映射到纹理槽中。
2,最终的target_view,会将以上四种滤镜的图像数据进行一个整合,然后也绑定在一个最终的纹理槽中。

image.png
3,最终进行一个渲染的工作:
image.png
4,再进行一个视图更新的工作:
image.png
完整的渲染逻辑就是这样的。
2.13 那如何标记关键点呢?

 目前的想法是在这个函数中做添加:

image.png

涉及到修改库代码,这个功能开发的时间就有点长了,可以先设计个保底的选项,那就是先用opencv把关键点结合之前的图像画一张图,保存为png格式,这样做应该会好办一些。
2.13.1 Opencv方案进行处理
接下来的目标是,将这个原始的landmarks进行引入:

image.png
关键点是111个:

image.png

然后再传回来,发现一点不对劲。不打印,这说明了有问题。
在这个函数中才会打印:

image.png
得找一个会调用的地方,然后只打印一次,就可以了。
在这个循环中进行一个调用就可以了。

image.png

最终输出来这个东西,我觉得这个人脸识别做的还是蛮好的。

image.png


柬之不是剪枝
1 声望0 粉丝