今天又看到某群问一个vision问题,大概就是用鼠标框选图像的局部,然后可以对局部可以单独提取图像并重新在新控件显示,如下图所示。
左侧红色是鼠标框选,右侧是局部的图(已放大),如何实现这个功能。
![75b916811e074bf400e746ff3e8ea831.png](https://i-blog.csdnimg.cn/blog_migrate/6acfe04e1b2125526bf6c28f24ef241f.jpeg)
这是一个很简单的问题,但是我也是不止一次看到有人问,所以还是抽空来写下这个问题。
问题答案就是一个函数,此函数在选板如下位置。名字叫IMAQExtract 2。函数名就很明显,提取图像。
![83596cdbc99f15b80d2c7c3e2f658b95.png](https://i-blog.csdnimg.cn/blog_migrate/d764cd18c99e1cb298d45e3a06c2f2c4.jpeg)
至于怎么用,范例都写的很清楚啦,大家学习时候多看范例就行了。
范例目录,找到自己LabVIEW的example文件夹,按下面寻找:examplesVisionImage ManagementExtract Image.vi
但是,这个范例运行后,是固定的区域放大,不是鼠标选中后放大。但是,范例终归是范例,只是告诉你某函数怎么使用,要想实现自己功能,我们一般是在范例基础上按自己意愿修改。(这个很多仪器控制意愿,官方范例看懂,拿来修改,很方便)。
官方原来的范例如下。
![834e9919a24b181cdc0ec834188bd3b5.png](https://i-blog.csdnimg.cn/blog_migrate/b9f93ecef8e0e58d934d066f38dfc30f.jpeg)
下面我们来修改范例。首先,我们要识别鼠标的框选,那么用ROI属性就可以了。在左侧Image Source上面,右键,属性,选择ROI,ROI属性是个簇,用按名称提取簇,提取矩形框坐标。如下图所示。
![cb1ff979d54bd20fc3203a625465a9b4.png](https://i-blog.csdnimg.cn/blog_migrate/8765c776c3fedad104a91f7a81b56962.jpeg)
然后为了持续响应鼠标,我们范例外面在套一个while,加个延时,为了让程序只在鼠标框选后执行,就加一个调用节点get last event。
注意,要把ROI先选矩形框。
![9422620378db7302a5880c275f05e9b7.png](https://i-blog.csdnimg.cn/blog_migrate/261501cc3b1098cab3c70b0dae314211.png)
最终效果如下。
![f7f30b2c080cd6fa4f7f35531ebf32f6.png](https://i-blog.csdnimg.cn/blog_migrate/710240697ec62d37dc3f239e72297bde.png)
很多人的问题其实都卡在简单问题上,虽然范例也有,但是很多人未必看到了。所以有空多写出来总结下也是好的。