HM学习心得3

测试结果的保存、批处理及数据处理

一.测试结果的单一保存

这些天跑了一些程序,发现按照原始状态的话,得到的结果没法保存。刚开始只是跑着玩玩,认为只要把结果截图下来,然后进行处理。后来发现,这样的做法对测试一两个序列还是可以接受的,但当自已在测试多个序列时,工作量实在太大了,浪费了好多时间。于是,就想怎样使测试结果自已保存起来?网上搜了一下,发现了一个函数“freopen”,可以简单的实现测试结果的保存。即,将测试输出直接转化为TXT,保存在工程目录下(与生成解决方案同一路径)。语句具体使用如下:将freopen("filemane.txt","w",stdout)。将这条语句放在主函数(encmain.cpp)所有打印输出的语句之前(如图1所示),就能实现测试结果的TXT保存。

HM学习心得3_第1张图片

图1

二.批处理

但后来又发现了一个问题,不仅要测试多个序列而且同一个序列的不同QP(量化参数)也要进行测试,每测试完一个序列的一个QP,就要更改命令参数、QP等设置,非常麻烦。于是,在高人的指导下,了解到了——批处理,就能轻松解决这个问题。具体操作如下:

首先在工程目录下(与生成解决方案同一路径)创建一个TXT文本,在里面输入编码器的可执行文件名,两个配置文件名及保存的文件名,格式如图2所示。图2所示是在QP为37、32、27、22下,执行BasketballDrill这个测试序列,并将其分别保存为BasketballDrill_q37等。

HM学习心得3_第2张图片

图2

将所有要测试的序列及改变QP后的配置文件同行输入 ,然后保存。

再将该TXT文件的后缀名改为.bat。最后,要将序列的配置文件与不同QP的配置文件同时复制到工程目录下(与生成解决方案同一路径)。如图3所示。图3中encoder_intra_main_qp22.cfg\

encoder_intra_main_qp27.cfg\encoder_intra_main_qp32.cfg\encoder_intra_main_qp37.cfg,这四个文件为不同QP下的配置文件。

HM学习心得3_第3张图片

图3

在编码器的“属性”->“调试”->"命令参数"一栏中,只要输入.bat文件的第一行的配置文件即可。如图4所示:

HM学习心得3_第4张图片

图4

测试的时候双击该.bat文件即可。

如果要修改该.bat文件,右击选择“编辑”即可。

有一点要注意的是,当程序改动一次,编码器的可执行文件要重新生成一次。

三.数据处理

当大量的序列测试结束后,数据的处理也是一件很费时间的活。幸好在一H265交流群上下到了一个好东西,小软件的名字叫“HMResultHelper.exe”。只要把测试结果的TXT文件放到与该软件同一文件夹下(图5所示),然后双击该软件(或许称为一个可执行文件更好),就能得到一个“HMResults.txt”的文件。该文件包含所有TXT的名称,BR(码率)、PSNR-Y、PSNR-U、PSNR-V、ET(编码时间)总结输入在另一个TXT文件中(图6所示)。现在,只要把所有的同类数据对齐,导入到excel中,就能很快的对数据进行处理了。

HM学习心得3_第5张图片

图5

 

 

HM学习心得3_第6张图片

图6

图6中,每一行的数据为:第一个为文件名(如BasketballDrill_qp22.txt),第二个为码率,第三个为PSNR-Y,第四个为PSNR-U,第五个为PSNR-V,第六个为编码时间。

 

你可能感兴趣的:(HEVC)