使用的工业相机是海康威视的MV-CA032-10GC
1.不会转换格式先找demo
开发海康相机sdk联合opencv的时候,格式转换问题搞了整整一天,一开始不知道如何将抓图得到的数据转成opencv的Mat格式用于图像处理,于是开始找海康自带的demo和开发手册,在这里也建议最好看第一时间就看开发手册及自带demo。我一开始是在下载的sdk里找demo,后面发现下载mvs(海康的客户端)的安装路径下也有demo可以参考,这里仅给出opecv的demo所在位置图
这里面的程序提供从rbg8及mono等格式转Mat及IpImage的函数,但如果工程似乎太老了,我用vs2019无法打开,只能把这个cpp复制出来,然后重新搭建opecv和mvs环境,opencv搭建网上例子很多,mvs搭建(姑且称之为mvs环境吧,因为include和lib都是从这里导入的)一样可以参考自带的手册,下图给出路径,我是MFC联合opencv所以是这个,其他朋友可以在这个路径下找自己需要的,里面的第一个demo就是教你如何配置mvs的环境。
这里还遇到一些问题提醒一下大家:
如果运行的时候发现缺少xxxx.h,就手动从include里那相应的.h复制粘贴进工程然后添加到项目里就行
2.如果demo中没有自己用到的格式,如何解决
贴出一张opencv那个demo中的转换格式部分的截图
这里只提供两种格式转换,我通过调试,发现我相机的输出格式是YUV422_YUYV_Packed,难怪一晚上都没把这个demo运行成功,然后怎么办,作为面向csdn开发的我们,遇事不决先google,然而,试了两个YUV422->Mat格式转换都不行,然后想,不会我程序都开发好了,你告诉我YUV转不出来吧,然后重新去找选购相机时的用户手册,发现我这款彩色相机支持挺多格式的。
这里面就有那个罪魁祸首的YUV422,如果我能把输入格式转成RGB8不就能用demo搞定了吗!!!
然后打开mvs里看有没有输出格式相关的东西
果然在最右边找到了像素格式,于是立马暂停采集,把他默认的YUV422转成了RGB8,再运行opencv的demo,大功告成。
踩了很多坑,也是第一次用工业相机做开发,希望我的文章能帮助到大家解决相关问题!