NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

PCI-1411用VB.NET擷取影像

各位工程師好,小弟有一個問題想請教,小弟有一張NI PCI-1411的影像擷取卡,小弟想用VB.NET去做影像處理用,之前貴公司的公程師有告知小弟一些範例,小弟找到一個適合的,範例的位置如下C:\Program Files\National Instruments\NI-IMAQ\Sample\MSVB.NET\Getting Started,但小弟有一些問題,範例內可以將影像即時顯示,但即時的影像要如何取出做影像處理(範例好像可以選時間內擷取的張數),因為小弟對VB.NET不太了解,不知是否有熟VB.NET的工程師可否給予一些幫助,將即時的影像擷取出來,因為小弟要做影像處理,所以可能一秒內要擷取3張左右,謝謝各位工程師.
1 條訊息(共 12 條)
16,257 檢視
Hi 小吳
 
如果您不熟悉 VB.NET 建議您使用您喜歡的程式語言,例如LabVIEW。
有關影像處理問題,請問您有自己的演算法嗎?
如果沒有,建議使用NI Vision 模組,但是要錢。
如果有自己的演算法,
使用LabVIEW,有一個功能可用,IMAQImageToArray.vi
使用VB,可呼叫以下函式

ImageToArray Method

Syntax

CWIMAQImage.ImageToArray [Left] [, Top] [, Width] [, Height]

把Image轉換成Array後就可以得到每個Pixel 的值,加以做影像處理
 
試試看吧
2 條訊息(共 12 條)
16,182 檢視

吳先生您好:

VB.NET內沒有CWIMAQImage 物件只有 CWIMAQVision 、CWIMAQViewer 和 CWIMAQ

我只想要把CWIMAQViewer顯示的即時影像取出

但我不知語法怎麼寫

至於後續的分析我可以自行解決

可否教導如何取出CWIMAQViewer內的單張影像

謝謝

0 積分
3 條訊息(共 12 條)
16,128 檢視

Hi 小吳;

Sorry 搞錯了。

Example

' 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)

Example: Image To Array

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.

Example Location

<Vision>\Examples\MSVB\2. Functions\Image Management

再試試看吧!!!

 

0 積分
4 條訊息(共 12 條)
16,103 檢視

吳先生您好:

我沒有 VISION\Examples\MSVB\2. Functions\Image Management 這個範例

可否將範例mail 給我呢

謝謝

我的mail

s0914473@mail.ncyu.edu.tw

0 積分
5 條訊息(共 12 條)
16,096 檢視
以下有個Zip 檔,解開以後再試試看吧!!!
0 積分
6 條訊息(共 12 條)
16,086 檢視

吳先生您好:

您提供的範例無法執行

但是我有用您說的語法去試

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值

不知如何解決,謝謝

0 積分
7 條訊息(共 12 條)
16,077 檢視

吳先生您好:

目前我已找出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 上編輯的訊息

0 積分
8 條訊息(共 12 條)
16,005 檢視

嗨, 小吳

我在 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 上編輯的訊息

0 積分
9 條訊息(共 12 條)
15,977 檢視

Skai您好:

可以告訴我怎麼把取得的數換成64bit的二進位嗎?

因為我看不懂您是怎麼轉換的

謝謝指教

如果以你座標(0,0)的點為例 252641799 換成64bit的二進位來表示

      00000000 00001111        00000000 00001111        00000000 00000010       00000000 00000111       
  =================   =================   ================= =================                          
                      Alpha = 15                         Blue = 15                         Green = 2                           Red = 7

ps.希望NI公司的人看到這一行,打字時,按Enter鍵無法換行,有點不方便
0 積分
10 條訊息(共 12 條)
15,962 檢視