{"id":15047386,"url":"https://github.com/taskrunner86/cpp_bmp","last_synced_at":"2025-04-10T00:50:57.597Z","repository":{"id":224688173,"uuid":"763811361","full_name":"TaskRunner86/cpp_bmp","owner":"TaskRunner86","description":"c++ bmp image library","archived":false,"fork":false,"pushed_at":"2024-12-29T14:15:56.000Z","size":1763,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-10T00:50:54.695Z","etag":null,"topics":["bmp","cpp","cpp11"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TaskRunner86.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-27T00:40:51.000Z","updated_at":"2025-04-08T11:46:34.000Z","dependencies_parsed_at":"2024-12-16T15:35:36.523Z","dependency_job_id":"ac685b47-51ce-4e42-a047-94aedd25b683","html_url":"https://github.com/TaskRunner86/cpp_bmp","commit_stats":{"total_commits":53,"total_committers":1,"mean_commits":53.0,"dds":0.0,"last_synced_commit":"f0eb6bf23233b86a201cd28c3f86e46e0799c573"},"previous_names":["taskrunner86/cpp_bmp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaskRunner86%2Fcpp_bmp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaskRunner86%2Fcpp_bmp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaskRunner86%2Fcpp_bmp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TaskRunner86%2Fcpp_bmp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TaskRunner86","download_url":"https://codeload.github.com/TaskRunner86/cpp_bmp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137999,"owners_count":21053775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bmp","cpp","cpp11"],"created_at":"2024-09-24T20:57:27.387Z","updated_at":"2025-04-10T00:50:57.576Z","avatar_url":"https://github.com/TaskRunner86.png","language":"C++","readme":"# 说明\r\n\r\n本项目遵守MIT协议，可以宽松的用于非商用和商用目的，但本项目主要是为了帮助大家学习和理解图片处理的底层原理。工程通过cmake组织，可以在Linux和windows下编译运行。项目文件说明如下：\r\n\r\n- CMakeLists.txt为cmake组织文件\r\n- src文件夹为源代码\r\n- src/core文件夹为bmp类和相关的操作 是各个应用的公用代码\r\n- src/test文件夹为单元测试\r\n- Tool.cpp为应用工具\r\n- Draw.cpp为画图应用\r\n- CalcPi.cpp为计算π的应用\r\n- Freefall.cpp为自由落体动画应用\r\n- CharDraw.cpp为字符画应用\r\n- bmp文件夹存放图片\r\n\r\n需要增加自己应用的同学，可以修改CMakeLists.txt添加新的目标，也可以直接修改Tool.cpp。\r\n\r\n视频教程如下，有兴趣的同学可以学习：\r\n\r\n【手搓 C++ BMP 图像处理库（1）图片格式、图片读写】 https://www.bilibili.com/video/BV1s6421g7ya/\r\n\r\n【手搓 C++ BMP 图像处理库（2）画点、画线及编码调试方法】 https://www.bilibili.com/video/BV1cC411s7dN/\r\n\r\n【手搓 C++ BMP 图像处理库（3）画多边形、画圆】 https://www.bilibili.com/video/BV11t421b7UU/\r\n\r\n【手搓 C++ BMP 图像处理库（3）画多边形、画圆】 https://www.bilibili.com/video/BV11t421b7UU/\r\n\r\n【手搓 C++ BMP 图像处理库（5）区域划分、填色】 https://www.bilibili.com/video/BV1iu4m137CN/\r\n\r\n【手搓 C++ BMP 图像处理库（6）画个笑脸】 https://www.bilibili.com/video/BV17W421c7eX/\r\n\r\n【手搓 C++ BMP 图像处理库（7）计算圆周率】 https://www.bilibili.com/video/BV1jw4m1R7XA/\r\n\r\n【手搓 C++ BMP 图像处理库（8）复制、剪切、粘贴】 https://www.bilibili.com/video/BV1fx4y127iM/\r\n\r\n【手搓 C++ BMP 图像处理库（9）自由落体反弹动画】 https://www.bilibili.com/video/BV1rK421Y7UU/\r\n\r\n【手搓 C++ BMP 图像处理库（10）翻转】 https://www.bilibili.com/video/BV1UH4y1K7dY/\r\n\r\n【手搓 C++ BMP 图像处理库（11）调整大小、马赛克】 https://www.bilibili.com/video/BV1Vm411U7fg/\r\n\r\n【手搓 C++ BMP 图像处理库（12）旋转】 https://www.bilibili.com/video/BV1Q142197iL/\r\n\r\n【手搓 C++ BMP 图像处理库（13）灰度化、二值化、颜色反转】 https://www.bilibili.com/video/BV1PC411E7Qn/\r\n\r\n【手搓 C++ BMP 图像处理库（14）字符画】 https://www.bilibili.com/video/BV1Di421Q7rc/\r\n\r\n【手搓 C++ BMP 图像处理库（15）亮度与对比度调节】 https://www.bilibili.com/video/BV1cw4m1i7B4/\r\n\r\n【手搓 C++ BMP 图像处理库（16）透明】 https://www.bilibili.com/video/BV1yWUaY4EB1/\r\n\r\n【手搓 C++ BMP 图像处理库（17）HSV与绿幕】 https://www.bilibili.com/video/BV1CJCKYiEcg/\r\n\r\n\r\n## Windows编译\r\n\r\nwindows通过vscode + Mingw方式开发，可以通过下面链接学习编译方法：\r\n\r\n【Windows C/C++ 开发环境选择及vscode + Mingw安装】 https://www.bilibili.com/video/BV1ub4y1N7G4/\r\n\r\n## Linux编译\r\n\r\n进入项目根目录，输入以下命令：\r\n\r\n```\r\ncmake -S . -B build\r\ncd build\r\nmake\r\n```\r\n\r\n## 测试运行\r\n\r\n进入项目根目录，输入以下命令：\r\n\r\n```\r\ncd build\r\n.\\Test.exe\r\n```\r\n\r\n运行测试之后，bmp/test文件夹下，各个测试suite文件夹里，会生成很多bmp图片。\r\n\r\n## 编写自己的应用\r\n\r\n编写自己应用需要以下几步：\r\n\r\n在src目录下新建自己的App.cpp文件\r\n\r\n在CMakeLists.txt文件的生成程序下增加以下代码：\r\n\r\n```\r\nadd_executable(App ${CORE_SRC} ./src/App.cpp)\r\n```\r\n\r\n这样编译完成后，build目录里会多一个App.exe。\r\n\r\n进入项目根目录，输入以下命令：\r\n\r\n```\r\ncd build\r\n.\\App.exe\r\n```\r\n\r\n就运行了自己添加的应用。\r\n\r\n以上只是建议，cmake熟练的同学可以随意修改。\r\n\r\n## 调试代码\r\n\r\ncore目录里的代码是各个应用共用的，其他在src第一层目录里的代码是各个应用独有的。调试是以应用为基础单位进行的，所以需要调试哪个应用，就要把.vscode/launch.json里的program项修改成自己需要调试的应用，如下：\r\n\r\n```\r\n\"program\": \"${workspaceFolder}/build/Test.exe\",\r\n```\r\n\r\n改成\r\n\r\n```\r\n\"program\": \"${workspaceFolder}/build/App.exe\",\r\n```\r\n\r\n然后，点击vscode左侧窗口里的run and debug，再点击子窗口上面的start debugging 三角图标，开始调试。点击cmake tools的debug图标触发的调试界面，不会响应.vscode/launch.json的内容修改，不推荐用这种方式触发调试。\r\n\r\n## 制作视频\r\n\r\n可以通过下面链接学习图片合成视频的方法：\r\n\r\n【视频提取图片及图片合并视频（ffmpeg）】 https://www.bilibili.com/video/BV1eK421e7Rw/\r\n\r\n可执行压缩包下载：\r\n\r\n打开 https://github.com/BtbN/FFmpeg-Builds/releases\r\n\r\n下载 ffmpeg-master-latest-win64-gpl.zip\r\n\r\n视频提取图片命令：\r\n\r\n```\r\nffmpeg -i raw.mp4 -r 10 -f image2 %05d.bmp\r\n```\r\n\r\n图片合并视频命令：\r\n\r\n```\r\nffmpeg -r 10 -f image2 -i %05d.bmp output.mp4\r\n```\r\n\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskrunner86%2Fcpp_bmp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaskrunner86%2Fcpp_bmp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaskrunner86%2Fcpp_bmp/lists"}