HEVC为啥用Z扫描

扫描方式有两种:一种是光栅扫描(RasterScan)另一种的Z字形扫描(Z-Scan)。
光栅扫描(RasterScan)是指从左往右,由上往下,先扫描完一行,再移至下一行起始位置继续扫描,H.264使用的主要就是光栅扫描顺序。
Z字形扫描(Z-Scan)中Z是形象的表示方式,如图:
在这里插入图片描述
在HEVC中CU采用的是递归划分的方式,Z字形扫描顺序保证了对于不同分割都能按照相同的遍历顺序进行寻址,有利于程序中的递归实现。

在这里插入图片描述

【Retrospect】
仔细看光栅扫描,对LCU划分一次,也就是4个3232的CU,那么每个CU的所有Z地址是连续的,可以一次存储完成。同理,在此基础上迭代,再次划分后,4个1616的CU,也是每个CU的Z地址也是连续的。这样的话,也就是每次划分后一句话就在内存修改CU的模式信息。用光栅扫描的话,就需要很麻烦的分情况一行一行的写信息。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV本身不包含HEVC编解码器,但你可以使用OpenCV调用系统中已安装的HEVC编解码器来进行视频编解码。具体来说,你需要使用FFmpeg库和OpenCV的VideoCapture和VideoWriter类来实现HEVC编解码器的使用。 1. 安装FFmpeg库 在Linux系统中,可以使用以下命令来安装FFmpeg库: ``` sudo apt-get install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev ``` 在Windows系统中,可以从FFmpeg官网下载预编译版本并进行安装。 2. 使用VideoCapture和VideoWriter类 以下是使用HEVC编解码器进行视频编解码的示例代码: ```python import cv2 # 打开视频文件 cap = cv2.VideoCapture('input.mp4') # 获取视频宽度和高度 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 创建VideoWriter对象,设置编码器为HEVC fourcc = cv2.VideoWriter_fourcc(*'HEVC') out = cv2.VideoWriter('output.mp4', fourcc, 30.0, (width, height)) # 逐帧读取视频并写入输出文件 while cap.isOpened(): ret, frame = cap.read() if ret: out.write(frame) else: break # 释放资源 cap.release() out.release() ``` 在上述代码中,我们使用VideoCapture类打开输入视频文件,并使用VideoWriter类创建输出视频文件。通过设置fourcc参数为'HEVC',我们指定了使用HEVC编码器进行视频编码。在逐帧读取视频帧并写入输出文件的过程中,OpenCV会自动调用系统中安装的HEVC编解码器来进行编解码操作。 需要注意的是,不是所有的系统都支持HEVC编解码器,因此在使用之前需要进行确认。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值