Baumer工业相机堡盟相机BGAPI SDK如何实现显示相机帧率和网口数据通量(C++)

328 篇文章 8 订阅
订阅专栏

项目场景:

Baumer工业相机堡盟相机传统开发包BGAPI SDK进行工业视觉软件整合时,常常需要将SDK中一些功能整合到图像处理软件中,方便项目的推进使用;

注意:本文是基于Baumer的BGAPI SDK的基础上使用C++语言来实现相机帧率和网口数据通量的实时显示。
 


问题描述

在项目的图像处理任务中,有时需要将相机的帧率实时显示在图像处理软件的界面上。

但是Baumer BGAPI SDK上没有直接显示帧率的方法函数,这就需要小伙伴们结合SDK自己去写一个了


实现方法步骤1:确认帧率信息

基本上所有的相机图像数据都有一个FrameID,从开启采集后不断增加,一般情况下都是根据FrameID来计算当前相机的实时帧率。

首先,FrameID一般出现在相机图像的回调函数里,先定义全局变量FrameID去获取相机的FrameID。

FrameID在回调函数的代码如下所示

void BGAPI2CALL BufferHandler( void * callBackOwner, Buffer * pBufferFilled )
{
	CGigeDemoDlg* pDlg = (CGigeDemoDlg*)callBackOwner;
	unsigned char* imagebuffer = NULL;
	USES_CONVERSION;
	try
	{
		if(pBufferFilled == NULL)
		{

		}
		else if(pBufferFilled->GetIsIncomplete() == true)
		{
			// queue buffer again
			pBufferFilled->QueueBuffer();
		}
		else
		{
			
			pDlg->FrameID= pBufferFilled->GetFrameID(); //获取当前图像FrameID显示帧率                                             
        }
    }
	catch (BGAPI2::Exceptions::IException& ex)
	{
		CString str;
		str.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());		
	}	

实现方法步骤2:定义显示线程

2、在头文件里定义一个线程去显示对应帧率的变化。

static UINT ShowFrame_hThread1(LPVOID pParam);//该线程的调用函数 
void SetShowFrame();//在这个函数中编写该线程需要完成的任务 

实现方法步骤3:实现线程方法

3、实现定义的线程方法,通过每秒的计算方式实时计算出相机的图像采集速度帧率

代码如下所示:

UINT CGigeDemoDlg::ShowFrame_hThread1(LPVOID pParam)
{
	CGigeDemoDlg *dlg = (CGigeDemoDlg *)pParam;
	dlg->SetShowFrame();
	return 0;
}

void CGigeDemoDlg::SetShowFrame()
{
	try
	{
		
		while (m_bRun0)
		{
			if(FrameID>0)
			{
				double CurFrameID1 = FrameID;
				Sleep(1000);
				double CurFrameID2 = FrameID;
				double CalFrameID =(CurFrameID2-CurFrameID1)*1 ;

				//ShowFrame_hThread1->g_criticalsection.Lock(); //边界锁锁定
				 同步锁中间可添加需要保护的操作代码,如操作txt文档读、看、写时等。
				//ShowFrame_hThread1->g_criticalsection.Unlock();//边界锁解除

				if(m_pDataStream!=NULL)
				{
					try
					{
						BGAPI2::NodeMap* pDataStreamNodeList = m_pDataStream->GetNodeList();
						if (m_pDataStream->GetTLType() == "GEV") 
						{
							float m_CurStreamBitrateDouble = pDataStreamNodeList->GetNode("Bitrate")->GetDouble();
							m_CurStreamBitrate.Format(_T("%.2f"),m_CurStreamBitrateDouble);
							GetDlgItem(IDC_STCURBITRATE)->SetWindowText(m_CurStreamBitrate+_T(" MBit/s")); //获取网口数据量并显示出来
						}
					}
					catch (CMemoryException* e)
					{}
										
				}
				
				CString CurFameratestr;
				CurFameratestr.Format(_T("%.1f"),CalFrameID);                  //获取帧率并显示出来
				m_Cursetframe = CurFameratestr;
				GetDlgItem(IDC_STCURFRAME)->SetWindowText(CurFameratestr);
						

			}

		}

	}
	catch (int e)
	{
		MessageBox(_T("Camera SetShowimage Error"));

	}
}

实现方法步骤4:启动线程

4、在相机的启动时同时启动该线程

代码如下所示:

void CGigeDemoDlg::OnBnClickedBtnplay()
{
	// TODO: 在此添加控件通知处理程序代码
	USES_CONVERSION;
	if(m_pDevice != NULL)
	{
		try
		{
			m_pDevice->GetRemoteNode("TriggerMode")->SetString("Off"); //关闭触发模式,进入自由采集图片流模式
			m_pDevice->GetRemoteNode("AcquisitionStart")->Execute();
			#pragma region 线程显示帧率和网口数据通量(做参考)
			m_bRun0 = true;
			AfxBeginThread(ShowFrame_hThread1, (void*)this);			
			#pragma endregion 

		}
		catch (BGAPI2::Exceptions::IException& ex)
		{
			CString str1;
			str1.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
			MessageBox(str1);
		}
	}
	
}

实现方法步骤5:停止显示线程

5、如何关闭该线程,在相机关闭时需要正常关闭。

代码如下所示:

void CGigeDemoDlg::StopShowFrame_hThread1()
{
	
	m_bRun0  = FALSE;								  //停止帧率和网口数据通量线程执行
	WaitForSingleObject(ShowFrame_hThread1,200);	  //一直等待对应线程退出
	Sleep(2000);                                      //线程停止缓冲时间
	/*DWORD exitcode2;
	GetExitCodeThread(ShowFrame_hThread1,&exitcode2);
	ExitThread(exitcode2);   */
}

实现方法步骤6:帧率和网口数据通量显示

6、完成上面的操作后,在相机初始化并开启采图后就可以开启相机当前帧率和网口数据通量的显示

写文章

热门文章

  • 工业相机的帧率和曝光(快门)之间的关系 4853
  • 如何使用OpenAi的ChatGPT咨询AI有关于Baumer工业相机的品牌国际知名度 4193
  • Baumer工业相机VCX系列相机硬件触发流程和设置 3351
  • Baumer工业相机中曝光与增益两种功能的优点和作用以及使用方法 3349
  • 工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版) 3172

分类专栏

  • 工业相机 328篇
  • 机器视觉 139篇
  • 机器视觉工业相机图像转换
  • 智能相机 2篇
  • opencv 11篇
  • 图像处理 71篇

最新评论

  • Baumer工业相机堡盟工业相机如何进行多个工业相机IP地址配置

    w王鲜森: 您好 这个问题您解决了吗

  • Baumer工业相机堡盟工业相机如何通过BGAPISDK建立线程监控相机的温度(C#)

    征途黯然.: 表情包The description of Baumer工业相机堡盟工业相机如何通过BGAPISDK建立线程监控相机的温度C is very vivid and has given me a deeper insight. I hope to see more content in the future!

  • Baumer工业相机堡盟工业相机如何通过BGAPISDK的软触发实现两相机同步采集(C++)

    Timor1111111111: 493467205@qq.com

  • Baumer工业相机堡盟工业相机如何通过BGAPISDK的软触发实现两相机同步采集(C++)

    Timor1111111111: 能求一份完整代码吗

  • Baumer工业相机堡盟相机彩色相机如何实现白平衡

    exijk36300: 请问这里提到的,最后将格式改回BayerRG8保证采集速率,相机内部是否做了以下工作:sensor原始raw(BayerRG8)->去马赛克等ISP处理功能(RGB格式)->处理后的bayerRG8格式(传输用)

大家在看

  • 学霸带你游戏角度看 Linux 进程调度应用
  • JSON WEB TOKEN 的介绍
  • SpringMVC 中的 RESTful 编码风格案例详解 908
  • Python环境和PyCharm搭建教程
  • 计算机专业毕业设计选题推荐-基于python的网络热门小说数据可视化分析

最新文章

  • Baumer工业相机堡盟工业相机如何通过BGAPISDK进行定序器编程:堡盟相机双快门操作(C语言)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK联合OpenCV进行Mat图像转换(C#)
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C语言)
2024
09月 17篇
08月 17篇
07月 2篇
06月 3篇
05月 6篇
04月 23篇
03月 8篇
01月 37篇
2023年222篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格林威

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

天下网标王网站怎么优化必丝云速捷精选南京网站优化首页松岗网站优化企业江苏省网站优化渠道文山网站优化方式南庄网站优化多少钱重庆网站收录优化靖州网站优化排名西苑社区网站seo优化推荐销售行业网站优化团队聊城网站优化排名价格如何提高网站优化seo大名网站优化公司马鞍山市网站优化普陀区官方网站优化哪家好铜川网站优化案例长安网站优化与优化价格网站优化中domain什么意思贵阳推广优化公司网站网站的优化步骤徐州网站优化经验福田怎么在各大网站优化优化东莞网站优化什么价格阳江网站优化公司如何佛山网站优化公司如何谷歌外贸网站怎么优化网站优化怎么做比较好代码优化网站句容优化网站公司增城网站的优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化