OpenCV + WinFrom连接手机摄像头
帮我节省1000元购买海康卫视的工业相机....
首先分别下载Iriun PC端和手机app端 手机app下载可以自行搜索 Iriun Webcam
1.自行测试
手机wifi和电脑wifi需要在同一个路由器网段
2.新建C# WinForm项目
1.右键项目名->管理NuGet程序包(N)....
OpenCVSharp4
OpenCVSharp4.Runtime.win
OpenCVSharp4.Extensions
2.添加引用
using OpenCvSharp; using OpenCvSharp.Extensions; using System.Drawing; using System.Drawing.Imaging; using System.Numerics; using System.Windows.Forms;3.在From设计界面添加5个控件
PictureBox Button打开视频 Button保存图片 label Timer
PictureBox 显示模式:CenterImage
Timer 时间Interval 设置为1000ms
4.完整代码
using OpenCvSharp; using OpenCvSharp.Extensions; using System.Drawing; using System.Drawing.Imaging; using System.Numerics; using System.Windows.Forms; namespace WinFormsApp2 { public partial class Form1 : Form { VideoCapture capture; bool IsSave = false; public Form1() { InitializeComponent(); //关闭Windows Forms控件之间的跨线程调用检查 Control.CheckForIllegalCrossThreadCalls = false; timer1.Start();//打开计时器,显示当前时间 } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { capture = new VideoCapture(2);//0、1本地摄像头 2手机摄像头 if (!capture.IsOpened()) { MessageBox.Show("无法打开摄像头"); return; } Thread video_th = new Thread(StartCapturing); video_th.IsBackground = true; video_th.Start(); } private void StartCapturing() { Mat frame = new Mat(); while (true) { capture.Read(frame);//读取视频流 //对帧图像进行处理 //将帧图像转换为Bitmap,然后在PictureBox显示 Bitmap bitmap = BitmapConverter.ToBitmap(frame); if (IsSave) { bitmap.Save(DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff")+".jpg",ImageFormat.Jpeg); IsSave = false; } pictureBox1.Image = bitmap; pictureBox1.Refresh(); } } private void timer1_Tick(object sender, EventArgs e) { label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ff");//显示当前时间 } private void button2_Click(object sender, EventArgs e) { IsSave = true;//保存图片 } } }通过网盘分享的文件:IriunWebcam-2.9.1.exe 链接: 百度网盘 请输入提取码 提取码: vtkt
