海康gige工业相机无驱动取像突破(c#实现,最后更新,你也可以移植到linux下去用)
买了3个海康的相机,最初测试成功的是500万相机。
然后写了一个通用版,害怕有问题,又买了600万的相机,测试果然不及格,花了九牛二虎之力找到一个小问题,就这个 if (changdu > 1000);
最后又买了一个1000万的相机,然后测试ok,现在放心了。
一共花了上千大洋。值不值呢?不知道,反正已经都做过了。
需要说的是,1,通用版无驱动gige相机突破都是针对海康相机,估计大华可以,都是黑白相机gm(gige mono8)。
2,测试basler200万相机,失败!估计mdvision也不行。
3,海康彩色相机也不行,2000万的测试了,失败!
4,不知道怎么优化,没有海康的sdk取像快!
5,程序可以改变曝光,但是有大于55000值时,反而变暗了,不知道是什么鬼!
6,问题的关键点在于,图像分包余数处理麻烦!
500万相机:8128*619+7616=5038848(2592*1944)
600万相机:8128*774+384=6291456(3072*2048)
1000万相机:8128*1298+2176=10552320(3840*2748)
三个相机兼容处理:
int changdu = socketRxRaw.Receive(m_buff9000);//与函数ReceiveFrom结果一样
if (changdu > 300)
// if (changdu > 1000)
//500wan xiangji zuihou yizhen 7616
{//600wan xiangji zuihou yizhen 384
//1000wan xiangji zuihou yizhen 2176 duo
通用程序,只改动两处,一个是:if (changdu > 300)这个。
另一个是: socketRxRaw.ReceiveBufferSize = (int)(5* 2500 * 2024*2);
给了更大图像的缓存buffer。
总体来说,是成功的!可以想象一下,把这个集成到megauging中去,替换海康的sdk,
那么这个程序一个dll都不用,全部自我实现!曾经想,能不能不用opencv呢?
现在可以回答这个问题了,可以!
曾经想,能不能写一个通用的gige工业相机sdk呢?现在也初步实现了!
曾经想,能不能不用国外机器视觉软件visionpro,ni,evisoion,halcon,自己写一个呢?
现在也完成了,虽然琢磨了十年有余,总算是磨了一把剑!
这或许也是我写博客,一直坚持原创的初心吧!
精诚所至,金石为开!