本帖最后由 sense1999 于 2021-8-31 10:34 编辑

一、介绍
       又是忙绿的几周,距离上次开箱评测发布半个月过去了,间隔时间有点长,所以这次赶紧把上次拖得东西掏出来,今天呢跟大家分享一下我这次用安森美数字图像传感器做的一个小的demo(人脸识别跟踪)。
       根据官方给的资料使用介绍的Amcap.exe软件打开相机,验证一下相机是不是能用,打开后可以得到如下两种参数图片,一种是拍照的、一种是视频的,相关的影像参数都可以在这里进行适当调整,调出合适的影像。

微信截图_20210810092316.png 微信截图_20210810092326.png

二、halcon部分

       因为我本身是作工业机器视觉行业,对于halcon这款机器视觉软件也比较熟悉些,所以这次选用它来做些演示效果,HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。
       手上这款相机是USB2.0的,所以halcon检测的图像接口是DirectShow(其实就halcon里面有很多的相机.DLL文件,USB2.0的是DirectShow.dll)
微信截图_20210831094124.png
微信截图_20210831094615.png
      后面点击连接、采集、实时可以查看相机是否连接上且采图正常。

微信截图_20210831094135.png

      参数这里可以调节相机整体的参数包括曝光、增益、对比度,白平衡等等,有些类似上面提到Amcap.exe里面的调整。
微信截图_20210831094938.png
       最后将代码插入的程序窗口内, 在程序窗户中调用相机,然后选择合适的算子,编写所有的测试流程。
微信截图_20210831094959.png
微信截图_20210831095022.png
       下面就是我用机器视觉开发环境halcon做的测试代码:
  1. read_image (Image, 'C:/Users/plcc20221/Desktop/12345.bmp')
  2. get_image_size (Image, Width, Height)
  3. dev_open_window (0, 0,Width, Height, 'black', WindowHandle)
  4. dev_display (Image)
  5. dev_set_color ('red')
  6. disp_message (WindowHandle, '请创建模板,鼠标右击结束', 'window', 12, 12, 'red', 'true')
  7. draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
  8. gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
  9. area_center (Rectangle, Area, Row1, Column1)
  10. reduce_domain (Image, Rectangle, ImageReduced)
  11. * create_ncc_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'use_polarity', ModelID)
  12. create_shape_model (ImageReduced, 'auto', -0.39, rad(90), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
  13. get_shape_model_contours (ModelContours, ModelID, 1)
  14. * Image Acquisition 01: Code generated by Image Acquisition 01
  15. open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] USB Camera', 0, -1, AcqHandle)
  16. grab_image_start (AcqHandle, -1)
  17. while (true)
  18.     grab_image_async (Image, AcqHandle, -1)
  19.     * Image Acquisition 01: Do something
  20.     find_shape_model (Image, ModelID, -0.39, rad(90), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row2, Column2, Angle, Score)
  21. *     find_ncc_model (Image, ModelID, -0.39, 0.78, 0.8, 1, 0.5, 'true', 0, Row2, Column2, Angle, Score)
  22.     if(|Row2|>0)
  23.         dev_display_shape_matching_results (ModelID, 'red', Row2, Column2, Angle, 1, 1, 0)
  24.         vector_angle_to_rigid (Row1, Column1, 0, Row2, Column2, Angle, HomMat2D)
  25.         affine_trans_region (Rectangle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
  26.         dev_display (Image)
  27.         dev_display (RegionAffineTrans)
  28.         disp_message (WindowHandle, '找到了', 'window', 10, 10, 'green', 'false')
  29.     else
  30.         dev_display (Image)
  31.         disp_message (WindowHandle, '没有识别到', 'window', -1, -1, 'white', 'false')
  32.     endif
  33.     stop ()
  34.    
  35. endwhile
  36. close_framegrabber (AcqHandle)
halcon中所呈现的检测效果如下图:

屏幕截图 2021-08-05 151845.png

       上面的做的是形状匹配算子的效果,亦可以将create_shape_model find_shape_model (形状匹配)替换成create_ncc_modelfind_ncc_model (人脸查找的算子)

三、C#部分
       然后我通过halcon做的示例联合C#语言做了一份相机演示demo,demo上面设计了打开关闭相机、相机的实时采集、采集图片、创建ROI区域、人脸的实时跟踪识别等功能。最近时间不是很充裕,所以做得可能比较单一一些。
       在人脸识别的文件夹中,找到debug文件夹下的人脸识别跟踪.exe应用程序。

微信截图_20210831101437.png

       打开应用程序,就会弹出下面的演示界面了。

微信截图_20210831092008.png

       因为涉及人的面部识别安全,所以在测试的时候没用人脸图片,直接使用的事物代替,检测效果也是可以的。

屏幕截图 2021-08-05 144106.png
       这次相机的调用主要是通过halcon里面算子采集图片的和做的识别定位,因为这次没有找到关于这款图像传感器的SDK开发包,所以没法测试用SDK实时采集图片的效果,后面有机会的可以试试C#获取到相机图像后调用回调函数处理图像。
       有机会这两天把视频的内容也做好上传上来,相对来说视频的演示效果会比现在这样的截图以及文字描述更加的直观清晰,好了这次的评测就分享到这里了。
       最后附上测试用的源码(有需要的可以下载,可能需要有halcon的开发环境才能完整运行)。
         人脸识别跟踪.zip (766.32 KB, 下载次数: 0)
全部回复 0
暂无评论,快来抢沙发吧