摘要:
在学习swap函数时,若想改变实参,可以将函参设置为指针类型。 那么函参中的双重指针,也是这种含义。想改变实参(指针类型)的指向或值时,可以用双重指针。 void change(char* p) { p = "bbb"; } int main() { char *v = "aaa"; change( 阅读全文
摘要:
LwRB (lightweight ring buffer) 是一个轻量级的环形缓冲区,功能强大、高效。 仓库地址 GitHub - MaJerle/lwrb: Lightweight generic ring buffer manager library 文档地址 LwRB latest-deve 阅读全文
摘要:
hpp是为了少写点文件,如果玩不好,还是建议用 h和cpp ,因为很容易报重定义错误。 error:LNK2005 函数已经在*.obj中定义的一种解决办法_error lnk2005: 已经在 .obj 中定义-CSDN博客 在引用函数实现和定义在一体的.hpp头文件怎么解决报多重定义的问题_包含 阅读全文
摘要:
需求1:在高帧率场景下,一般拿到的是bayer格式数据。图像处理时,一般会先插值成rgb,再拆分为单通道。如果可以直接bayer中抽出r、g、b,那效率将大大提升。 需求2:抽取的单通道直接是镜像的 注意:抽取后r、g、b尺寸是原来的一半,没有做插值(插值只会让数据量变大,并没有引入有效信息) 效果 阅读全文
摘要:
需求:在高帧率场景下,一般拿到的是bayer格式数据。图像处理时,一般会先插值成rgb,再拆分为单通道。如果可以直接bayer中抽出r、g、b,那效率将大大提升。 注意:抽取后r、g、b尺寸是原来的一半,没有做插值(插值只会让数据量变大,并没有引入有效信息) 效果:CPU指令集优化后,速度是传统算法 阅读全文
摘要:
在看内存中数据时,VS2015打断点碰到了数据读入不正确的问题 uint8_t uint8_array[32] = { 00, 07, 04, 04, 02, 03, 06, 02, 02, 05, 04, 02, 06, 05, 04, 03, 00, 07, 04, 05, 00, 02, 00 阅读全文
摘要:
周期性地执行一段代码,while死循环+sleep是一种方式,但是精度在10ms以上。 while死循环里如果没有sleep,那么会单独占用1个CPU核(即CPU占用率很高)。 sleep即使设置为1ms(见下方代码),经示波器测试发现周期至少在10ms以上。 Sleep(1); //Windows 阅读全文
摘要:
为抽取bayer格式图像的r\g\b做准备,_mm256_shuffle_epi8不能按_mm_shuffle_epi8理解,前者是前后一半分开处理,后者是全部一起处理。 #include <iostream> #include <intrin.h> int main() { uint8_t uin 阅读全文
摘要:
加法、减法和乘法等算术运算,位运算指令、比较指令、加载存储指令、类型转换指令等 位运算指令,【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。_wx61234e53ee589的技术博客_51CTO博客 shuffle系列指令,_mm_shuffle_epi8-CSDN博客 permute系 阅读全文
摘要:
每次偏移 int索引*scale 个字节,每次取4字节。注意int索引是倒序的,如__m128i vindex有4个int索引,先取最后一个索引。 举例: __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const 阅读全文