最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Vitis?IDE中如何使用第三方庫?libtiff?保存?tiff?文件

 更新時(shí)間:2023年07月17日 10:07:04   作者:愛學(xué)習(xí)的諸葛鐵錘  
這篇文章主要介紹了在Vitis?IDE中如何使用第三方庫?libtiff?保存?tiff?文件,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

目的和思路

一個(gè)Vitis IDE 裸機(jī)項(xiàng)目,需要將視頻幀無損地保存下來

由于每幀的像素?cái)?shù)據(jù)是 16bit 1通道的 bayer 格式,滿足這一需求的圖像格式似乎只有 tiff 格式開源的tiff 庫是 libtiff,而在 Vitis IDE 裸機(jī)項(xiàng)目中要使用的話就需要交叉編譯Vitis IDE 裸機(jī)的cpu是arm v7 cortex a9,用到的編譯器是 arm-none-eabi在Ubuntu中利用 對應(yīng)版本的 petalinux 自帶的 arm-none-eabi 編譯器編譯libtiff最后Vitis IDE中添加并使用編譯好的第三方庫 libtiff 就能保存 tiff 文件了

libtiff 交叉編譯

下載源碼,解壓到ubuntu配置Makefile命令 ./configure --prefix=/home/hammer/tiff-4.5.0/install --host=arm-none-eabi CFLAGS="-fno-exceptions --specs=nosys.specs -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard"然后 make & make install

編譯好之后的結(jié)果,移到windows中

在這里插入圖片描述

在Vitis IDE中添加libtiff并編譯

打開IDE,新建一個(gè)application,右擊properties

在這里插入圖片描述

gcc compiler 配置 Include,path 添加編譯好的 include 路徑

在這里插入圖片描述

gcc linker 配置 Libraries,path 添加 tiff 的 lib 庫,-l 添加 tiffm

在這里插入圖片描述

在這里插入圖片描述

編寫一個(gè) main.c 進(jìn)行測試 libtiff 庫函數(shù)是否能用

#include <stdio.h>
#include <stdlib.h>
#include <tiffio.h>
#define WIDTH 640
#define HEIGHT 480
#define BITS_PER_SAMPLE 8
#define SAMPLES_PER_PIXEL 1
int main() {
    // 假設(shè)幀緩存是一個(gè)二維數(shù)組,存儲了像素?cái)?shù)據(jù)
    // 這里使用動(dòng)態(tài)分配內(nèi)存來模擬幀緩存
    unsigned char** frameBuffer = (unsigned char**)malloc(HEIGHT * sizeof(unsigned char*));
    for (int i = 0; i < HEIGHT; i++) {
        frameBuffer[i] = (unsigned char*)malloc(WIDTH * sizeof(unsigned char));
    }
    // 假設(shè)幀緩存已經(jīng)填充了像素?cái)?shù)據(jù)
    // 這里僅為示例,使用簡單的灰度圖像
    for (int y = 0; y < HEIGHT; y++) {
        for (int x = 0; x < WIDTH; x++) {
            frameBuffer[y][x] = (unsigned char)(x % 256);
        }
    }
    // 創(chuàng)建 TIFF 文件指針
    TIFF* tiff = TIFFOpen("frame.tiff", "w");
    if (tiff == NULL) {
        printf("無法創(chuàng)建 TIFF 文件\n");
        return 1;
    }
    // 設(shè)置 TIFF 參數(shù)
    TIFFSetField(tiff, TIFFTAG_IMAGEWIDTH, WIDTH);
    TIFFSetField(tiff, TIFFTAG_IMAGELENGTH, HEIGHT);
    TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, BITS_PER_SAMPLE);
    TIFFSetField(tiff, TIFFTAG_SAMPLESPERPIXEL, SAMPLES_PER_PIXEL);
    TIFFSetField(tiff, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
    TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
    TIFFSetField(tiff, TIFFTAG_ROWSPERSTRIP, 1);
    // 逐行寫入像素?cái)?shù)據(jù)
    for (int y = 0; y < HEIGHT; y++) {
        if (TIFFWriteScanline(tiff, frameBuffer[y], y, 0) < 0) {
            printf("寫入 TIFF 文件失敗\n");
            TIFFClose(tiff);
            return 1;
        }
    }
    // 關(guān)閉 TIFF 文件
    TIFFClose(tiff);
    // 釋放幀緩存內(nèi)存
    for (int i = 0; i < HEIGHT; i++) {
        free(frameBuffer[i]);
    }
    free(frameBuffer);
    printf("幀緩存已保存為 frame.tiff\n");
    return 0;
}

其實(shí)編譯成功就說明可以了

在這里插入圖片描述

遇到的問題

直接 ./configure --prefix=/home/hammer/tiff-4.5.0/install --host=arm-none-eabi 會報(bào)錯(cuò)

報(bào)錯(cuò)1:libc.a undefined reference to _exit

stack overflow 社區(qū)有相關(guān)討論 Makefile linking: undefined reference to _exit

根據(jù)討論結(jié)果,在 CFLAGS 中加上 -fno-exceptions --specs=nosys.specs 即可

報(bào)錯(cuò)2:tiff_app.elf uses VFP register arguments, libtiff.a(tif_close.o) does not

說明編譯的 libtiff.a 不帶VFP浮點(diǎn)運(yùn)算,所以在 CFLAGS 中要加上

 -mcpu=cortex-a9 -mfpu=vfpv3 -mfloat-abi=hard

報(bào)錯(cuò)3:\libtiff.a(tif_aux.o): in function TIFFDefaultTransferFunction: tif_aux.c:(.text+0x5e4): undefined reference to `pow’

在C語言中,pow函數(shù)是位于數(shù)學(xué)庫中的一個(gè)標(biāo)準(zhǔn)函數(shù),說明缺少對數(shù)學(xué)庫的鏈接所以在 Libraries 部分,添加鏈接標(biāo)志 -lm

到此這篇關(guān)于在Vitis IDE中使用第三方庫 libtiff 保存 tiff 文件的文章就介紹到這了,更多相關(guān)Vitis IDE使用 libtiff 保存 tiff 文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng)

    C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C++之預(yù)處理功能詳解

    C++之預(yù)處理功能詳解

    預(yù)處理器是 C++ 編譯器提供的一個(gè)工具,允許程序員在編譯之前對源代碼文件做出修改,本文將給大家通過代碼示例詳細(xì)介紹C++的預(yù)處理功能,需要的朋友可以參考下
    2023-05-05
  • 詳解設(shè)計(jì)模式中的Command命令模式及相關(guān)C++實(shí)現(xiàn)

    詳解設(shè)計(jì)模式中的Command命令模式及相關(guān)C++實(shí)現(xiàn)

    這篇文章主要介紹了詳解設(shè)計(jì)模式中的Command命令模式及相關(guān)C++實(shí)現(xiàn),命令模式強(qiáng)調(diào)調(diào)用操作的對象和操作的具體實(shí)現(xiàn)者之間的解耦,需要的朋友可以參考下
    2016-03-03
  • Qt中QSettings配置文件的讀寫和應(yīng)用場景詳解

    Qt中QSettings配置文件的讀寫和應(yīng)用場景詳解

    這篇文章主要給大家介紹了關(guān)于Qt中QSettings配置文件的讀寫和應(yīng)用場景的相關(guān)資料,QSettings能讀寫配置文件,當(dāng)配置文件不存在時(shí),可生成配置文件,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • C語言詳解UDP通信的實(shí)現(xiàn)

    C語言詳解UDP通信的實(shí)現(xiàn)

    UDP協(xié)議是用戶數(shù)據(jù)報(bào)協(xié)議,面向無連接的、不穩(wěn)定、不可靠、不安全的數(shù)據(jù)報(bào)傳遞---更像是是收發(fā)短信;UDP傳輸不需要建立連接,傳輸效率更高,在穩(wěn)定的局域網(wǎng)內(nèi)環(huán)境相對可靠;UDP天然支持多客戶端
    2022-05-05
  • C/C++?引用作為函數(shù)的返回值方式

    C/C++?引用作為函數(shù)的返回值方式

    這篇文章主要介紹了C/C++?引用作為函數(shù)的返回值方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 堆排序算法(選擇排序改進(jìn))

    堆排序算法(選擇排序改進(jìn))

    這篇文章主要介紹了堆排序算法(選擇排序改進(jìn)),有需要的朋友可以參考一下
    2014-01-01
  • C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解

    C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解

    這篇文章主要為大家介紹了C++實(shí)現(xiàn)TCP客戶端及服務(wù)器Recv數(shù)據(jù)篩選處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 使用C++中的ADO對SQLite進(jìn)行增刪改查

    使用C++中的ADO對SQLite進(jìn)行增刪改查

    本文將介紹如何使用C++的ADO (ActiveX Data Objects)對SQLite數(shù)據(jù)庫進(jìn)行增刪改查操作,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-06-06
  • 深入學(xué)習(xí)C語言mmap和shm*的使用方法技巧

    深入學(xué)習(xí)C語言mmap和shm*的使用方法技巧

    本文將詳細(xì)介紹mmap和shm的工作原理,包括它們在內(nèi)存映射和共享內(nèi)存方面的優(yōu)勢和適用場景,同時(shí),文章還會分享一些使用mmap和shm的技巧和經(jīng)驗(yàn),以幫助讀者優(yōu)化并提高程序性能,使你能夠在實(shí)際項(xiàng)目中更好地利用這些技術(shù)來加速數(shù)據(jù)共享和多線程應(yīng)用
    2023-10-10

最新評論

卢湾区| 阿荣旗| 湘乡市| 古交市| 宾阳县| 道孚县| 祁阳县| 承德县| 白城市| 龙里县| 廉江市| 广丰县| 乌拉特前旗| 凤城市| 威宁| 仁布县| 阳曲县| 佛坪县| 綦江县| 景德镇市| 连云港市| 辽中县| 永善县| 阳谷县| 灵宝市| 英山县| 新和县| 临泽县| 东台市| 西畴县| 濉溪县| 清原| 金川县| 绥中县| 株洲市| 淳化县| 九龙县| 双江| 布拖县| 博湖县| 青浦区|