我是靠谱客的博主 乐观果汁,最近开发中收集的这篇文章主要介绍PallasSDK - 图像采集及BMP存储序BMP存储更简单的采集Demo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在熟悉大恒的 PallasSDK,在其提供的 sample - GxSingleCamMono 中,将采集到的图像保存为 ppm格式。虽然这种格式 OPenCV 也支持。但是我就是想给它增加点东西,保存为 BMP格式。

C应用 -BMP图片存储格式及生成 中,介绍了 BMP的存储格式 及如何使用C语言生成图像。

现在我们把它搬到 SDK中,获取一帧数据(一般相机的SDK都会提供),保存为bmp格式

其实很简单~ 其实并不难~

BMP存储

值得注意的是:对于 8bit灰度图,需要使用 调色版,否则 BMP图像 显示是不正常的

void SaveBMPFile(unsigned char *image,uint32_t w,uint32_t h)
{
   
    int l = (w*3+3)/4*4;

    //调色板
    unsigned char *palette = new unsigned char[256*4];
    for (int i = 0; i < 256; ++i)
    {
   
        palette[i*4] = i;
        palette[i*4 + 1] = i;
        palette[i*4 + 2] = i;
        palette[i*4 + 3] = 0;
    }
    
    int bmi[]= {
   l*h+54+1024,0,54+1024,40,w,-h,1|((8)<<16),0,l*h,0,0,0,0};
    //创建/打开文件
    FILE *fp = fopen("bmpimage.bmp","wb");
    //写入BMP标志
    fprintf(fp,"BM");
    //写入位图头文件信息+信息数据
    fwrite(&bmi,52,1,fp);
    //写入调色板
    fwrite(palette,1024,1,fp);
    //写入位图数据
    fwrite(image,1,g_nPayloadSize,fp);
    fclose(fp);
}

更简单的采集Demo

个人认为,GxSingleCamMono 还不够简单。

分享我修改后的 demo

#include "GxIAPI.h"
#include "DxImageProc.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>


//设备句柄
GX_DEV_HANDLE g_hDevice = NULL;
//image buffer
unsigned char* g_pMonoImageBuf = NULL; 
int64_t g_nPayloadSize = 0; 

#define PIXFMT_CVT_FAIL         -1              ///< PixelFormatConvert fail
#

最后

以上就是乐观果汁为你收集整理的PallasSDK - 图像采集及BMP存储序BMP存储更简单的采集Demo的全部内容,希望文章能够帮你解决PallasSDK - 图像采集及BMP存储序BMP存储更简单的采集Demo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部