如何使用OpenCV为桌面和Web构建简单的Webcam应用程序(一)
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件。你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像。然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者SharePoint。这个TWAIN控件还支持上传和处理本地图像。
在大流行期间,由于社交距离遥远,对相机应用程序的需求激增。因此,我收集了一些用不同编程语言实现的基本OpenCV网络摄像头示例代码,并构建了一些用于远程网络摄像头访问的简单Web应用程序。希望这对开始构建网络摄像头应用程序的人有所帮助。在本文中,我将使用JavaScript,C#,Python和Golang。
适用于Node.js,C#,Python和Go的OpenCV安装
由于我的开发环境是Windows,因此以下安装步骤可能仅适用于Windows。如果要在其他操作系统上安装OpenCV,请访问相关的教程页面。构建和安装OpenCV模块需要时间,因此请耐心等待。
Node.js
安装 opencv4nodejs:
npm i opencv4nodejs安装 OpenCvSharp:
对于Windows
dotnet add package OpenCvSharp4 dotnet add package OpenCvSharp4.runtime.win
蟒蛇
安装 OpenCV Python:
pip install opencv-python高朗
安装 gocv:
go get -u -d gocv.io/x/gocv对于Windows
安装MinGW-W64 x86_64-7.3.0-posix-seh-rt_v5-rev2。
安装 CMake。
编译并安装OpenCV模块:
chdir %GOPATH%\src\gocv.io\x\gocv win_build_opencv.cmd添加 C:\opencv\build\install\x64\mingw\bin 到您的系统路径。
简单的桌面网络摄像头程序
Node.js
创建一个desktop.js文件:
const cv = require('opencv4nodejs'); const vCap = new cv.VideoCapture(0); const delay = 10; while (true) { let frame = vCap.read(); // loop back to start on end of stream reached if (frame.empty) { vCap.reset(); frame = vCap.read(); } cv.imshow('OpenCV Node.js', frame); const key = cv.waitKey(delay); // Press ESC to quit if (key == 27) {break;} }
运行应用程序:
node desktop.jsC#
创建一个.NET核心项目:
dotnet new console -n Desktop将以下代码添加到Program.cs中:
using System; using OpenCvSharp; namespace Desktop { class Program { static void Main(string[] args) { VideoCapture capture = new VideoCapture(0); using (Window window = new Window("Webcam")) { using (Mat image = new Mat()) { while (true) { capture.Read(image); if (image.Empty()) break; window.ShowImage(image); int key = Cv2.WaitKey(30); if (key == 27) break; } } } } } }运行应用程序:
dotnet run
蟒蛇
创建desktop.py:
import cv2 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow("Webcam", frame) if cv2.waitKey(1) & 0xFF == 27: # use ESC to quit break cap.release() cv2.destroyAllWindows()运行应用程序:
python desktop.py高朗
创建desktop.go:
package main import ( "fmt" "gocv.io/x/gocv" ) func main() { webcam, _ := gocv.OpenVideoCapture(0) window := gocv.NewWindow("Webcam") img := gocv.NewMat() for { webcam.Read(&img) window.IMShow(img) key := window.WaitKey(10) if key == 27 { // ESC break } } fmt.Println("Exit") // must call close() to terminate the program webcam.Close() }运行应用程序:
go run desktop.go