Python计算机视觉掌握回调函数的方法画图。#python
Python计算机视觉使用回调函数画图。
浙大博士哈佛博后。
我们再来看一个画图程序,看看这个画图程序和刚才的画图程序有什么不一样,就是直接就是画上去了,包括线、方块、园圈。把这个程序先运行一下,你看他在随机的画网,随机的画网你看我点一下,注意看这个是有输出的,看到没有是吧?是有输出的。我再点一下,我点这个地方观察到这个输出什么含义,没有我这个因为图像来说,注意对于图像来讲,左上点就这个地方是零,坐标它的坐标系,这个地方是圆点,你看我点这个地方是不变得很小了,所以你可以猜出来是什么?你看我点这个地方是吧?所以说你看这个是随机在画圆的,但是有点不一样,我点击鼠标的时候,它可以把我这个鼠标不管什么值,它可以把它给找出来然后输出。
这是一个openCV里面很重要的功能,我们来看什么功能,程序我们讲一下。
首先注意看了这个函数,这个函数你看叫做clickevent,从名字上可以看出来叫做什么的,点击事件,点击事件,包括事件坐标flag,还有后面几个参数,对不对?扑克牌参数,什么意思?就是当我用左键点击我这个图像的时候,你看这个事件,因为鼠标的事件有很多,比如鼠标我们知道常见的左键单击双击,右键单击双击,还有中间的滚轴,鼠标的事件是很多的。
所以说你可以发现,这个函数是捕捉到鼠标事件之后做的一个处理。鼠标事件有很多种,那怎么判断是什么样的一个事件?用event是吧?Python for 画笔名字能看出来,L是 left的意思,左键点击的意思,它又把当前的坐标给输出来了,对不对包括Flare这个参数。
当然我们刚才你看的这个结果,刚才结果你看到了,这个地方是个烂,没有传入任何参数,也就是说调用鼠标函数的时候是可以传入参数的。那么这里面要介绍一个,就是Opencb里面,程序就整个的一个程序体系里面非常重要的一种方法,叫做回调的方法。
什么叫回调?回调就是当你发现这个事件的时候去处理,而因为程序就是学习程序编程。如果有基础应该知道程序是顺序执行的,什么叫顺序执行?比如程序执行的时候,它比如说对passing两胎胎载入的函数,执行代码,执行代码,执行代码,如果循环一直循环,代码本身是顺序执行的。
但是有的时候,最常见的需要根据鼠标的事件或者是键盘的事件再做处理,这就是回调,所以说这边就设置了回调。这是 openc里面最常见的操作之一,设置回调,函数名字看得出来,叫 sitmos callback,名字上可以看出来叫做设置鼠标回调。
在哪里设置回调?回调就是要去捕捉一个具体位置的消息,是哪里的回调?这个地方是它窗口的名字,这个地方创建了一个窗口,窗口的名字就是创建一个窗口,就是用来显示图像的窗口,叫Gris,那就是在窗口上面来捕捉事件,捕捉什么事件?因为回调,大家注意可以捕捉各种各样的事件,这捕捉的是可利可疑问的点击。
因为知道鼠标不仅有点击事件,还有滚动拖拉等等,那创建了一个图像。刚才讲过了通过这个数据的方式,创建一个三重道的彩色图像,zero 0表示黑色的,这边弯腰处一直循环。
大家刚才也看到这个结果了,每次随机的产生是不是化缘?画了多少个同?画了二十五个。FR因润是最常见的一种循环的方法,拍成里头。这边循环产生半径,循环产生颜色,循环产生圆点,然后画圆就可以了。没什么要说的比较简单。这边使用了一个拍成随机的方法。
·然后这边是画圆,画圆传入几个参数包括你是在哪里画圆,图像是什么是吧,原点是什么,半径是什么,颜色是什么,其他还有一些其他的参数设置好之后显示就可以了,这边是每隔一千毫秒每隔一秒是吧?这个随机产生一次。
·然后按q键或者是escape键退出。这个程序并不复杂,但是里面第一次接触到了一个非常重要的思想就是回调的思想。当然鼠标可以设置回调,键盘也可以设置回调。知道这一点之后就可以在函数中根据自己的需要找到相关的参数来设置自己的回调方法了。这样你就可以通过鼠标或者键盘的回调做处理参数也是可以传入的。