我在使用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