CWIMAQImage.ImageToArray [Left] [, Top] [, Width] [, Height]
吳先生您好:
VB.NET內沒有CWIMAQImage 物件只有 CWIMAQVision 、CWIMAQViewer 和 CWIMAQ
我只想要把CWIMAQViewer顯示的即時影像取出
但我不知語法怎麼寫
至於後續的分析我可以自行解決
可否教導如何取出CWIMAQViewer內的單張影像
謝謝
Hi 小吳;
Sorry 搞錯了。
' Convert the entire image to an array Dim a As Variant a = CWIMAQViewer1.Image.ImageToArray ' Convert a portion of the image to an array Dim b As Variant b = CWIMAQViewer1.Image.ImageToArray(10,10,100,100)
This example shows how to convert an image into a two-dimensional array. When you convert an image into an array, you can apply Visual Basic functions to the image data.
<Vision>\Examples\MSVB\2. Functions\Image Management
再試試看吧!!!
吳先生您好:
我沒有 VISION\Examples\MSVB\2. Functions\Image Management 這個範例
可否將範例mail 給我呢
謝謝
我的mail
吳先生您好:
您提供的範例無法執行
但是我有用您說的語法去試
Dim a As Variant
a = CWIMAQViewer1.Image.ImageToArray
但是我用中斷點去看取a 的資料如下
(0,0) 為252641799
(0,1) 為1077936682
(0,2) 為1128464934
我不知(0,0) 取到的 252641799 是什麼意思
但(0,0) 的RGB值 為 7,2,15 其值是由顯示畫面上滑鼠指到(0,0)所取得
所以還是不知道如何取得整個圖的RGB值
不知如何解決,謝謝
01-29-2007 12:09 AM - 已編輯 01-29-2007 12:09 AM
吳先生您好:
目前我已找出16777216 其RGB值為(0,0,0)
16777471 其RGB值為(255,0,0)
16842752 其RGB值為(0,0,1)
R值為256的0次方,G值為256的1次方,B值為256的2次方
所以如果值為 16843318 ,先減去16777216,會剩66102
66102除以256的2次方,商=1,此商即為B值
上面的餘數除以256的1次方,,商=2,此商即為G值,餘數=54 ,此餘數即為R值
所以16843318 其RGB值為(54,2,1)
但只能適用於B值為0或1的狀況下
所以不知如何解決
另外,於附件上,可以看到圖顯示的下方有座標點的RGB值
所以我想應該於圖擷取時
就已經取得RGB值了(因為座標指到哪,RGB會即時顯示出來)
如果可以知道如何取得此張圖所有座標的RGB值
我就不用去找出前面的數字和RGB值的關係了
所以請問有辦法取得嗎?
還是 要由我目前取得的值去找出規律而換算成RGB值呢,謝謝
希望您看的懂,我想要表達的意思
由 小吳 在 01-29-2007 12:11 AM 上編輯的訊息
01-30-2007 01:19 AM - 已編輯 01-30-2007 01:19 AM
嗨, 小吳
我在 NI Vision for Visual Basic Reference Help 有查到這一段話, 不知道對你這個問題有沒有幫忙 "If the image type is cwimaqImageTypeRGBU64, the output array is a 2D array of 1D arrays with 4 elements (the Red, Green, Blue, and Alpha channels of each pixel)." 所以說影像的格式看起來應該是 RGB U64 以一個六十四位元的數字來代表一個像素 , 而裡面有四個元件 : Alpha,B,G,R 的值
如果以你座標(0,0)的點為例 252641799 換成64bit的二進位來表示
00000000 00001111 00000000 00001111 00000000 00000010 00000000 00000111
================= ================= ================= =================
Alpha = 15 Blue = 15 Green = 2 Red = 7
同理去做(0,1)和(0,2)得到 (R,G,B) = (42,2,64)跟(38, 2, 67)
我英文不太好, 不知道理解有沒有錯, 而且我這裡也沒有camera可以測試 不知道可不可以請你測試完跟大家說一下結果呢? ^^
---
新手上路, 還請多見諒.
由 Skai 在 01-30-2007 01:21 AM 上編輯的訊息
由 Skai 在 01-30-2007 01:22 AM 上編輯的訊息
Skai您好:
可以告訴我怎麼把取得的數換成64bit的二進位嗎?
因為我看不懂您是怎麼轉換的
謝謝指教
如果以你座標(0,0)的點為例 252641799 換成64bit的二進位來表示
00000000 00001111 00000000 00001111 00000000 00000010 00000000 00000111
================= ================= ================= =================
Alpha = 15 Blue = 15 Green = 2 Red = 7