實現asp程式呼叫攝像頭並控制攝像頭進行拍照

2021-05-22 15:48:05 字數 1675 閱讀 9278

這幾天好多人問我如何在asp程式中控制攝像頭去抓拍**,asp技術還是99年的時候看過一點點,早就著公尺飯吃了,不過既然有人問,那就是看得起咱,花了乙個晚上的時間把asp程式呼叫攝像頭拍照的問題搞定了,現記錄如下,讓有類似需求的同學可以少走些彎路。

用到的技術:

1.asp程式中作base64編碼和解碼,使用的是msxml元件,其實主要是用來對攝像頭採集到的二進位制資料做處理,因為不可能讓使用者拍完**以後再手動上傳,而且程式也沒辦法控制實現自動檔案上傳,所以在前台的網頁中拍**以後要對**資料做base64編碼處理,然後提交到伺服器端以後做base64解碼處理。

2.activex技術

控制各種各樣的攝像頭去拍照,用純網頁肯定是不可能的了,這裡的拍**功能使用的是activex技術,做了乙個activex控制項,實現了**的裁剪,轉黑白化處理,縮放等等功能,類似於photo的裁剪功能,實現的關鍵點在於用滑鼠選擇裁剪區域,以及拖動裁剪區域等。採集以後的**資料在程式中做了標準base64編碼處理,便於網路資料傳輸。

3.資料傳輸

其實這個不光是和攝像頭控制項或者攝像頭拍照有關係,所有的在http通訊協議中傳輸的base64資料都有這種情況,因為http method分為get方式和post方式,而get方式在個別瀏覽器上的實現有所限制,如最大的資料量不能大於多少k,所以要在http通訊協議下傳輸大資料量的東西,要選擇post方式去處理。

4.activex技術與服務區端asp程式的互動

客戶端瀏覽器中操作攝像頭進行抓拍處理是activex控制項完成的,但是activex控制項的資料並不能直接 submit到伺服器端處理,也就是說asp**中你想直接取攝像頭的**資料是取不到的,那就需要把客戶端瀏覽器中的activex控制項拍照的資料拿出來,讓伺服器端的asp程式**可以訪問到**資料,這樣就需要有個「**」或者叫做「中轉站」的東西去做這個事情,其實說白了很簡單,就是我們的activex資料不能直接提交,你要放在文字框裡面或者hidden隱藏元素裡面去提交給asp程式.

5. **資料儲存

伺服器端收到的**資料是base64字串,這些字串怎麼才可以轉變成二進位制的資料呢?這裡面還涉及到乙個將base64資料解碼以後寫二進位制檔案的問題,既然涉及到寫檔案,就需要對web專案的安全許可權做一些設定,偷懶的辦法是給everyone完全控制許可權就可以了。

以上的是技術思路和實現方案,來點幹的吧,直接上**:

private function decodebase64(base64) 

dim dm, el 

set dm = createobject("microsoft.xmldom") 

set el = dm.createelement("tmp") 

el.datatype = "bin.base64"

el.text = base64 

decodebase64 = el.nodetypedvalue 

end function

dim data

data=decodebase64(request.form("pic_data"))

response.write "

response.write "desc:" & request.form("desc")

response.end

華麗的分割線以下為前台操作攝像頭拍照的html頁面源**

基於OpenCv呼叫攝像頭並顯示

opencv3 計算機視覺 python實現 p25 在視窗顯示攝像頭幀 出現錯誤 warn 0 videoio msmf onreadsample is called with error status 1072875772 warn 0 videoio msmf async readsample...

python實現呼叫攝像頭並拍照發郵箱

1 通過opencv呼叫攝像頭拍照儲存影象到本地 2 用email庫構造郵件內容,儲存以附件形式插入郵件內容 3 用smtplib庫傳送郵件到指定郵箱 4 生成 exe 檔案 5 設定開機自啟 每次開機自動執行,啟動相機,拍下 傳送到指定郵箱 import cv2 pip install openc...

Android 呼叫攝像頭

androidmanifest新增許可權 intent呼叫開啟照相機 intent intent new intent mediastore.action image capture file file new file environment.getexternalstoragedirectory...