使用海康工业相机sdk开发。语言C++,环境Qt,Ubuntu16.04
1.海康相机官网标称帧率为22fps,实际应用时发现只有4fps左右。后来确定为图像位深造成。
官方sdk,8位图像只支持mono 和bayer bg8 格式输出。所以,要修改官方图像转换
的Demo.
2.实验证明,并不用自己写bayer图像转换的函数。opencv就可以完成转换。但一定注意Bayer
图像是单通道图像。
Mat Convert2Mat(MV_FRAME_INFO_EX* psImageInfo,unsigned char* pData)
Mat retImg;
if(psImageInfo->enPixelType==PixelType_Gvsp_Mono8)
retImg = cv::Mat(pstImageInfo->nHeight,pstImageInfo->nWidth,CV_8UC1,pData);
else if(psImageInfo->enPixelType == PixelType_Gvsp_BayerBG8)
retImg = cv::Mat(pstImageInfo->nHeight,pstImageInfo->nWidth,CV_8UC1,pData);
cvtColor(retImg,retImg,COLOR_BayerBG2BGR);
else if(psImageInfo->enPixelType == PixelType_RGB8_Packed)
retImg = cv::Mat(pstImageInfo->nHeight,pstImageInfo->nWidth,CV_8UC3,pData);
//print something
return retImg;
linux版本环境比较麻烦,要注意自己的硬件系统是x86还是ARM等等,
我个人是ubuntu18
https://www.hikrobotics.com/cn/machinevision/service/download?module=0在海康官方下载其linux版本的MVS,下载完成后有很多版本的,根据自己电脑是x86或者arm来选择解压,同时在其中文文档中根据要求需要配置好环境变量!!!
文件夹中的海康文档给出了命令行
可以在终端中输入export查看环境变量是否导入了路径
第一次添加环境变量后需要重启(这点可能因人而异)
压缩包中有两个文件夹
一个是直接运行的脚本
一个是封装成类
根据需要自取,运行hik2cv.py即可
1.不会转换格式先找demo
开发海康相机sdk联合opencv的时候,格式转换问题搞了整整一天,一开始不知道如何将抓图得到的数据转成opencv的Mat格式用于图像处理,于是开始找海康自带的demo和开发手册,在这里也建议最好看第一时间就看开发手册及自带demo。我一开始是在下载的sdk里找demo,后面发现下载mvs(海康的客户端)的安装...
在机器视觉开发过程中,经常使用工业相机采集图像,以下采用海康机器人提供的SDK开发demo,使用语言C++,界面显示使用的Qt。SDK来自MVS 3.1版本中附属的Development文件夹。
海康工业相机常用参数修改以及使用OpenCV-Python采集图像一、调节相机参数1.调节曝光时间2.修改图像尺寸和像素格式3.保存参数二、Python采集成opencv可识别格式,并用opencv显示
最近需要工业摄像头给之前的python项目做采集任务,于是选了海康的工业相机,对于单纯做采集任务而不想深究的人来说看繁杂的开发文档很麻烦,所以把这两天的工作总结一下,希望能对后面用海康相机的新手有帮助。
一、调节相机参数
用海康的MVS就可以调节参数。
1.调节曝光时间
接好相机打开MVS,在右边常用属
C++ 大恒水星相机的单帧采集及回调采集 利用OpenCV转成 Mat格式
最近购买一大恒水星MER-310-12UC型彩色相机,其SDK在2019年进行了更新,与之前SDK有很大不同,故现在网上资料较少,将一些简单的采集转换操作过程进行总结,后一篇将介绍与QT结合在软件界面中进行视频播放等操作。 环境是Win10,VS2017, OpenCV3.4
1. 使用手册阅读
首先我们要在其官网下...
最近做项目用到工业摄像头,其输出最小的数据流是Bayer8,因为带宽有限,只好选用之。
在获得数据后,解析成了比较要命的问题,因为ffmpeg等比较简单的工具没有该格式对其他格式的装换,因此只能自行实现。在这里万分感谢下面这个博客
https://blog.csdn.net/leng_que/article/details/5961436
本人基本上是按照该博客修改出了自己能用的版本(直接照...
海康彩色工业相机图像格式转换方法1.彩色相机是如何变成彩色的-Bayer的由来2.工业相机支持的图像格式3.图像格式转化
1.彩色相机是如何变成彩色的-Bayer的由来
提到工业相机图像格式,尤其是彩色相机的图像格式,不得不先讲一下bayer图像格式,网上有很多介绍这种图像格式的文档,随意引用一篇简单介绍下,引用链接: 图像bayer格式介绍以及bayer插值原理.
大致原理呢,就是相机上面的图像传感器只能感受光强而无法感知光的波长,然而光的颜色却是由波长决定的,因此图像传感器是无法记录颜色的。
虽然可以在
unsigned int nRecvBufSize = 0;
MVCC_INTVALUE stParam;
memset(&stParam, 0, sizeof(MVCC_INTVALUE));
int tempValue = MV_CC_GetIntValue(hik_hDevHandle, "PayloadSize".
点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,可以点个在看,让它可以帮助到更多同志一、一些基础信息MVS 版本 V3.1.0SDK 版本:V3.2.0.31.库与头文件...
2、格式转换代码
void bg8ConvertRgb(QImage img1) {
/*-------------------------显示彩色图片时使用---------------------------*/
Mat mat = cv::Mat(img1.height(), img1.width(), CV_8UC1, (void*)img1.constBit...
//ffmpeg转换查看rg8图片命令:
ffmpeg -vcodec rawvideo -f rawvideo -pix_fmt bayer_rggb8 -s 2448*2048 -i rg8.raw -f image2 -vcodec bmp rggb8.bmp
参数说明及参考:使用ffmpeg 命令行解码并显示像素格式为.raw图像_xuw_xy的博客-CSDN博客
cv::Mat mat = cv::imread("d:\\1.jpg");
std::string str;
std::vector<unsigned char> buff;
cv::imencode(".jpg", mat, buff);
str.resize(buff.size());
memcpy(&str[0], buff.data(), buff.size());
二、std::string转cv::Mat
把std::string当