显示方式1:OpenCvSharp窗体 var window = new Window(“cv”);
显示方式2:Windows 窗体 PictureBox控件
using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; /// <summary> /// 打开摄像头 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnOpenVideo_Click(object sender, EventArgs e) { // 定义图像捕捉方式 从摄像头 , 注意 Windows下需要选择 VideoCaptureAPIs.DSHOW var capture = new VideoCapture(0, VideoCaptureAPIs.DSHOW); if (!capture.IsOpened()) return; capture.XI_OffsetX = 0; // 以左上角为起点 坐标X capture.XI_OffsetY = 0; // 以左上角为起点 坐标Y capture.FrameWidth = 640; // 宽 capture.FrameHeight = 480; // 高 capture.AutoFocus = true; const int sleepTime = 10; var window = new Window("cv"); // Mat作为图像的存储容器 var image = new Mat(); while (true) { capture.Read(image); if (image.Empty()) break; // 显示 window.ShowImage(image); // Windows窗体PictureBox加载 picboxDest.Image = image.ToBitmap(); int flag = Cv2.WaitKey(sleepTime); if (flag >= 0) { break; } // 可以防止界面停止响应 Application.DoEvents(); } }
【2023-03-27 更新】
可以通过PictureBox控件的Image.Save()保存图片。
可以通过Bitmap.FromFile()或者Image.FromFile()加载图片。
/// <summary> /// 拍照 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPhoto_Click(object sender, EventArgs e) { string filename = @"img\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".jpg"; picSrc.Image.Save(@filename); //picDest.Image = Bitmap.FromFile(@filename); picDest.Image = Image.FromFile(@filename); }
【2023-04-02 更新】
关于动态生成PictureBox控件的演示,可以参考以下文章。
引用通告:VB.NET的OpenCvSharp4简单应用 - 纪小年
欢迎互相交流 :)