basler 相机取图超时,basler 相机使用出现的问题
1. 周一遇到的问题:在windows下遇到的情况是:
如果我在学习的情况下,直接编译(不正常退出),那么第二次重新编译,运行,运行到camera_open 的时候就会
报错。 只能重新插拔一下才能解决掉这个问题。basler 的相机群里,有人给的建议是加一个断电重连的操作。
我看了一下,需要一个类,就没有加。后来直接在 baslercamer的.cpp 文件下面加了:
class CHeartbeatHelper
{
public:
explicit CHeartbeatHelper(CInstantCamera& camera)
: m_pHeartbeatTimeout(NULL)
{
// m_pHeartbeatTimeout may be NULL
m_pHeartbeatTimeout = camera.GetTLNodeMap().GetNode("HeartbeatTimeout");
}
bool SetValue(int64_t NewValue)
{
// Do nothing if no heartbeat feature is available.
if (!m_pHeartbeatTimeout.IsValid())
return false;
// Apply the increment and cut off invalid values if neccessary.
int64_t correctedValue = NewValue - (NewValue % m_pHeartbeatTimeout->GetInc());
m_pHeartbeatTimeout->SetValue(correctedValue);
return true;
}
bool SetMax()
{
// Do nothing if no heartbeat feature is available.
if (!m_pHeartbeatTimeout.IsValid())
return false;
int64_t maxVal = m_pHeartbeatTimeout->GetMax();
return SetValue(maxVal);
}
protected:
GenApi::CIntegerPtr m_pHeartbeatTimeout; // Pointer to the node, will be NULL if no node exists.
}; 在init 下面加了:
CHeartbeatHelper headbeatHelper(*m_camera);
headbeatHelper.SetValue(1000);
解决了 不正常退出,在连摄像头就open 不了的情况。
2。 周二是三八节 上午想起来看一下 break,continue 跟return 的区别在哪里。
http://blog.chinaunix.net/uid-27007072-id-3345092.html
break 是跳出循环,continue 是跳出本次循环。return 是退出函数
int Picture(float *)
{
while(1){
for(i=0;i<10;i++)
{
if()
{
if()
{
break; // 直接退出
contine;
return;
}
}
}// break 和continue; 都是跳出到这儿。
}//end while
}// end function // return 是出来这儿。
3. 把程序移植到 linux 下,出现的现象是 摄像头时好时不好。
这个bug 比较隐蔽---调试了1天半。 主要是设置的numROI=2 实际上我只初始化了一个。
导致摄像头有时候能正常工作,很多的时候只能显示一半。
调试这个bug,我接受了,技术支持的建议,就是getData 之后的图片打印出来,如果这部分是完整的,说明得到 的数据是对的。
4. 这个bug 好像还有,但是后来我怎么都找不到了。 是在
void gethistArray(IplImage *src,IplImage *msk, float fea[24])
{
IplImage* r_plane = cvCreateImage(cvGetSize(src),8,1);
IplImage* g_plane = cvCreateImage(cvGetSize(src),8,1);
IplImage* b_plane = cvCreateImage(cvGetSize(src),8,1);
cvCvtPixToPlane(src,b_plane,g_plane,r_plane,0);//openCV里面的一个函数,可以看作cvSplit是他的宏:#define cvCvtPixToPlane cvSplit
//注意顺序为BGR,OpenCV中不管是Windows中Load的还是摄像头取得的都是BGR顺序排列的
//计算直方图
//int h_bins = 100,s_bins = 32;
int hist_size = 8;
float range[] = {1,255};
float* ranges[] = {range};
CvHistogram* r_hist = cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);
CvHistogram* g_hist = cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);
CvHistogram* b_hist = cvCreateHist(1,&hist_size,CV_HIST_ARRAY,ranges,1);
int width_src=r_plane->width;
int height_src=r_plane->height;
for (int row=0;row
for(int col=0;col
{
if((msk->imageData[row*height_src+col])<250)
{
r_plane->imageData[row*height_src+col]=0;
g_plane->imageData[row*height_src+col]=0;
b_plane->imageData[row*height_src+col]=0;
}
}
cvCalcHist(&r_plane,r_hist,0,0);
cvCalcHist(&g_plane,g_hist,0,0);
cvCalcHist(&b_plane,b_hist,0,0);
for(int i = 0;i
{
float bin_val = cvQueryHistValue_1D(r_hist,i);
fea[i] = bin_val;
}
for(int i = 0;i
{
float bin_val = cvQueryHistValue_1D(g_hist,i);
fea[i + 8] = bin_val;
}
for(int i = 0;i
{
float bin_val = cvQueryHistValue_1D(b_hist,i);
fea[i + 16] = bin_val;
}
cvReleaseHist(&r_hist); // 下面新加上去的
cvReleaseHist(&g_hist);
cvReleaseHist(&b_hist);
cvReleaseImage(&r_plane);
cvReleaseImage(&g_plane);
cvReleaseImage(&b_plane);
}调试的方法是 gdb ./Main
run
然后想办法让程序报错。
然后 backtrace 能看到在程序的那一个函数里面报错的。
然后我们在这个函数里面加打印语句,确认是哪个函数哪里报错的。
显示是cvSplit 这个函数报错了。但是后来这个错误就不出来了。
4. 打包.SO 的时候出现
error adding symbols: 错误的值
错误原因是:修改makefile 编译动态库的时候 --fPIC gcc --fPIC -shared XXXXX -o XX XXXX
5。打包的.so 怎么被调用:
把.so 像opencv 的。so一样编译就可以了。在 下面放上所有的.h 文件
重新make
6。把 test_so 放到工控机下去测试,出现的问题是:
在当前的目录下找不到 bobbin.so
可是我的相应目录下明明有 bobbin.so
使用:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
把寻找。so 的文件放在当前目录下。
使用 ldd Main 看看需要的。so 文件是不是都在这个目录下
发现opencv_core.so.2.4 不在这个目录下。
解决方法是: 在LZQ的电脑下使用locate opencv_core.so.2.4 可以找到所有opencv_core.so.2.4 的路径。
把缺少的。so 文件copy 到工控机下。
执行./Main 报错 :bus error
目前bus error 无解 。目前我正在装我电脑的ububtu 看移植到ubuntu 下是不是相同的问题。
GOD bless me
basler 相机取图超时,basler 相机使用出现的问题相关推荐
- basler 相机取图超时_Opencv打开basler相机——实现显示视频、保存图片、记录视频(Windows下)...
//定义是否保存图片 #define saveImages 0 //定义是否记录视频 #define recordVideo 0 // 加载OpenCV API #include #include # ...
- basler 相机取图超时_一款Basler相机拍图问题(单次拍照时间过长,连续拍照正常)的处理经验...
这款Basler相机1000W像素.GigE 接口,不用独立供电. 它的故障现象为:halcon连续采图,有10帧的速度,但是单次采图有580毫秒. 这种情况按经验一般怀疑下面的问题: (1)网卡驱动 ...
- basler 相机取图超时_Basler|基于OpenCV的Basler相机采集图像程序
采用Basler4.0SDK编写,利用Event机制在回调函数中生成灰度图像 回调函数中图像生成代码,利用CCD中获取的无符号字符型数组转变成 Mat类型 Mat grab( siz, CV_8UC1 ...
- 关于Cxp采集卡连接大面阵相机取图耗时问题研究
前言 就目前为止,使用面阵相机的话,我一般都使用海康的SDK,最近几年,开始使用Cxp采集卡的大面阵相机,继续使用海康的SDK取图 现象 最近发现使用151M大面阵相机取图时,彩色的图比黑百图慢了很多 ...
- 海康工业相机排雷笔记04-工业相机取图流程
在刚开始使用工业相机时,大多数人(包括我)可能都会误认为工业相机二次开发中的取图过程就是把图像数据从相机内部的寄存器中拿到内存中,这也会对取图过程及耗时等方面产生很多误解,下面会简单叙述下我个人的理解 ...
- VisionPro,Gige相机取图
Step1.首先获取一个CogFrameGrabberGigEs对象:这是单个抓取对象的集合,每个访问都通过一个ICogFrameGrabber接口访问.每一个ICogFrameGrabber都代表一 ...
- ORB-SLAM2配置自己的RGB-D相机(图漾深度相机)
ORB-SLAM2配置自己的RGB-D相机 网上配置安装ORB-SLAM2的教程有很多,教程里面也会列举许多常见的编译bug 教程链接:ORB-SLAM2 一般来讲,使用openni来读取相机信息发布 ...
- VisionMaster4.2.0 联合C#实现相机SDK取图
VisionMaster4.2.0 联合C#实现相机SDK取图 一.相机取流 1.1 设备连接接口流程 1.2 主动取流 1.3 回调取流 二.VisionMaster 图像源SDK取图 一般情况下, ...
- Basler 多个网口相机出图(SDK版)
利用basler相机自带的SDK进行多相机出图,为了便于理解,特将多相机出图部分的程序拷贝出来,在win32控制台环境下,配合OpenCV进行出图测试. 运行环境:VS2013.OpenCV2410 ...
- 富士相机设置传原图_富士X-S10相机传图必看!原创完美解决PC互传图片问题
富士X-S10相机传图必看!原创完美解决PC互传图片问题 2020-11-28 17:03:04 18点赞 28收藏 23评论 创作立场声明:原创首发分享,实用技巧希望推荐好文! 最近入手了富士X-S ...
最新文章
- mybatis配置文件解析
- ad18修改过孔和走线间距_Altium Designer设计PCB--如何设置铺铜与导线或过孔的间距...
- Linux-Learning
- python 30分钟_一张图30分钟快速Python入门
- linux eclipse下qt开发环境搭建,Qt Eclipse开发环境的部署 上篇
- 【POJ2387】Til the Cows Come Home (最短路)
- 【解题报告】Leecode 372. 超级次方——Leecode每日一题系列
- 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
- zClock - 置顶时钟, 倒计时, 网速显示
- 手机端测试时用的几个软件
- web.py开发web 第一章 Hello World
- Python数据库编程pymysql
- Jupyter Notebook使用说明
- dlut-KFQ概率上机2
- 发票编号识别、验证码识别 ,图像分割
- Metadata Lock原理4
- 省市县地区编码五级联东2021年版sql
- 公差基本偏差代号_基本偏差代号公差等级代号.ppt
- 天正2014打开加载lisp_win10系统设置CAD2014打开自动加载天正的恢复方法
- html5进度条progress使用实例,HTML5中的进度条progress元素详解