前言
工业现场、实验室或安防监控等实际场景中,我们常常面对一个看似简单却棘手的问题:如何对大量静态图像进行结构化处理?许多视频监控系统虽然能录像回放,但缺乏对画面内容的智能分析与分类归档能力,尤其无法按区域自动保存关键帧。
今天推荐一款简单易用、功能全面的图片批量处理与视觉检测工具。不追求炫目的AI模型,而是专注于解决”看得清、分得开、存得住”这些基础却关键的问题。
项目介绍
OpenCVDS是一个简单易用的开源图片批量处理计算机视觉检测软件,初衷是用以补充Windows平台的一些视频监控系统没有的视觉检测记录分区保存功能。专为Windows平台设计,通过.net 4.X(C#/WPF)技术实现,采用SQLite数据库存储数据,并以GNU通用公共许可证v3.0版(GPL v3)发布。
主要目标是补充现有视频监控系统在视觉检测记录分区保存方面的不足,为大家提供更加便捷、高效的视觉检测体验。
项目功能
1、图片批量处理:支持从文件夹或单个文件中选择.jpg图片,进行批量处理。
2、分区另存:根据用户设置的图片区域,将图片分割并另存为新文件。
3、转换大小:将图片按指定尺寸转换并另存。
4、自动截屏:以指定时间间隔进行全屏截图,并按日期层级保存。
5、视觉检测:利用EmguCV(或OpenCV)的分类器进行计算机视觉检测,显示检测结果数量。
6、连续0标记:对连续检测结果为0的图片进行标记。
项目特点
简单易用:界面友善,操作简便,软件配有详细的操作手册。
功能全面:集图片处理、视觉检测、数据备份与恢复于一体,满足多样化需求。
灵活配置:支持自定义分类器、图片区域和截屏时间间隔等参数。
项目技术
采用.net 4.X(C#/WPF)技术实现,利用SQLite数据库存储数据。
视觉检测方面,它依赖于EmguCV(或OpenCV)的分类器进行图像识别和处理。
通过多线程技术,实现截屏操作的后台运行,不影响用户其他操作。
另外,OpenCVDS还支持数据备份与恢复功能,确保用户数据安全。
项目说明
1、输入数据时”(*)”为必填项。
2、图片文件一般指.jpg文件。
3、各类编号、名称不可重复。
项目代码
1、自动化屏幕监控与归档功能
private void ScreenShot
{
IsStart = true;
System.Drawing.Bitmap bit = new System.Drawing.Bitmap(System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width, System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height);
if (DalDataConfig.Config != null && System.IO.Directory.Exists(DalDataConfig.Config.StoragePath) == true)
{
if (DalDataConfig.Config.ScreenShotTimeSpan > 0)
{
do
{
Thread.Sleep(1000 * DalDataConfig.Config.ScreenShotTimeSpan * 60);
Graphics g = Graphics.FromImage(bit);
g.CopyFromScreen(new System.Drawing.Point(0, 0), new System.Drawing.Point(0, 0), bit.Size);
string name = DateTime.Now.ToString("yyyyMMdd_HHmmss_fff") + ".jpg";
string dirPath = DalDataConfig.Config.StoragePath + "\" + name.Substring(0, 4) + "\" + name.Substring(0, 8);
if (Directory.Exists(dirPath) == false)
{
BaseDirClass.CreateDir;
}
bit.Save(dir + "\" + name, ImageFormat.Jpeg);
g.Dispose;
} while (IsStart);
}
else
{
System.Windows.MessageBox.Show("请先设置自动截图时间间隔!");
}
}
else
{
System.Windows.MessageBox.Show("无此路径:" + DalDataConfig.Config.StoragePath + ",请先设置图片存储位置!");
}
}
2、按预设区域批量裁剪图片并命名保存
private bool Save(Bitmap source, ObjRect r, string path)
{
bool result = false;
//定义目标
try
{
Rectangle destRect = new Rectangle(0, 0, r.XLength, r.YLength);//目标区域
Bitmap destBitmap = new Bitmap(r.XLength, r.YLength);//目标位图
Graphics g = Graphics.FromImage(destBitmap);//目标位图创建GDI+绘图图面
Rectangle sourceRect = new Rectangle(r.XStart, r.YStart, r.XLength, r.YLength);//定义原图区域
g.DrawImage(source, destRect, sourceRect, GraphicsUnit.Pixel);//从原图区域获取内容绘制到目标区域,进而g获得图片内容
string destPath = BaseFileClass.GetAddPrevPath(r.RectCode, path);
destBitmap.Save(destPath, System.Drawing.Imaging.ImageFormat.Jpeg); //保存图片为指定格式
g.Dispose;//释放绘图资源
destBitmap.Dispose;//释放目标位图
result = true;
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString);
}
return result;
}
项目效果
通过批量处理图片,可以快速完成大量图片的视觉检测任务。分区另存和转换大小功能则进一步提高了图片处理的灵活性和效率。自动截屏功能则为用户提供了便捷的监控手段,确保重大时刻不被遗漏。视觉检测功能则通过准确的图像识别技术,协助大家发现潜在问题。
系统主页

图片区域

Haar分类器

系统设置

项目源码
可以通过查看项目源码和协助文档,进行操作和二次开发。
Gitee:https://gitee.com/little-mis/open-cvds
总结
一款开源的计算机视觉检测软件,以其简单易用、功能全面的特点受到了大家的好评。它不仅补充了现有视频监控系统在视觉检测记录分区保存方面的不足,还提供更加便捷、高效的视觉检测体验。