海康IPCamera结合OpenCV图像处理的一般步骤

    做视觉的朋友肯定会接触到各种相机(各种品牌),不管是工业相机、监控相机还是普通的USB Camera,都有一套常用的处理技巧,今天我们来看看IPCamera结合OpenCV图像处理的一般套路。IPCamera最常见的就是网络监控摄像头,而国内海康威视已经占了大部分份额,而且现在的监控摄像头还添加了各种智能功能,更方便用户使用。今天就以海康的网络摄像头来说明(具体型号没查到,客户给的,做了一层铁壳封装)。

    第一步:购买摄像头。不管是自行购买还是客户指定,一定要确保支持二次开发,有途径能够获取相机的SDK,这样才能对相机进行下一步操作。

    第二步:使用SDK中的demo操作相机。这一步骤主要的目的是确保SDK没问题,免得后续浪费时间,当然如果是海康对应的IPCamera一般官网可以下载到SDK,应该没问题。相机与SDK验证分以下几个步骤:

    ① 保证接通电源,链接网络,设置IP和摄像头同一网段;

    一般IP地址为:192.168.1.64,我们将电脑IP地址设置成192.168.1.x,(x可以是除64以外的数字,比如2),然后打开浏览器,然后输入192.168.1.64

    ② 浏览器登录验证,输入账户密码,看是否能够预览相机画面;

    ③ 使用SDK中的demo打开相机。以C++为例,这一步一般注意编译环境问题,还有demo默认字符集是Unicode还是多字节,一般都是多字节字符集。运行时要将需要的HK dll 拷贝到exe同目录,如果还有其他问题需要看下SDK说明中的注意事项或操作手册。

    第三步:从简易demo中提取我们想要的功能并单独复现。个人建议自己新建一个MFC或Qt界面来复现demo中需要的功能,一是方便我们了解相机的一些操作函数使用,另一方面demo中一般多了一些我们不需要的功能且UI并不美观,当然,如果你很着急,可以直接在上面改。复现时的一般步骤:

    ① 注册相机。需要设置IP,端口,用户名,密码,注意变量的类型,然后找到注册函数,验证是否能成功注册,注册失败一般都会提示或者有对应的错误代码。这里在调用注册函数NET_DVR_Login_V30/V40之前,需要先调用NET_DVR_Init()函数来初始化SDK,否则其他函数都调用不了,这个需要看手册(手册中也有简单的示例代码和说明),最后和它配对使用的释放SDK资源的函数在销毁窗口时使用。

NET_DVR_Cleanup(); //NET_DVR_Init和NET_DVR_Cleanup需要配对使用

    ② 打开相机,预览画面。MFC中一般使用Picture Control显示图像,如下面代码所示,使用NET_DVR_RealPlay_V30/V40函数,如果不设置回调函数,就直接给定Picture Control对应的窗口句柄,那么预览图像会显示在界面中 ,但是你无法操作图像。一般我们都需要指定回调函数,在回调函数中将图像数据解码后push到队列中,供图像处理时使用,此时hPlayWnd=NULL。

NET_DVR_CLIENTINFO ClientInfo;
 //ClientInfo.hPlayWnd = GetDlgItem(IDC_PIC)->m_hWnd;
 ClientInfo.hPlayWnd = NULL;
 ClientInfo.lChannel = iChanIndex + 1;
 ClientInfo.lLinkMode = 0;
 ClientInfo.sMultiCastIP = NULL;
 TRACE("Channel number:%d\n", ClientInfo.lChannel);
 m_lPlayHandle = NET_DVR_RealPlay_V30(m_struDeviceInfo.lLoginID, &ClientInfo, fRealDataCallBack, NULL, TRUE);
 if (-1 == m_lPlayHandle)
 {
   DWORD err = NET_DVR_GetLastError();
   CString m_csErr;
   m_csErr.Format("播放出错,错误代码%d", err);
   MessageBox(m_csErr);
 }

转到回调函数,可以设置是否边解码边显示预览,这里不预览(我们要显示处理后的预览图),这里的图像类型是T_YV12,使用一个解码回调函数来处理,vFrames队列中已是转换后的Mat类型图像。

//设置解码回调函数 只解码不显示
if (!PlayM4_SetDecCallBack(nPort, DecCBFun))
{
  dRet = PlayM4_GetLastError(nPort);
  break;
}
void CALLBACK DecCBFun(long nPort, char * pBuf, long nSize, FRAME_INFO * pFrameInfo, long nReserved1, long nReserved2)
{
  long lFrameType = pFrameInfo->nType;
  
  if (lFrameType == T_YV12)
  {
    /*if (HK_Frame.empty())
    {
      HK_Frame.create(pFrameInfo->nHeight, pFrameInfo->nWidth, CV_8UC3);
    }*/
    Mat YUVImage(pFrameInfo->nHeight + pFrameInfo->nHeight / 2, pFrameInfo->nWidth, CV_8UC1, (unsigned char*)pBuf);
    Mat img;
    cvtColor(YUVImage, img, COLOR_YUV2BGR_YV12);
    vFrames.push(img.clone());
  }
}

    ③ 从Mat队列中取图像处理。这时候就可以使用线程或Timer在队列中逐个取图进行分析处理,每处理完一帧后pop释放当前帧;

HK_Frame = vFrames.front();//其他处理操作vFrames.pop();

    第四步:关闭预览,释放SDK资源;关闭预览,注销,释放SDK.

StopPlay();NET_DVR_Logout_V30(m_struDeviceInfo.lLoginID);NET_DVR_Cleanup(); //NET_DVR_Init和NET_DVR_Cleanup需要配对使用

    效果如下:

    完整代码将发布在知识星球中,更多学习资讯欢迎关注公众号:OpenCV与AI深度学习。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 海康工业相机halcon图像处理例程是指利用海康工业相机halcon的软件编程接口,进行图像处理的一组例程。海康工业相机halcon是一款高性能的工业相机,具备高分辨率、高帧率和低噪声等特点,广泛应用于机器视觉、工业自动化等领域。 通过halcon图像处理例程,可以实现多种图像处理任务。首先,可以对图像进行预处理,包括图像去噪、平滑、增强等操作,提高图像质量。其次,可以进行图像分割,将图像中的目标从背景中分离出来,便于后续的目标识别和测量。此外,还可以进行形状匹配,将图像中的目标与模板进行匹配,实现目标识别和定位。同时,halcon图像处理例程还支持二维码和条形码的解码,可用于物流追溯、品质管理等应用。 除了上述常见的图像处理任务,halcon图像处理例程还支持其他一些高级功能。比如,可以进行三维重建,通过多个角度的图像获取,实现对物体的三维模型的生成。此外,还可以进行光学字符识别(OCR),实现对文本的自动识别和提取。 总之,海康工业相机halcon图像处理例程提供了一种方便快捷的方式,帮助用户利用halcon相机进行各种图像处理任务。无论是在机器视觉、工业自动化还是其他领域,都可以通过halcon图像处理例程实现高效准确的图像处理应用。 ### 回答2: 海康工业相机是一种高质量的工业相机,可以用于各种图像处理应用。Halcon软件是一款强大的图像处理软件,提供了丰富的功能和灵活的编程接口,可以与海康工业相机完美配合使用。 Halcon图像处理例程是指一些针对特定应用场景开发的图像处理算法或功能模块。通过使用这些例程,可以方便快捷地实现图像处理任务,提高工作效率。 以海康工业相机halcon图像处理为例,我们可以利用Halcon提供的各类图像处理例程来进行图像采集、图像预处理、特征提取、目标检测等操作。首先,我们可以使用halcon图像采集例程来获取海康工业相机采集到的图像数据。然后,我们可以利用Halcon的预处理例程对图像进行滤波、增强、去噪等操作,以提高图像的质量和可用性。接着,我们可以利用Halcon提供的特征提取函数来提取图像中的特征,比如边缘、角点等。最后,我们可以使用Halcon的目标检测例程来实现目标的自动检测和识别。 通过使用海康工业相机halcon图像处理例程,可以快速、准确地完成各种图像处理任务。无论是工业自动化、机器视觉检测还是智能安防等领域,这些例程都能够为我们提供强大的功能和丰富的算法支持,使我们能够更好地应对各种复杂的图像处理需求。 ### 回答3: 海康工业相机是一种高性能的工业相机,它使用了先进的图像处理技术。其中,Halcon图像处理例程是指一系列的图像处理算法和函数,可以用于处理从海康工业相机获取到的图像数据。 Halcon图像处理例程提供了丰富的功能,包括图像预处理、特征提取、模式匹配、三维视觉等。通过这些例程,我们可以对海康工业相机拍摄到的图像进行各种处理和分析。 首先,图像预处理模块可以对图像进行降噪、增强对比度、调整亮度等操作,以优化图像质量。例如,我们可以通过平滑算法去除图像中的噪声,提高图像的清晰度。 其次,特征提取模块可以提取图像中的关键特征,例如边缘、角点、轮廓等。这些特征可以用于目标检测、物体识别和跟踪等应用。通过特征提取,我们可以从图像中提取出关键信息,用于进一步的分析和决策。 另外,模式匹配模块可以对图像进行模式匹配,即在图像中寻找特定的目标或模式。这可以应用于自动检测、测量和分类等任务。我们可以使用模式匹配算法来寻找与预定义模式相匹配的图像区域。 最后,三维视觉模块可以通过对图像进行深度信息的提取和分析,实现对三维物体的测量和分析。这对于机器人导航、三维建模和物体识别等领域非常重要。 总而言之,海康工业相机halcon图像处理例程提供了多种图像处理算法和函数,可以支持各种工业应用。它的强大功能使得我们能够更好地处理和分析从海康工业相机获取到的图像数据,为实际应用提供更准确、高效的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Color Space

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值