我用的python3.x,opencv3.x.官方文档里介绍cv2.drawKeypoints()函数主要包含五个参数:
- image:也就是原始图片
- keypoints:从原图中获得的关键点,这也是画图时所用到的数据
- outputimage:输出
- color:颜色设置,通过修改(b,g,r)的值,更改画笔的颜色,b=蓝色,g=绿色,r=红色。
- flags:绘图功能的标识设置,(可能标识的值由DrawMatchesFlags定义,具体的要看DrawMatchesFlags这个函数,c++里是这样)。在Python里面标识由cv2.DRAW_MATCHES_FLAGS_DEFAULT, cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG, cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS修改
im_with_keypoints = cv2.drawKeypoints(im, keypoints, np.array([]), (255,0,0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
例子如上,这是我写的另一篇blob分析的一句,具体请看那篇博客。在这句程序里im是原图,关键点keypoints,输出放在了一个新建数组里,这里用的蓝色标定,具体按个人爱好。flags挺有意思,这是标识方式的一种设置,按字面意思,比如说用cv2.DRAW_MATCHES_FLAGS_DEFAULT参数,表示用默认参数,这种方式比较简单,在我用blob画图的那篇程序中,仅仅画出了圆的中心点。但是如果用cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS,他会以一种丰富的方式画出来,效果会好点。