Baumer工业相机堡盟相机如何使用JPEG图像压缩功能(LXT.JP系列相机图像压缩功能的使用和优点以及行业应用)(C++)
创始人
2025-05-30 14:33:47
0

项目场景

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。  

Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。  

Baumer万兆网相机中LXT.JP图像压缩系列相机是一种预处理相机,在相机内部对图像进行JPEG算法压缩然后再传输到处理器中。


技术背景

工业相机的JPEG图像压缩功能有助于减少图像文件的大小,同时保持图像质量。这种压缩功能是基于JPEG(联合摄影专家组)压缩标准,该标准被广泛用于数字摄影和图像编辑。

具有JPEG压缩功能的工业相机可以捕捉高分辨率的图像,并将其压缩成较小的文件,从而使图像的存储、传输和处理更加容易。压缩水平和质量可以根据用户的具体需求进行调整。

在工业相机中使用JPEG压缩的一个优点是,它可以帮助减少数据传输时间,这在需要高速图像处理的机器视觉应用中特别重要。此外,较小的文件大小允许更有效地存储和检索图像,这在工业环境中可以节省时间和金钱。

总的来说,JPEG图像压缩功能是工业相机的一个重要功能,有助于提高高分辨率图像的效率、存储和处理。

代码分析

Baumer工业相机堡盟相机SDK示例中008_Trace.cpp详细介绍了如何配置相机偏振功能。

软件SDK示例地址如下所示:Baumer_GAPI_SDK_2.12.0_win_x86_64_cpp\examples\src\0_Common\008_Polarized\008_Polarized.cpp

本例描述了对堡盟JPEG相机的处理。给出的源代码适用于处理一个系统、一台相机和十幅图像。

代码整体结构相对简单,在相机初始化后进行工业相机的JPEG图像压缩功能使用,部分核心代码如下:

std::cout << "DEVICE PARAMETER SETUP" << std::endl;
std::cout << "######################" << std::endl << std::endl;try {// SET TRIGGER MODE OFF (FreeRun)pDevice->GetRemoteNode("TriggerMode")->SetString("Off");std::cout << "         TriggerMode:             "<< pDevice->GetRemoteNode("TriggerMode")->GetValue() << std::endl;// JPEGTAG01 (see description on top)// check for JPEG capable cameraif (pDevice->GetRemoteNodeList()->GetNodePresent(kImageCompressionMode.c_str())) {BGAPI2::NodeMap* image_compression_map =pDevice->GetRemoteNode(kImageCompressionMode.c_str())->GetEnumNodeList();if (image_compression_map->GetNodePresent(kImageCompressionModeJPEG.c_str())) {jpeg_streaming_capable = true;std::cout << "         JPEG Supported:          Yes" << std::endl;} else {std::cout << "         JPEG Supported:          No, Feature '" <GetRemoteNode("PixelFormat")->GetEnumNodeList();std::string pixel_format = "YCbCr422_8";if (!pixel_format_enum_map->GetNodePresent(pixel_format.c_str()) || (pixel_format_enum_map->GetNodePresent(pixel_format.c_str()) && !pixel_format_enum_map->GetNode(pixel_format.c_str())->IsReadable())) {pixel_format = "Mono8";if (!pixel_format_enum_map->GetNodePresent(pixel_format.c_str()) ||(pixel_format_enum_map->GetNodePresent(pixel_format.c_str()) && !pixel_format_enum_map->GetNode(pixel_format.c_str())->IsReadable())) {pixel_format = "";}}if(!pixel_format.empty() && pDevice->GetRemoteNode("PixelFormat")->IsWriteable()) {pDevice->GetRemoteNode("PixelFormat")->SetString(pixel_format.c_str());std::cout << "         PixelFormat:             "<< pDevice->GetRemoteNode("PixelFormat")->GetValue() << std::endl;// JPEGTAG03 (see description on top)// set the compression mode to JPEGpDevice->GetRemoteNode(kImageCompressionMode.c_str())->SetValue("JPEG");} else {std::cout << "         PixelFormat:             "<< pDevice->GetRemoteNode("PixelFormat")->GetValue() << " (set to Mono8/YCbCr failed, not supported or no write accees)" << std::endl;}}std::cout << std::endl;
}
catch (BGAPI2::Exceptions::IException& ex) {returncode = (returncode == 0) ? 1 : returncode;std::cout << "ExceptionType:    " << ex.GetType() << std::endl;std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl;std::cout << "in function:      " << ex.GetFunctionName() << std::endl;
}

下面功能为开启了JPEG图像压缩功能后,如何进行图像保存的功能方法,核心代码如下:

// CAPTURE 12 IMAGES
std::cout << " " << std::endl;
std::cout << "CAPTURE " << num_to_capture << " IMAGES BY IMAGE POLLING" << std::endl;
std::cout << "##################################" << std::endl << std::endl;BGAPI2::Buffer * pBufferFilled = NULL;
try {// capture num_to_capture imagesfor (unsigned int i = 0; i < num_to_capture; i++) {pBufferFilled = pDataStream->GetFilledBuffer(1000);  // timeout 1000 msecif (pBufferFilled == NULL) {std::cout << "Error: Buffer Timeout after 1000 msec" << std::endl;} else if (pBufferFilled->GetIsIncomplete() == true) {std::cout << "Error: Image is incomplete" << std::endl;pBufferFilled->QueueBuffer();} else {std::cout << " Image " << std::setw(5) << pBufferFilled->GetFrameID()<< " received in memory address "<< std::hex << pBufferFilled->GetMemPtr() << std::dec << std::endl;// JPEGTAG05 (see description on top)// save the compressed images to disk if supportedif (jpeg_streaming_capable) {std::string jpeg_file = "022_JPEGCapture_";std::stringstream jpeg_filename;size_t jpeg_start_offset = pBufferFilled->GetImageOffset();size_t jpeg_end_offset = jpeg_start_offset + pBufferFilled->GetImageLength();if (jpeg_end_offset != 0) {jpeg_filename.str("");jpeg_filename << jpeg_file << std::setw(6) << std::setfill('0')<< pBufferFilled->GetFrameID() << ".jpg";std::ofstream outfile;outfile.open(jpeg_filename.str().c_str(), std::ios_base::binary);outfile.write(reinterpret_cast(pBufferFilled->GetMemPtr()) + jpeg_start_offset,jpeg_end_offset - jpeg_start_offset);std::cout << "JPEG Data found. Image saved as JPEG file." << std::endl;} else {std::cout << "JPEG Data not found in image buffer. No JPEG Saved." << std::endl;}}pBufferFilled->QueueBuffer();}}
}
catch (BGAPI2::Exceptions::IException& ex) {returncode = (returncode == 0) ? 1 : returncode;std::cout << "ExceptionType:    " << ex.GetType() << std::endl;std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl;std::cout << "in function:      " << ex.GetFunctionName() << std::endl;
}
std::cout << " " << std::endl;std::cout << "CAMERA STOP" << std::endl;
std::cout << "###########" << std::endl << std::endl;

JPEG图像压缩功能的优势

1.JPEG
在好的压缩比下能够得到高质量的图片(例如 1:10)
被广泛接受的标准格式,通过MJPEG压缩得到AVI 视频成为可能
2.使处理过程变的简单
不PC软件压缩相比,降低了CPU的负载
在一台PC上可使用多台JPEG相机,有效降低成本
3.传输需要更低的带宽
在更低带宽接口上确保高分辨率和高速的数据传输
通过使用交换机支持远距离传输,有效降低成本
4.存档所需的存储空间更小
更长的存储时间,更低的存储介质成本
5.自由度更高,灵活性得以发挥
对应不同应用的需求更具有灵活性和自由度


JPEG图像压缩功能的行业应用


工业相机的JPEG图像压缩功能可广泛用于许多行业应用,如。

1. 监视。JPEG压缩功能可以为视频监控系统有效地存储和传输高质量的图像。

2. 医学成像。医疗成像系统经常使用 JPEG 压缩来存储和传输医疗图像。

3. 工业检查。工业检查系统可以使用 JPEG 压缩来存储生产过程中的缺陷或异常的图像。

4. 农业。在农业应用中,JPEG压缩可以被用来捕获和存储农作物和牲畜的图像。

5. 运输。在运输系统中,JPEG压缩可以用来存储和传输由放置在车辆上的摄像机所拍摄的图像,以保证安全和安保。

总的来说,JPEG图像压缩功能在许多工业应用中是一个必不可少的功能,因为它可以有效地存储和传输高质量的图像,提高生产力和减少运营成本。

相关内容

热门资讯

最新或2023(历届)发布的高...  作为中央部署全面深化改革的重大举措之一,国家关于考试招生制度改革的实施意见4日正式发布,这也是恢复...
最新或2023(历届)高考新政...   考试之变  1 省内统一组织 学业水平考试  高中学业水平考试是检验学生学习程度、避免严重偏科的...
思维导图模板怎么制作?提供几种... 思维导图是一种非常有用的图形化思维工具。它可以帮助我们更好地组织、整理和表达头脑中的想法。在学习中&...
最新高考改革新政:不分文理科目...  “最新或2023(历届)启动考试招生制度改革试点,最新或2023(历届)全面推进。”国务院《关于深...
最新或2023(历届)起自主招...   9月4日上午十点,国务院新闻办召开新闻发布会,教育部副部长杜玉波、刘利民及部长助理林蕙青介绍《关...
Golang实现0-1背包问题... Golang实现0-1背包问题方案(动态规划-贪心算法-回溯-分支定界) 算法实现说明 动态规划算法...
最新或2023(历届)高考改革...   9月4日上午十点,国务院新闻办召开新闻发布会,正式公布我国考试招生制度改革方案。对于本次改革方案...
关于 连接mysql报错“ss... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
最新或2023(历届)淮南师范... 淮南师范学院始建于1958年,2000年3月经国家教育部批准升格为本科学校。学校坐落于国家重要能源城...
最新或2023(历届)重庆大学... 重庆大学是教育部直属的全国重点大学,是国家“211工程”和“985工程”重点建设的高水平研究型综合性...
唐山学院优势专业排名,最新或2... 唐山学院优势专业排名,最新或2023(历届)唐山学院专业排名唐山学院优势专业排名 高考填报志愿时,唐...
哈尔滨学院优势专业排名,最新或... 哈尔滨学院优势专业排名,最新或2023(历届)哈尔滨学院专业排名哈尔滨学院优势专业排名 高考填报志愿...
防火墙双通道协议、NAT、双机... 目录 1. 防火墙如何处理双通道协议? 2. 防火墙如何处理nat? ...
最新或2023(历届)河南对口... 报名  最新或2023(历届)普通高校对口招收中等职业学校太阳教育网(以下简称“对口招生”)报名工作...
黑龙江工程学院优势专业排名,最... 黑龙江工程学院优势专业排名,最新或2023(历届)黑龙江工程学院专业排名黑龙江工程学院优势专业排名 ...
安阳工学院优势专业排名,最新或... 安阳工学院优势专业排名,最新或2023(历届)安阳工学院专业排名安阳工学院优势专业排名 高考填报志愿...
密度泛函理论-从波函数到电荷密... 1 在许多物理学和工程领域中,取得科学和技术进步关键在于能够从原子或者分子尺寸...
最新或2023(历届)河南对口... 考试  (一)文化课考试由各省辖市、省直管县(市)招办参照普通高考的有关规定负责组织实施。省辖市集中...
最新或2023(历届)河南对口... 各省辖市招生办公室、省直管县(市)招生办公室,各普通高校:  根据《河南省教育厅关于对口招收最新或2...
河南大学郑州大学西亚斯国际学院... 河南大学、郑州大学西亚斯国际学院本科表演专业和体育教育专业招生 (一)表演专业 根据教育...