Files
IOT_SIM/samples/p4-t2-网络摄像机/Form1.cs
T
xuyueandClaude Opus 5.5 6b088240da
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
项目 4 任务 2 网络摄像机:PictureBox、Image / Bitmap、照片列表
- 摄像头:自绘东围墙场景(Camera/scene.svg),按云台位置切成 640×480 帧(build-frames.ts);
  Pan 每次转一格,红外对射被遮挡时画面出现翻墙的人;类名、委托、事件参数与教材 dll 一致,
  ImageRead 每 250 ms 在后台线程触发
- Image / Bitmap 保存真实图片数据:Save、FromFile、FromStream,文件夹不存在时报 GDI+ 一般性错误;
  图片每张只发给浏览器一次(按内容哈希缓存)
- 程序所在目录(AppDomain.CurrentDomain.BaseDirectory,编译检查单独放行)和当前目录指向可写的 bin/Debug,
  沙箱里在沙箱的临时目录
- PictureBox(SizeMode、BorderStyle);设计器工具箱加"图片框";运行区显示程序保存的图片,点开看大图;
  实训台摄像头图标显示开启状态
- 评分规则加图片框显示图片、摄像头开关与转向、保存图片三种检查;示例 p4-t2-网络摄像机
- 测试:摄像头端到端、图片读写与程序目录、AppDomain 编译检查、评分出错情况

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:58:09 +08:00

86 lines
2.7 KiB
C#

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;
using System.IO;
using DeviceCtrlLibrary;
namespace 网络摄像机
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
static string CameraPath = AppDomain.CurrentDomain.BaseDirectory + "Camera/";//拍照保存路径
static string IpCameraIPAddress = "192.168.14.131";//网络摄像机IP
bool IsOpen = false;
Image ReadImage = null;//存储摄像机图片
private void Form1_Load(object sender, EventArgs e)
{
//判断拍照保存文件夹是否存在,若不存在则先创建
if (!Directory.Exists(CameraPath))
Directory.CreateDirectory(CameraPath);
DeviceCtrlHelper.ipCameraHelper.ImageRead += ipCameraHelper_ImageRead;//绑定图片显示事件
}
void ipCameraHelper_ImageRead(ImageReadEvenArgs e)
{
ReadImage = e.img;//保存摄像机拍到的图片
pictureBox1.Image = ReadImage;//显示在图片框上
}
private void btn_open_Click(object sender, EventArgs e)
{
IsOpen = !IsOpen;
if (IsOpen)
{
IpCameraIPAddress = txt_ip.Text;
DeviceCtrlHelper.ipCameraHelper.Open(IpCameraIPAddress, "admin", "");//用户名admin,密码为空
DeviceCtrlHelper.ipCameraHelper.Start();//开始传送图像
btn_open.Text = "关";
}
else
{
DeviceCtrlHelper.ipCameraHelper.Stop();//停止传送图像
btn_open.Text = "开";
}
}
private void btn_up_Click(object sender, EventArgs e)
{
DeviceCtrlHelper.ipCameraHelper.PanUp();//向上转
}
private void btn_down_Click(object sender, EventArgs e)
{
DeviceCtrlHelper.ipCameraHelper.PanDown();//向下转
}
private void btn_left_Click(object sender, EventArgs e)
{
DeviceCtrlHelper.ipCameraHelper.PanLeft();//向左转
}
private void btn_right_Click(object sender, EventArgs e)
{
DeviceCtrlHelper.ipCameraHelper.PanRight();//向右转
}
private void btn_camera_Click(object sender, EventArgs e)
{
//拍照:把当前图像以时间命名保存到Camera文件夹
if (ReadImage != null)
ReadImage.Save(CameraPath + DateTime.Now.ToString("yyyyMMdd_HH mm ss") + ".jpg");
}
}
}