- 博客(17)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
转载 android音视频开发
虽然奇数索引值是无效的,但是依然占用了存储空间,因此 U 和 V 分量长度是 Y 分量长度的 1/2,而不是 1/4。并不是一种具体的格式,而是一类 YUV 格式,包括 I420 还有旧版 Camera 支持的 NV21 和 YV12。描述中,在该颜色格式下,图像中的每个像素占用 12 bit(即 1.5 个字节),该颜色格式与。的数据,Y分量是连续存储的 pixelStride 一定等于1,对于U/V plane来说,代表相邻像素样本之间的距离,单位是字节,1表示是连续存储,2表示间隔存储。
2024-06-11 09:24:22
65
原创 鸿蒙TS逐帧读取H264文件
由于我要读取h264进行网络实时发送,因此编码的h264中不含B帧,只读取I帧和P帧,H264分为annexb格式和AVCC格式,一般annexb格式用于实时播放。H264码流是一个个连续的NALU,一个NALU包含 【NALU Header】【NALU Payload (RBSP)】 两部分。禁止位(1位)、重要性指示位(2位)、NALU类型(5位)。I帧:完整编码的帧叫I帧,一个I帧可以完整的编码出一幅图像。P帧:参考之前的I帧生成的只包含差异部分编码的帧叫P帧。B帧:参考前后的帧编码的帧叫B帧。
2024-04-30 17:13:42
517
原创 C++ STL prev()函数
1.直观理解new_iterator = prev(iterator,n)当“n“为正数时,返回传入迭代器“iterator”左边,距离”iterator“ n个单位的迭代器”new_iterator“。当“n“为负数时,返回传入迭代器“iterator”右边,距离”iterator“ n个单位的迭代器"new_iterator"。如果是随机访问迭代器,就只执行一次运算符操作 +=n( -=n ),否则,执行n次持续的递减或递增操作 ++(--)。2.prev()的函数原型temp
2020-12-11 15:40:19
5424
原创 C++ max_element(),min_element()
一:函数原型max_element() 求取区间中的最大值template<class ForwardIt>ForwardIt max_element(ForwardIt first, ForwardIt last);template<class ForwardIt, class Compare>ForwardIt max_element(ForwardIt first, ForwardIt last, Compare comp );min_element() 求取区间
2020-07-24 19:46:28
478
原创 c++ for(auto elem:range)
for(auto elem:range)语句是C++11更新带来的令很多C++程序员期待已久的for range循环int main() { vector<int> vec; vec.push_back(1); vec.push_back(2); vec.push_back(3); vec.push_back(4); for (auto elem : s) { cout << elem << endl; //输出容器的遍历 1
2020-07-11 22:46:25
969
原创 C++和python中的变量定义时的区别
C++和python中的变量定义时的区别这张图比较全面的显示了python和C变量定义时的区别:C/C++:变量对应内存中的一块区域,当修改这个值时,直接修改内存区域中的值。python:变量只是对一块存放指定值的内存区域的引用,赋值时是让该变量引用另一块存放新值的内存区域。因此在赋值时等号左边的变量类似于标签,等号右边的是值对应的地址。例如下python程序:t = [0] #定义一个只有0值的列表 a = t #将列表赋值给变量a print(id(t)) #id
2020-07-07 22:01:52
877
原创 数据结构与算法中的Master公式
Master公式是什么?Master公式用来较为简便地评估递归算法的时间复杂度公式:T(N)=a∗T(Nb)+O(Nd)T(N) = a*T(\frac{N}{b}) + O(N^d)T(N)=a∗T(bN)+O(Nd)当logba<dlog_{b}a < dlogba<d时,时间复杂度为O(Nd)O(N^d)O(Nd);当logba>dlog_{b}...
2020-04-17 10:49:32
1663
转载 pytorch 正确的测试时间的代码 torch.cuda.synchronize()
1start = time.time()result = model(input)end = time.time()2torch.cuda.synchronize()start = time.time()result = model(input)torch.cuda.synchronize()end = time.time()一共上述两种测试时间的方式,正确的方式是第二种,...
2020-02-25 21:10:40
2503
转载 COCO.JSON文件解析
COCO.JSON文件解析打开JSON文件查看数据特点主要有以下几个字段:infolicensesimagescategoriesannotations { "info": info, # dict "licenses": [license], # list ,内部是dict "images": [image], # list ,内部是dict "annotati...
2020-02-25 21:08:07
5721
2
转载 Python迭代器
一.迭代器迭代器指的是迭代取值的工具,迭代是指一个重复的过程,每一次重复都是基于上一次结果而来迭代提供了一种通用的不依赖索引的迭代取值方式一.可迭代对象但凡内置有__iter__方法的对象,都称为可迭代对象,可迭代的对象:字符,列表,元组,字典,set,文件对象。二.迭代器对象1)即内置有__next__方法的对象,执行该方法可以不依赖索引取值2)又内置有__iter__方法的对象,执...
2020-02-25 21:06:43
136
原创 C++浅拷贝和深拷贝的区别
深浅拷贝是面试面试经典问题首先考虑一种情况,对一个已经定义的对象进行拷贝,编译器会调用构造函数中的拷贝构造函数。浅拷贝: 如果用户没有定义自己的拷贝构造函数,则会调用默认的拷贝构造函数。默认拷贝构造函数中会对对象中的变量进行简单的赋值拷贝操作,就是一个等号赋值操作,这种操作就是浅拷贝。深拷贝: 而深拷贝就是在堆区重新申请一块空间,来进行拷贝赋值操作。在下面的程序中,我们先定义一个dog1对...
2019-11-22 11:47:22
469
原创 C++中class和struct的区别
在C++中struct和class没什么太大区别,都可以去表现一个类,唯一的区别就在于默认的访问权限不同区别:struct默认权限为公共class默认权限为私有class A{ int a; //默认权限是私有};struct B{ int b; //默认权限是公共};...
2019-11-13 21:21:37
132
原创 Python装饰器
python装饰器就是用来给原来的函数拓展功能的一种函数。比如你有一段函数import timedef demo(): time.sleep(2) print('hello world')假如你要给这段代码增加测试运行时间的功能,第一种方法,你可以这样写import timedef demo(): start = time.time() time.sleep(2)...
2019-11-13 17:04:41
130
原创 Python闭包
一,闭包1.函数嵌套顾名思义,函数嵌套就是在定义一个函数的同时,在函数的内部再定义一个函数,比如:def a(): print("这是a函数") def b(): print("这是b函数") return b()a()运行这段代码,程序输出:这是a函数这是b函数程序的执行顺序如下图,程序从上到下执行,首先到1定义函数a(),紧接着到2执行a函数,进入a函数之后顺序...
2019-11-13 15:36:58
231
原创 pytorch torch.expand和torch.repeat的区别
1.torch.expand 函数返回张量在某一个维度扩展之后的张量,就是将张量广播到新形状。函数对返回的张量不会分配新内存,即在原始张量上返回只读视图,返回的张量内存是不连续的。类似于numpy中的broadcast_to函数的作用。如果希望张量内存连续,可以调用contiguous函数。例子:import torchx = torch.tensor([1, 2, 3, 4])xn...
2019-11-03 18:13:22
5184
1
原创 Python.__getitem__方法
Python的魔法方法__getitem__ 可以让对象实现迭代功能,这样就可以使用for…in… 来迭代该对象了如果不定义__getitem__方法时,运行下列代码会提示错误:class person: def __init__(self, name_list): self.person_name = name_listpersons = person(["张三"...
2019-11-02 11:03:40
415
原创 python中 __setitem__()和 __setattr__()的区别
(1)__setattr__(self, item, value):会拦截所有属性的的赋值语句,如果定义了这个方法,在给属性变量赋值时会调用__setattr__(self, item, value)方法,执行self.__dict__[key] = value。当在__setattr__(self, item, value)方法内对属性进行赋值时,不可使用self.name = value,因...
2019-10-30 17:28:24
3781
鸿蒙TS代码逐帧读取h264
2024-04-30
智能车最佳路径寻找及其方法--曲率法
2017-04-04
单文档自定义菜单问题
2017-08-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人