接下来的任务
1,改一下交互界面(按键盘,在输出端有打印具体的大眼、小眼值);
2,看一下代码对于具体的图片输入要求是什么,梳理一下图片传入的逻辑,然后整理一个图片所要遵循的具体格式(或者问一下作者);然后再测试几张图片验证一下自己的这部分逻辑是什么。
3,人脸关键点检测这个程序是怎么做的,能不能把关键点用特殊线条标注一下。(这一点老师提供的思路是用opencv在这上面画出来);
4,然后多测试几张图片,看一下这个效果检测效果是怎么样的。

2.5 交互界面的修改
在修改美颜/美白等值之后加上printf之后就行了。
2.6 图片的输入要求是什么
image.png

这个语句对这个图片进行了一个读取:
其内部是这个样子的:

image.png

用我的照片传上去进行一个解析:

image.png

就会报这个错误。
最终测试的时候:这个分配内存的语句,是有大问题的。

image.png

后来分析,它是个多线程:

image.png

有的线程是可以到的,有的线程是到不了段错误的。这是OpenGL的问题。
之后发现:
将像素指改为2的倍数之后就好了。

原因查到了:
硬件或OpenGL驱动更优化或仅支持2的幂(power-of-two, POT)纹理。虽然现代OpenGL规范支持非2的幂(non-power-of-two, NPOT)纹理,但在某些情况下,旧的硬件或驱动可能对NPOT纹理的支持不是很好,可能导致性能问题或功能限制。

OpenGL版本或扩展支持:程序运行的环境可能不支持或不完全支持NPOT纹理。这可能取决于OpenGL的实现和版本,以及特定的硬件能力。一些较旧的系统或嵌入式系统可能只有有限的NPOT纹理支持,或者需要特定的扩展来使用NPOT纹理。

image.png

这一块渲染的时候,探测失败了,所以就会报错。
最终发现是:

image.png

人脸检测这儿出了问题。内部函数检测不到,下一步应该查看一下这个VNN函数需要什么条件才行呢。用内存泄露工具valgrind检测,信息太多,也没看出来哪儿错了。

把图片放入服务器中之后,发现所有段错误都消失了。我第一个必须是偶数的原因是因为我WSL下的OpenGL版本太老,而这个VNN识别失败,则应该是因为我的显卡(1050TI)过老了,带不起来,所以会报段错误。


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