一、介绍
又是忙绿的几周,距离上次开箱评测发布半个月过去了,间隔时间有点长,所以这次赶紧把上次拖得东西掏出来,今天呢跟大家分享一下我这次用安森美数字图像传感器做的一个小的demo(人脸识别跟踪)。
根据官方给的资料使用介绍的Amcap.exe软件打开相机,验证一下相机是不是能用,打开后可以得到如下两种参数图片,一种是拍照的、一种是视频的,相关的影像参数都可以在这里进行适当调整,调出合适的影像。
二、halcon部分
因为我本身是作工业机器视觉行业,对于halcon这款机器视觉软件也比较熟悉些,所以这次选用它来做些演示效果,HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。
手上这款相机是USB2.0的,所以halcon检测的图像接口是DirectShow(其实就halcon里面有很多的相机.DLL文件,USB2.0的是DirectShow.dll)
后面点击连接、采集、实时可以查看相机是否连接上且采图正常。
参数这里可以调节相机整体的参数包括曝光、增益、对比度,白平衡等等,有些类似上面提到Amcap.exe里面的调整。
最后将代码插入的程序窗口内, 在程序窗户中调用相机,然后选择合适的算子,编写所有的测试流程。
下面就是我用机器视觉开发环境halcon做的测试代码:
- read_image (Image, 'C:/Users/plcc20221/Desktop/12345.bmp')
- get_image_size (Image, Width, Height)
- dev_open_window (0, 0,Width, Height, 'black', WindowHandle)
- dev_display (Image)
- dev_set_color ('red')
- disp_message (WindowHandle, '请创建模板,鼠标右击结束', 'window', 12, 12, 'red', 'true')
- draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
- gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
- area_center (Rectangle, Area, Row1, Column1)
- reduce_domain (Image, Rectangle, ImageReduced)
- * create_ncc_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'use_polarity', ModelID)
- create_shape_model (ImageReduced, 'auto', -0.39, rad(90), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
- get_shape_model_contours (ModelContours, ModelID, 1)
- * Image Acquisition 01: Code generated by Image Acquisition 01
- open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] USB Camera', 0, -1, AcqHandle)
- grab_image_start (AcqHandle, -1)
- while (true)
- grab_image_async (Image, AcqHandle, -1)
- * Image Acquisition 01: Do something
- find_shape_model (Image, ModelID, -0.39, rad(90), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row2, Column2, Angle, Score)
- * find_ncc_model (Image, ModelID, -0.39, 0.78, 0.8, 1, 0.5, 'true', 0, Row2, Column2, Angle, Score)
- if(|Row2|>0)
- dev_display_shape_matching_results (ModelID, 'red', Row2, Column2, Angle, 1, 1, 0)
- vector_angle_to_rigid (Row1, Column1, 0, Row2, Column2, Angle, HomMat2D)
- affine_trans_region (Rectangle, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
- dev_display (Image)
- dev_display (RegionAffineTrans)
- disp_message (WindowHandle, '找到了', 'window', 10, 10, 'green', 'false')
- else
- dev_display (Image)
- disp_message (WindowHandle, '没有识别到', 'window', -1, -1, 'white', 'false')
- endif
- stop ()
- endwhile
- close_framegrabber (AcqHandle)
上面的做的是形状匹配算子的效果,亦可以将create_shape_model 、find_shape_model (形状匹配)替换成create_ncc_model 、find_ncc_model (人脸查找的算子)
三、C#部分
然后我通过halcon做的示例联合C#语言做了一份相机演示demo,demo上面设计了打开关闭相机、相机的实时采集、采集图片、创建ROI区域、人脸的实时跟踪识别等功能。最近时间不是很充裕,所以做得可能比较单一一些。
在人脸识别的文件夹中,找到debug文件夹下的人脸识别跟踪.exe应用程序。
打开应用程序,就会弹出下面的演示界面了。
因为涉及人的面部识别安全,所以在测试的时候没用人脸图片,直接使用的事物代替,检测效果也是可以的。
这次相机的调用主要是通过halcon里面算子采集图片的和做的识别定位,因为这次没有找到关于这款图像传感器的SDK开发包,所以没法测试用SDK实时采集图片的效果,后面有机会的可以试试C#获取到相机图像后调用回调函数处理图像。
有机会这两天把视频的内容也做好上传上来,相对来说视频的演示效果会比现在这样的截图以及文字描述更加的直观清晰,好了这次的评测就分享到这里了。
最后附上测试用的源码(有需要的可以下载,可能需要有halcon的开发环境才能完整运行)。
热门资料
热门活动
全部回复 0
暂无评论,快来抢沙发吧