概述
序
最近在熟悉大恒的 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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复