09第三方库的使用

devtools/2025/3/9 9:23:51/

1.下载第三方库源码 (例如:jpeg解码库)

Independent JPEG Group

2.解压库源码&配置源码

1.解压源码  
mkdir   ~/jpegsrc  
tar     -xvf  jpegsrc.v9d.tar.gz   -C  ~/jpegsrc/2.配置源码  cd  ~/jpegsrc/jpeg-9d/   #1.进入源码目录 ./configure  --help  #2.查看配置帮助文档  配置参数说明👇........--prefix=PREFIX         install architecture-independent files in PREFIX[/usr/local]  安装库的路径                             --host=HOST       cross-compile to build programs to run on HOST [BUILD]                          ............  mkdir  /home/gec/jpeglib                                               #3.0创建一个安装目录 echo 'export PATH=$PATH:/usr/local/arm/5.4.0/usr/bin'  >>  ~/.bashrc   #3.1配置PATH环境变量  source    ~/.bashrc                                                    #加载配置文件./configure   --prefix=/home/gec/jpeglib  --host=arm-linux   #3.2⭐重点:开始配置 make           #4.编译 👉  调用makefile 文件生成 .o 和动态库与静态库  make install   #5.安装

3.jpeg库的使用 (✔️)

1.解压配置好的库文件到家目录
tar   -xvf  jpeglib.tar.gz  -C     /home/gec  2.把调用官方的示例代码,进行解码gec@PC-20240429TQJF:官方解码例子$ ls
example.c (官方解码例子)   include (头文件)   main.c (主函数)3.编译官方示例代码   👉编译过程中出现的问题自己解决一下
gec@PC-20240429TQJF:官方解码例子$ arm-linux-gcc  main.c    example.c    -I./include    -L/home/gec/jpeglib/lib  -ljpeg4.下载可执行文件到开发板中运行 
[root@GEC6818 /]#./a.out
./a.out: error while loading shared libraries: libjpeg.so.9 ❌出现错误, 解决方法:把jpeg库下载到开发板的 /lib 目录

4.jpeg 解码源码分析

//解码结构体 
struct jpeg_decompress_struct {JDIMENSION image_width; /* 图片宽度*/JDIMENSION image_height;  /* 图片高度*/int num_components;   /* # of color components in JPEG image  色深*/
}//1.读取jpeg头数据  (void)jpeg_read_header(&cinfo, TRUE); // 读取jpeg文件头// 打印图片的信息printf("%d  %d  %d\n", cinfo.image_width, cinfo.image_height, cinfo.num_components);

5、jpeg 转 rgb 算法设计

主要代码:

char rgb[480][800 * 3] = {0};int y = 0; // 当前行// 一行一行的解码while (cinfo.output_scanline < cinfo.output_height){printf("当前解码行 %d : 总行数 %d\n", cinfo.output_scanline, cinfo.output_height);(void)jpeg_read_scanlines(&cinfo, buffer, 1); // 解码一行jpeg数据for (int x = 0; x < 800 * 3; x++){rgb[y][x] = buffer[0][x];}y++; // 行数增加}// 把RGB转换为ARGBchar argb[480][800 * 4];for (int y = 0; y < 480; y++){for (int x = 0; x < 800; x++){argb[y][2 + x * 4] = rgb[y][0 + x * 3]; // Rargb[y][1 + x * 4] = rgb[y][1 + x * 3]; // Gargb[y][0 + x * 4] = rgb[y][2 + x * 3]; // Bargb[y][3 + x * 4] = 0; // A}}

至此,希望看完这篇文章的你有所收获,我是Bardb,译音八分贝,道友,下期见!


http://www.ppmy.cn/devtools/165722.html

相关文章

DeepSeek 隐私泄露?

大家好&#xff0c;我是钢板兽。 最近&#xff0c;一位社科专业的朋友问我&#xff1a;“如果把一些自己研究方向相关的涉密英文材料上传到 DeepSeek&#xff0c;让它帮忙提取文本并翻译&#xff0c;其他用户会不会通过拷打AI或其他方式获取这些材料的内容&#xff1f;”换句话…

DeepSeek如何快速开发PDF转Word软件

一、引言 如今&#xff0c;在线工具的普及让PDF转Word成为了一个常见需求&#xff0c;常见的PDF转Word工具有收费的WPS&#xff0c;免费的有PDFGear&#xff0c;以及在线工具SmallPDF、iLovePDF、24PDF等。然而&#xff0c;大多数免费在线转换工具存在严重隐私风险——文件需上…

基于提示驱动的潜在领域泛化的医学图像分类方法(Python实现代码和数据分析)

摘要 医学图像分析中的深度学习模型易受数据集伪影偏差、相机差异、成像设备差异等导致的分布偏移影响&#xff0c;导致在真实临床环境中诊断不可靠。领域泛化&#xff08;Domain Generalization, DG&#xff09;方法旨在通过多领域训练提升模型在未知领域的性能&#xff0c;但…

Unity Dots

文章目录 什么是DotsDOTS的优势ECS&#xff08;实体组件系统&#xff09;Job System作业系统Burst编译器最后 什么是Dots DOTS&#xff08;Data-Oriented Technology Stack&#xff09;是Unity推出的一种用于开发高性能游戏和应用的数据导向技术栈&#xff0c;包含三大核心组件…

4.1 数组

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 4.1.1 数组基础 数组是一组逻辑上相互关联的值&#xff0c;所有的数组都是Array类&#xff0c;Array提供的属性和方法都适用。 例如…

如何优化FFmpeg拉流性能及避坑指南

FFmpeg作为流媒体处理的核心工具&#xff0c;其拉流性能直接影响直播/点播体验。本文从协议优化、硬件加速、网络策略三大维度切入&#xff0c;结合实战案例与高频踩坑点&#xff0c;助你突破性能瓶颈&#xff01; 一、性能优化进阶&#xff1a;从协议到硬件的全链路调优 协议选…

Luno Api - AI音乐开发「人声伴奏分离 – 自定义音频」「Luno Api系列|AI音乐API」第7篇

导读 今天来看下Luno Api的人声伴奏分离。 人声伴奏分离顾名思义就是将人声和伴奏&#xff08;乐器&#xff09;的声音分离成两个音频文件。 这个功能对于各大音乐平台要证明是原创有很大的作用&#xff0c;所以这个功能相当的重要。 上一节是对于已经创作的歌曲进行分离&a…

代码随想录算法营Day59 | 寻找存在的路径, 冗余连接,冗余连接II

寻找存在的路径 这题使用并查集即可。并查集加路径压缩。 #include <iostream> using namespace std; int find(int* father,int u){return father[u] u ? u : father[u] find(father,father[u]); }bool isSame(int* father,int u,int v){return find(father,u) fi…