basler 相机使用出现的问题
来源:互联网 发布:淘宝如何设置冰点促销 编辑:程序博客网 时间:2024/05/29 08:48
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<height_src;row++)for(int col=0;col<width_src;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<hist_size;i++){float bin_val = cvQueryHistValue_1D(r_hist,i);fea[i] = bin_val;}for(int i = 0;i<hist_size;i++){float bin_val = cvQueryHistValue_1D(g_hist,i);fea[i + 8] = bin_val;}for(int i = 0;i<hist_size;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 Pylon工业相机SDK的使用
- basler相机使用记录
- 关于Linux环境下使用Basler GigE相机的一些问题
- 关于basler相机sample使用的一些说明
- Basler|基于OpenCV的Basler相机采集图像程序
- Basler|basler设置相机参数
- Basler相机采集的彩色图像转换到opencv中Mat的问题
- Linux下采用QT creator操作Basler GigE相机的使用步骤总结
- Qt(C++)调用工业相机Basler的SDK简单使用示例
- basler设置相机参数
- basler相机采集程序
- Qt+BASLER相机+OpenCV
- Qt(C++)项目中使用 Basler 工业相机(1)
- Linux环境中连接Basler相机(Pylon软件的安装),ROS环境中连接Basler相机
- basler相机硬件连接设置
- 相机使用遇到的问题
- Qt(C++)项目中使用 Basler 工业相机(2 参数设置)
- 【BZOJ 1433】 [ZJOI2009]假期的宿舍
- 【BZOJ 1934】 [Shoi2007]Vote 善意的投票
- 【BZOJ 2705】 [SDOI2012]Longge的问题
- 【BZOJ 3990】 [SDOI2015]排序
- 【洛谷 1345】 奶牛的电信
- basler 相机使用出现的问题
- 【洛谷 1991】 无线通讯网
- 【CodeVS 1540】银河英雄传说 2002年NOI全国竞赛
- 【BZOJ 1798】[Ahoi2009]Seq 维护序列seq
- 【洛谷 2161】 [Shoi2009]Booking 会场预约
- 【BZOJ 1012】 [JSOI2008]最大数maxnumber
- 【洛谷 1357】 花园
- 【洛谷 1338】 末日的传说
- 【BZOJ 1856】 [Scoi2010]字符串