测试模型为HM16.5

在解决方案资源管理器里面找到项目TlibEncoder,会看到里面有个源文件TencCU.cpp

(1)打印到屏幕

(在TencCU.cpp的xCompressCU函数(237行)后面添加,即可提取每个CU的相关信息并将其打印到屏幕)

printf("\n---------------CTUAddress(Raster Scan): %d-----------------\n",pCtu->getCtuRsAddr());

printf("\n---------------CUstarts--------------\n");

int iCount =0;

TComSlice *constpcSlice = pCtu->getSlice();

constTComSPS   &sps=*(pcSlice->getSPS());

intiWidthInPart = sps.getMaxCUWidth() >> 2;

for (int i = 0; i < pCtu->getTotalNumPart();i++)

{

if ( (iCount & (iWidthInPart - 1)) == 0)

printf("\n");

printf("%d ",pCtu->getDepth(g_auiRasterToZscan[i]));

iCount++;

}

printf("\n---------------CUends--------------\n");

printf("\n---------------TUstarts--------------\n");

iCount = 0;

for (int i = 0; i < pCtu->getTotalNumPart();i++)

{

if ( (iCount & (iWidthInPart - 1)) == 0)

printf("\n");

printf("%d ",pCtu->getTransformIdx(g_auiRasterToZscan[i]) +pCtu->getDepth(g_auiRasterToZscan[i]));

iCount++;

}

printf("\n---------------TUends--------------\n");

(2) 将CU的划分方式提取出来并存储到txt文本

需要添加头文件include<stdlib.h>

然后定义一个文件指针 FILE *fp;

创建一个txt文件,例如命名为BasketballDrill_spilt_CU.txt,注意后面"w"是打开文件方式,将原有内容清空写入新数据,如果文件不存在则新建,类似的还有"r"只读打开(不能写入);"a"向文件中追加内容,原有内容不变,等等

所以要用“a”的形式,以免循环后数值被覆盖

fp = fopen ("BasketballDrill_spilt_CU.txt", "a");

然后将打印的printf注释掉,在(1)中相同的位置添加如下代码即可。

注:要等项目运行完再打开创建的txt文本。

// 添加 开始:CU和TU划分
  printf("\n---------------CTU Address(Raster Scan): %d-----------------\n", pCtu->getCtuRsAddr());  
  printf("\n---------------CU starts--------------\n");  
  FILE *fp;
  fp = fopen ("BasketballDrill_spilt_CU.txt", "a");

int iCount = 0;

TComSlice *const pcSlice = pCtu->getSlice();
  const TComSPS   &sps =*(pcSlice->getSPS());

int iWidthInPart = sps.getMaxCUWidth() >> 2;

for (int i = 0; i < pCtu->getTotalNumPart(); i++)  
  {  
 if ( (iCount & (iWidthInPart - 1)) == 0)  
 // printf("\n");  
 fprintf(fp,"\n");

// printf("%d ", pCtu->getDepth(g_auiRasterToZscan[i]));  
 iCount++;  
 fprintf(fp,"%d ",pCtu->getDepth(g_auiRasterToZscan[i]));
   }  
  
   printf("\n---------------CU ends--------------\n");  
   printf("\n---------------TU starts--------------\n");

iCount = 0;

for (int i = 0; i < pCtu->getTotalNumPart(); i++)  
   { 
 if ( (iCount & (iWidthInPart - 1)) == 0)  
 //printf("\n");

//printf("%d ", pCtu->getTransformIdx(g_auiRasterToZscan[i]) + pCtu->getDepth(g_auiRasterToZscan[i]));  
 iCount++;  
    }  
   // printf("\n---------------TU ends--------------\n");

// 添加 结束:CU和TU划分

HEVC里面CU与TU打印到屏幕及提取到txt文本相关推荐

  1. 每一步详细介绍—在HM中进行CU PU TU划分以及PU最佳预测模式选择

    CU PU TU划分以及PU最佳预测模式选择 在HM对CU进行划分(CU模式判别).PU模式选择(划分).以及PU预测模式划分的过程总算有点理解,现对整个过程进行详细介绍. HM进行块划分和模式选择主 ...

  2. linux执行python不打印_在Python中执行shell程序而不打印到屏幕

    有没有一种方法可以让我从Python执行一个shell程序,它将输出打印到屏幕上,然后将它的输出读入变量而不在屏幕上显示任何内容?在 这听起来有点令人困惑,所以也许我可以用一个例子来解释它.在 假设我 ...

  3. 22 Python IO、打印到屏幕、读取键盘输入、打开和关闭文件、文件定位、重命名和删除文件、Python里的目录、文件,目录相关的方法

    22Python文件I/O 22.1打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: ...

  4. muduo网络库学习(九)日志类Logger和LogStream,将日志信息打印到屏幕

    每一个成熟的项目都有大大小小的日志系统,在关键的地方打印日志信息,常用来跟踪程序运行,查找错误原因等,可以节省大量的debug时间 muduo的日志信息有5个级别 TRACE,细粒度最高的日志信息,打 ...

  5. 编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上

    //编程将一个整数分解成一个质因数的连乘积,并打印在屏幕上 //***本题的难点是既要找出质因数,又要保证其连乘为该数 //***需要两个循环,外循环与内循环 /*每个合数 都可以写成几个 质数 相乘 ...

  6. 条码打印软件中如何实现条形码随文本数据变化而变化

    用条码打印软件制作产品标签有时候可能需要把制作的条形码和标签上某些文本数据关联,随着变化而变化,方便产品和产品之间的区分标记等等,这些功能在条码打印软件中用数据引用功能就可以实现,使条形码和文本数据之 ...

  7. python如何打印txt文件_关于文本:如何将所有打印导出到Python中的.txt文件?

    本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: Redirect stdout to a file in Python? 我终于完成了我项目的所有代码.现在,我需要所有 ...

  8. HEVC区域划分Slice Tile CTU CU PU TU

    Slice Slice是可以不依赖同一张图片其他Slice独立编码的数据结构,包括信号预测.残差信号重建和熵编码.一张图片可以分为一个活多个Slice.Slice包含一个或多个Slice segmen ...

  9. 浅谈HEVC中的CTU CU PU TU

    从今天开始会陆续写一些对HEVC的认识的文章,小弟初来乍到,希望大家能够多多指点. 这两天看了block partitioning structure in the HEVC standard这篇论文 ...

最新文章

  1. DCN-cs6200 ipv6 isatap 隧道
  2. CentOS 7.5 如何升级Git实录
  3. Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
  4. 认识AndEngine选自Android 2D游戏引擎AndEngine快速入门教程
  5. JAVA【long值与ip地址互转】 - ip的判别
  6. lable标签的妙用
  7. 举例什么时候会用到 call(), apply()
  8. Asia Yokohama Regional Contest 2018 G题 What Goes Up Must Come Down(树状数组求逆序对)
  9. OkHttp+Stetho+Chrome调试android网络部分(原创)
  10. 软件设计原则(五) 开闭原则
  11. Android实现蝴蝶动画,抖音蝴蝶特效怎么弄的?抖音最近很火的蝴蝶特效制作|安卓手机给视频添加蝴蝶特效...
  12. linux编译lilo,linux中LILO及GRUB配置实例
  13. 《阿丽塔:战斗天使》:人类与机器人真的有爱情吗?
  14. js 获取当前日期的前三个月
  15. 听说写面经能赞RP·······
  16. 函数定义涉及的三要素C语言,(函数定义与三要素答案.doc
  17. Hexo图片外链生成专用文章
  18. 解决Chrome 70版本以后谷歌不再信任赛门铁克证书问题
  19. 利用DISM修复WIN11的系统组件错误
  20. 图解十大经典机器学习算法入门

热门文章

  1. Linux樹目錄詳解
  2. 【毕业答辩】学位论文答辩ppt指南!
  3. java反编译工具_移动app安全测试 - 客户端 - 反编译保护
  4. 如何将footer标签固定在底部_如何让footer标签置于页面最底部
  5. 计算机辅助普通话水平测试指导,计算机辅助普通话水平测试指南38563
  6. 机器人卡纸形状图片大全图片_天水生态木天花吊顶图片大全
  7. linux关于子网掩码函数,Linux 子网掩码计算, 二进制十进制互相转换
  8. QT串口QSerialPort解决接收数据不完整问题
  9. 计算机word实训项目任务说明,计算机项目实训报告怎么写啊
  10. P2234 [HNOI2002]营业额统计