IMAQ ROIToMask

我在使用IMAQ的Mask時發現有不符合預期的結果,經嘗試寫了一個小程式測試後發現了一個怪現象,如下圖

當Rectangle(Cluster前四個值是1,1,3,3),Area(pixel)的結果是4,如果如圖Rectangle值改成2,2,3,3,我認為Area(pixel)應該變成1,可是執行結果卻是0。

我進一步發現,只要Rectangle定義的矩形長度或寬度有一個為1時,就無法產生正確的Mask,導致最後Area(pixel)的結果都為0,當然Maximal Value根本無法找到正確的值。

不曉得是我哪裡弄錯了,還請各位先進給我一些指導,不勝感激。

Jimy39917.6061689815

您好, 我依樣畫葫蘆寫一樣的程式, 執行結果沒有問題!!

不知為何你的有問題?? 不過我是V8.6的

Mask041709.vi

感謝Free的回覆。您測試是不會有這樣子的問題嗎?如果真是如此,那我想就是版本的問題囉!新版已經更正了此一bug吧。

不過我想應該是Vision的Module修正的(應該不是LabVIEW),由於我只有LabVIEW 7.1與Vision 3.1,也不曉得那一版本的Vision才OK,不曉得各位先進有沒有什麼看法。

Jimy39923.3841087963

我又不信邪的找 LV7.1 寫了一個, 還是沒有你說的狀況ㄟ?!

IMAQ_MASK.vi

 

試試..........

 

再次感謝Free。不曉得您使用的Vision的版本為何?不過我下載了您附的程式,就跟我自己寫的一樣,RUN起來還是0。

應該不是LabVIEW版本的差異,而是那個「IMAQ ROIToMask」的問題,而那是在Vision裡面的。Vision的升級應該要付費的,所以.... 唉!

我可不可以認定這是bug,而要NI幫我及客戶免費升級呢?

跟大家報告一下,近日來我努力測試的結果。

在LabVIEW 7.1的開發環境下開發的這程式,放在有不同Vision Runtime版本上執行,發現只有8.6.0以上才能正確回應,之前的版本在ROI太小時都有問題。

我測試的Vision版本在NIVision.dll上標示的有:8.2.1.94、8.5.1.4951、8.6.0.4951、8.6.4.4951。

接下來的問題是,我和客戶該怎麼辦?

ROI先設大一點,後面再把想要的範圍抓出來算,也許是個繞道的方法

 

 

感謝LabColorSpace提供的好方法,我現在暫時使用的方法就是類似這樣子,不過在Rectangle沒有旋轉角度時還容易,若有旋轉(角度不是0)的話,可就不好抓範圍了。

無論如何,還是感謝您提供方法。

Jimy39938.3425115741