自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(234)
  • 资源 (28)
  • 收藏
  • 关注

原创 android-ndk开发(11): 安装 repo 命令

repo 的官方下载地址: https://storage.googleapis.com/git-repo-downloads/repo。恭喜你, 折返回到清华大学镜像: https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/repo 的官方介绍页面: https://gerrit.googlesource.com/git-repo/

2025-05-09 22:12:14 319

原创 android-ndk开发(10): use of undeclared identifier ‘pthread_getname_np‘

是在 Android API 26 新增的函数, 在 cmake configure 阶段需要传入或更高版本。这在 Android C 标准库 bionic 的文档里有提及: https://android.googlesource.com/platform/bionic.git/+/refs/heads/main/docs/status.md。

2025-05-08 21:58:41 490

原创 android-ndk开发(9): undefined reference to `__aarch64_ldadd4_acq_rel` 报错分析

gcc 9.3.1 和 clang 12.0.1 添加了编译选项, 用来开启 LSE (Large System Extension), 用于在 Armv8.1-a 上改善多核情况下的原子操作的性能。这个选项在 gcc 9 和 clang 12 是默认不开启的, 相当于是默认开启了。从 gcc 10 和 clang 13 开始默认开启编译选项。ndk 版本和 clang 版本有对应的关系, clang >= 13 对应到 ndk >= r24。

2025-05-08 21:56:21 635

原创 android-ndk开发(8): ndk 和 clang 版本对照表

本文给出了查阅 ndk 各个版本 changelog 的方法, 包括 wiki 网站, 和 ndk 源码仓库, 这些 changelog 提供了比较详细的信息。 本文还给出了 ndk 和 clang 版本的对照表, 包括 ndk 字母形式的短版本、 纯数字的版本, 而对应的 clang 版本,则能用于和上游 LLVM 的版本变更做联动的分析。

2025-05-06 17:52:08 803

原创 android-ndk开发(7): 从库文件反推ndk版本

本文提供了在在 android-ndk 平台上, 从库文件反推出编译它的 ndk 版本的方法: 对于动态库, 可以用 parse_elfnote.py 提取;对于静态库, 则需要编译时写入字符串。对于 OpenCV 这个静态库, 我们反推了4个常用版本对应的 ndk 版本。这些 ndk 版本信息, 在一些编译、链接报错的分析中, 会提供帮助。

2025-05-06 17:29:52 1006

原创 android-ndk开发(6): 查看反汇编

给出了 android-ndk 程序查看反汇编代码的方法, 包括单个可执行文件、 基于 cmake 构建时的每个源代码文件。 简要提及了反汇编典型使用场景: crash 分析、 性能分析.

2025-05-05 23:42:08 630

原创 android-ndk开发(5): 编译运行 hello-world

批判了 anroid ndk 官方故意使绊子的问题。 给出了绝佳的 android-ndk hello-world 控制台可执行程序的例子。

2025-05-05 22:57:40 818

原创 android-ndk开发(4): linux开发机有线连接android设备

本篇给出了 Linux 开发机上, 配置 udev 规则的步骤和注意事项, 从而让后续通过 USB 线连接设备时, 能自动识别设备, 顺畅的使用 adb 命令。

2025-05-05 22:07:27 607

原创 android-ndk开发(3): 连接设备到开发机

本篇给出了开发机和android设备连接的步骤说明。

2025-05-05 21:54:04 583

原创 android-ndk开发(2): macOS 安装 ndk

给出了 android-ndk 在 r23 之前和 r23 之后, 分别在 macOS 上如何安装的说明

2025-05-05 21:28:08 431

原创 android-ndk开发(1): 搭建环境

给出了一份还算稳妥的 android-ndk 开发环境入门说明。

2025-05-05 21:21:43 958

原创 adb无线调试步骤

adb pair 和 adb connect 用到的端口号,不是同一个. 这个弄错可能导致连接不上。adb 可执行文件需要放到 PATH 里。端口号每隔一段时间会变化。

2025-05-05 17:26:08 670

原创 C++: Initialization and References to const 初始化和常引用

这个转换,是生成「临时的」 MyFuncs 对象。这个所谓的「临时的」,可以认为是匿名的、编译器生成的。这样的匿名对象,声明周期是有限的:发生在。匿名对象马上就「死了」,你还取地址;那以后再用这个匿名对象,就是使用「鬼魂」,本质是使用非法内存。那肯定crash啊。为啥说是临时对象的地址?因为 引用的本质是 别名(alias);取引用的地址, 其实,就是取匿名对象的地址。上述代码会 crash。如果开启 ASAN 则能发现非法内存访问。这是一段很容易被忽略、 但是又非常重要的内容。

2025-04-15 22:38:07 662

原创 访问指针会出现 undefined behavior 吗

对于2和3两种情况, 如果访问指向的对象(也就是「非法对象」),这是触发了未定义行为。

2025-04-13 10:57:28 132

原创 C++ const引用绑定到字面量的本质

这看起来像是「创建了字符串字面量的引用」,但其实是创建了临时的、匿名的字符串对象,然后绑定到了这个临时的、匿名的字符串对象上的引用。其中「无名」意思是,编译器的具体实现。须知,双下划线的标识符,用户代码是不能那么写的,它们是给编译器保留使用的。编译器会处理为:创建一个「无名」(双下划线替代)变量;普通的引用,必须绑定到对象上,不能绑定到 literal 上;这篇 stackoverflow 问答给出了解释: 当你写。

2025-04-13 10:10:56 303

原创 C++标识符:检查是否和保留字冲突

最基本的要求: 字母、数字、下划线组成, 并且不能是数字开头。禁忌1: C++ 关键字不能用做标识符。 它们是:禁忌2:不能包含两个连续的下划线。禁忌3:不能以下划线 + 大写字母开头。禁忌4:函数外面定义的标识符, 不能以下划线开头。禁忌5:宏定义也是 identifier,也需要遵循前面提到的要求: https://en.cppreference.com/w/cpp/preprocessor/replace禁忌6:和已有宏定义同名, 例如 #include <windows.h> 后, 默认会引入 s

2025-04-12 22:59:44 485

原创 C++: 获取auto的实际类型

上述 a, b, c 类型分别是什么?

2025-04-12 17:21:30 181

原创 C++ Primer 5e 习题2.5: 指出如下字面量常量的类型

既然是C++11,那就使用用。

2025-04-12 16:37:33 214

原创 C++: char类型既不是signed char也不是unsigned char

对于 char 类型, 增加 signed, 类型变了。char 既不是 signed char, 也不是 unsigned char。虽然 char 的取值范围, 一定是:要么是 signed char 范围, 要么是 unsigned char 范围。对于 int, short, long, long long 类型, 增加 signed, 类型不变。如下代码在 Apple Clang 15.0.0 下运行。

2025-04-12 10:28:36 154

原创 WSL使用经验

如果在 WSL 中安装了多个 Linux 发行版,默认的hostname不要区分它们。考虑修改 hostname, 例如改为。WSL 里的 Ubuntu, hostname 默认形如。

2025-04-04 13:07:03 118

原创 win11安装绕过微软账号

全新安装 Windows11, 一开始连接了 wifi, 发现后面必须登录微软账号, 想起来之前被截断用户名只显示前5个字母的情况, 需要规避。会自动重启进入全新安装, 注意跳过 wifi, 并使用本地账号登录。解决思路: 先删除 wifi 网络的记录, 然后重新执行安装。shift+F10 调用出 cmd, 执行。

2025-03-29 10:37:39 162

原创 成为Python砖家(7): 使用miniforge管理Python版本

注意, miniconda 也是 anaconda 的一部分, 也应当避免使用。anaconda 官方的说辞是, 用户使用了他们的 repo 存储的包。先前使用 anaconda, 后来切换到 miniconda。不变的是: 从未使用过 conda channel 的东西。conda 对我而言, 只是创建、切换不同 python 版本的工具。既然如此, 切换到 miniforge 是毫无波澜的,没有任何不适应。唯一要说的是, 有什么好处: 规避 anaconda 公司的律师函。

2025-03-15 20:49:35 260

原创 成为git砖家(9): rebase进阶: 拆分commit为多个

当一次性 git add 了多个修改点, 并且快速的执行了 git commit 后, 你觉得有点懊恼: 明明可以独立为两次或多次 commit, 揉在一块导致历史记录不太清晰。我们知道,对于已经存在的多个commit如果要合并起来,那么 rebase 是相当简单的。也是可以用 rebase 来做的,用到的是。git commit 后我后悔了,想要拆解为3次 commit,每次一个函数。重复 git add, git commit 动作, 直到满意。例如我最近一次 commit 需要被拆分, 它是。

2025-03-11 22:13:26 461

原创 小米手机HyperOS 2.0开启USB调试

小米手机, 升级系统到 HyperOS 2.0 之后 adb shell 不显示手机, 需要重新启用 USB 调试.设置 -> 我的设备 -> 全部参数与信息, 找到 “OS 版本”, 连续点击5次.设置 -> 搜索 “USB调试”, 开启并确定.弹窗“允许 USB 调试吗?

2025-03-08 23:01:11 526

原创 cmake压缩或解压文件

有两种主要方式。第一种,执行外部命名,通常用cmake -E系列。第二种,用file()命令。下面以解压为例,压缩同理。

2025-02-09 10:22:11 309

原创 github release页面的zip和tar.gz有什么区别?

一个例子:FFmpeg 编译后的产物里,有符号链接文件。如果是在 Windows 系统上,交叉编译到 linux-arm64 平台,并且需要用到 FFmpeg 的库文件, 而 Windows 并能很好的支持符号链接文件, 就会比较棘手。需要在解压阶段, 处理好符号链接文件。如果被打包的内容都是文本文件,那么通常 .zip 和 .tar.gz 内容完全一致。对比 .zip 和 .tar.gz, beyond compare 显示完全一致。例如 cereal 库是 header-only 库,提供一堆头文件。

2025-02-09 10:04:28 522

原创 naivecv的设计与实现(3): NV12到RGB的转换

通过搜索github,得到了用于测试的 NV12 图像。基于对 NV12 图像格式的理解,用C语言读取了 NV12 图像内容。遍历 NV12 的 UV 平面,并得到对应的 Y 平面的像素点, 从而得到了一组 RGB 像素值;由于每个 UV 是被 2x2 的 4个Y共享的,因此, 先获取剩余的3个 Y, 然后算出三组 RGB 像素值。这样一来就写入了 dst rgb 图像的 2x2 像素区域,进而完成了整个 NV12 到 RGB 的图像格式转换。

2025-01-25 20:44:59 424

原创 naivecv的设计与实现(2): 读写gray和rgb图像

图像读写并不是图像处理的核心,仅仅作为调试工具, 是一种手段而非目的。

2025-01-25 14:32:12 309

原创 naivecv的设计与实现(1): 版本号

打算写一个图像处理基础库 naivecv, 如名字所示, 是个人练手项目。使用 C API, 具体实现可以用C++。本篇记录版本号的设计和实现。

2025-01-25 12:48:02 337

原创 C++ Primer Notes(5): 复合类型

Compound Type 复合类型指的是基于其他类型定义的类型,C++中最基本的复合类型有两类:指针类型, 引用类型。回顾和提升了对于变量声明的格式,以往的简单声明,格式是type name;现在则改为, 其中 type_modifier 在本章是和两种,分别表示指针 和 引用(左值引用)。也可以复合了和使用,意思是指针类型的引用类型,如int a = 3;其中c是引用类型,base_type 是int*提到了引用类型必须初始化,因为绑定到了已经存在的对象,引用则不会创建新的对象。

2025-01-12 12:51:17 980

原创 C++ Primer Notes(4): 变量初始化和作用域

指定类型,指定变量名字, 可选地给出初始化器。这就是变量定义。

2025-01-12 00:55:35 745

原创 C++ Primer Notes(3): 哪些人可以看C++ Primer

在知乎搜索 “C++ Primer”,靠前的一个问答是。本篇挑选一些观点,予以批评。

2025-01-11 23:04:36 901

原创 C++ Primer Notes(2): 内置整数类型的长度和转换

例如。

2025-01-11 18:59:56 709

原创 C++ Primer Notes(1): Chapter 1 Getting Started

趁着最近请假静养,时间稍微多那么一点,再试一次。而看中文版 pdf 时,一方面是清晰度不足, 另一方面是中文容易让我觉得“熟悉”而跳过内容, 并且有些翻译后的内容对应到的英文我并不能100%对应上,因此这次试着读英文原版。而习惯了每天让 AI 喂饭的我们, 在提高效率的同时, 静下心来看书、练习编程,可能更能让学习编程语言回归到兴趣。前面一个例子是计算两个数字的加法, 并通过使用 while 和 for 循环,扩展到了计算一个区间内的数字的和。下一个程序,是统计给定的整数序列中,每个数字出现的次数。

2025-01-07 22:43:31 702

原创 C/C++的printf会调用malloc()

排查内存问题(或相关的疑难杂症)时,可能一句printf就能让bug出现,或者赶走bug。你可能觉得很神奇,但这并不神奇。至少我们可以在 Linux-x64 下,通过 malloc hook,来验证当前的编译环境下, printf 确实是调用了 malloc。而 malloc 底层也不是吃素的, 默认是 glibc 的 ptmalloc 这个内存管理器, 如果本身你的程序把内存控制块写坏了, 继续 malloc 那就容易出现问题, 也就表现为 printf 影响了 bug 的出现。来看代码。

2025-01-06 23:37:38 426

原创 Windows MSVC 常见错误码大全

【代码】Windows MSVC 常见错误码大全。

2025-01-05 08:53:06 959

原创 C++库 CLI11 介绍和使用

CLI11 是一个 single-header-only 库, 用于命令行解析。CLI11 的官方仓库是: https://github.com/CLIUtils/CLI11.git。

2025-01-01 21:23:13 1346

原创 半神器 PathFinder 使用体验

总的来说, Path Finder 确实补充了 Finder 的不足, 但是不如 Directory Opus 对于 Windows File Explorer 的改进那么大。Path Finder 的使用,也促使我对 Finder 的使用增加了经验。

2025-01-01 08:21:18 854

原创 开源软件 Double Commander 使用体验

前一篇写了神器 Directory Opus 的使用经验, 不过 Directory Opus 只支持 Windows 系统。macOS 自带的 Finder 的使用体验, 比 Windows Explorer 还要简陋, 尝试找 macOS 下的 Directory Opus 替代时,找到一款名为 Double Commander 的开源软件: https://github.com/doublecmd/doublecmd。

2025-01-01 07:23:27 724

原创 神器 Directory Opus 使用经验

一款付费软件,作为 Windows 自带的 Explorer 的增强替代版。

2024-12-31 22:49:55 4579

3.pgm:一张绘图图,格式为pgm

在介绍 pgm 图像格式以及用C语言实现 .pgm 图像读写的博客中,用到本资源。

2023-06-17

doxygen-1.9.7-C++文档

doxygen 1.9.7版本的 C++ 代码的文档,适合 doxygen 的开发者、研究者查阅其 C++ 类、函数等。

2023-05-19

仿BeyondCompare的两张图像比较功能,Qt5实现的源码工程

Beyond Compare 的图像比较功能很强大,然鹅有时候加载的图片显示不正确,使得比较结果也不正确。 基于Qt+OpenCV实现了一个简易模仿版本,OpenCV强大的图像读取保存功能确保了图像读取结果正确,Qt界面则简单的实现了比较的功能(显示原图、显示差异图、手动选择差异阈值)。

2022-05-01

emacs-27.1-x86_64.zip

神的编辑器emacs, 第27版。编辑文字,看图片,听音乐,浏览网页,煮咖啡...但凡能想到的,emacs都可以做到。Windows10上最新的emacs客户端,zip版,快快使用吧~

2020-10-19

cmake-3.19.0-rc1-win64-x64.zip

当前(2020年10月18日)最新版的 cmake (3.19.0-rc1),windows zip版本。对于需要跨平台、跨编译器版本,执行编译构建任务,CMake已经是开源社区最流行的构建工具了~快快使用哦

2020-10-18

mini-dnn-cpp-master.zip

基于C++11和Eigen库实现的CNN推理引擎,包括前向推理以及训练功能。做ML Sys的小伙伴们可以参考。

2020-10-18

freeglut-3.2.1-vs2017-x64.zip

VS2017编译的freeglut最新版(3.2.1),包括debug和release模式下的静态库、动态库和dll,可以基于cmake来调用。如果要自行编译,可以到官方网站 http://freeglut.sourceforge.net/ 下载源码编译。

2020-10-16

cmake-3.18.4-win64-x64.zip

cmake 3.18.4 windows 64位版本,对于需要多平台构建C/C++项目的小伙伴来说,cmake是实施标准了~

2020-10-13

带windows支持的cocoapi代码

基于官方cocoapi修改,增加了windows编译支持,做目标检测的小伙伴们,在windows下执行精度测评,不可获取的好东东~

2020-08-18

OneFlow深度学习框架源码

深度学习框架OneFlow源码,提供高性能分布式训练功能,初创公司一流科技的一流产品。对应代码是2020.8.11最新的代码。多卡训练的话提升效率,不可多得的神器!

2020-08-17

带Python3和CUDA10支持的Caffe

带Python3支持和CUDA9, 10支持的Caffe版本,基于Caffe-BVLC(https://github.com/BVLC/Caffe)修改,修改内容仅限于cmake脚本。ubuntu16.04, ubuntu18.04, ubuntu20.04都可以顺畅使用!

2020-08-17

cuDNN8-Developer-Guide.pdf

cuda 11.0配套的 cudnn8.0.1 的 官方配套的 开发说明文档,包括各种函数原型列表、参数说明等,深度学习相关的开发可以参考。

2020-08-16

cmake-3.18.0-win64-x64.zip

适用于Windows系统的 cmake 3.18 版,跨平台 c/c++ 程序构建的有力工具,交叉编译的事实标准工具。尽在cmake 3.18。

2020-08-16

cmake-3.18.0-Darwin-x86_64.tar.gz

适用于MacOSX系统的 cmake 3.18 版,跨平台 c/c++ 程序构建的有力工具,交叉编译的事实标准工具。尽在cmake 3.18。

2020-08-16

vulkansdk-linux-x86_64-1.1.126.0.tar.gz

vulkansdk,linux下的 1.1.126版本。 官网的资源,有时候真的很难下载,这里分享出来,希望帮到各位!vulkan威武!

2020-08-16

diffutils-3.7.tar.xz

Linux/MacOS等系统下使用的diff命令(gnudiff)的源码,当前(2020.08.01)最新版,想要研究diff原理的可以看看。诸如colordiff这样的命令是基于diff的结果再次解析的。

2020-08-16

smartgit-linux-20_1_3.tar.gz

smartgit 20.1.3 Linux 版本(2020年7月下载时最新版本),smartgit作为优秀的git图形化界面工具,提供了非凡的用户体验。不多说,赶紧下载使用!

2020-08-16

cmake-3.15.0-Linux-x86_64.tar.gz

cmake 3.15,适合Linux的通用版本。cmake作为跨平台的事实编译构建标准工具,提供了非常便利的功能。可惜官方下载太慢了,这里提供cmake的下载,方便广大c/c++玛侬!

2020-08-16

Linux下懒人安装cudnn的脚本,适合任意cudnn版本

基于Python实现的,生成”安装cudnn"所需要的shell脚本。适用于任意cudnn版本,懒人必备:拷贝头文件、拷贝静态库、拷贝动态库、动态库软链接,一应俱全。

2020-08-16

逆透视变换IPM源码

基于C++和OpenCV实现的逆透视变换(Inverse Perspective Mapping)源码,基于CMake构建,Linux/Windows/Mac均可使用。 车道线检测等算法中可以使用。

2020-08-16

parse_mnist.cpp

基于C++实现的mnist数据集解析代码,提取图片和标签,存储为.bmp图片,图片保存名字中含有标签。依赖opencv(需要自行配置)。

2020-08-16

imageset-viewer.py

绘制Pascal VOC BBox的python代码,基于Tkinter实现。支持鼠标切换图片,支持挑图保存模式。不同类别box的颜色不同。支持类别名字映射。

2020-08-01

cuda-gdb.pdf

cuda-gdb的cuda9.0官方使用文档,对于Linux下调试基于cuda的程序,例如实现卷积神经网络深度学习框架,不可或缺的调试帮助文档。

2019-10-08

CUDA_Debugger_API.pdf

CUDA9.0配套的调试API说明文档,门槛低,上限高,非常适合初学者学习参考使用!

2019-10-08

CUBLAS_Library.pdf

cuda9.0里面的cublas文档,对于cuda开发从业人士非常必要基础的一本小册子,不可错过

2019-10-08

gvim_8.1.2080_x64.exe

Windows下的vim,geek必备的工具,8.1版本支持内置插件系统!

2019-10-08

WinCodeHelper.exe

Windows下使用路径做为字符串,经常需要把\替换为/。为了方便,可以直接粘贴windows下的路径到WinCodeHelper.exe中,一键替换为Linux风格的路径,提高编码效率!

2019-10-08

带cmake支持的protobuf2.6.1源码

protobuf2.6.1源码,加入了cmake支持,Linux下和Windows下都能构建,生成Debug/Release版本静态库,Debug版本带d作为后缀。

2018-11-19

HOG+SVM原版C++代码,略修改,编译成功

HOG+SVM算法作者Dalal提供的C++源码,经过本人在ubuntu15.10(32位)下测试:boost使用apt-get安装,其他包使用作者提到的版本编译安装,此时仍无法顺利编译learcode。本人根据编译错误信息不断修改,此压缩包中的是可以用于编译的版本,希望对于做行人检测的你有所帮助!!

2016-07-17

pedestrian_HOG_SVM_Inria_Caltech

OpenCV3.0+hog+svm+Inria数据集做行人检测代码,包括训练、生成难例、二次训练、测试(生成bbs文件用于评测miss rate - fppi曲线) 需要另行下载Caltech主页的matlab toolbox和Inria数据集配合使用

2016-02-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除