TachiSnap
TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…
OpenIVS是一个开源的工业视觉系统,它提供了一套工业视觉软件框架,帮助你快速完成工业视觉检测项目。
OpenIVS 的全称是 Open Source Industrial Vision System,即开源工业视觉系统。它是一个开源的工业视觉软件框架,帮助你快速完成工业视觉检测项目。
OpenIVS 是一个基于 .NET 平台的工业视觉软件框架,提供了相机连接、图像采集、图像处理、模型推理、PLC控制等功能。你可以使用 OpenIVS 快速搭建一个工业视觉检测系统,实现自动化检测、缺陷识别等功能。
在使用 OpenIVS 前,需要安装以下软件:
常见问题:
如果没有安装MVS,则会出现找不到 MvCameraControl 的问题。
如果安装的不是 MVS,而是 机器视觉工业相机SDK ,则需要自行修改引用的 DLL 路径。
我们依赖的 MVS 的 DLL 路径是:C:\Program Files (x86)\MVS\Development\DotNet\win64\MvCameraControl.Net.dll
Halcon(可选)
深度视觉AI平台
在 ModbusManager.cs 中可以修改PLC相关配置:
_modbusApi.SetSerialPort(
settings.PortName, // 串口名称
settings.BaudRate, // 波特率
settings.DataBits, // 数据位
settings.StopBits, // 停止位
settings.Parity, // 校验位
(byte)settings.DeviceId // 设备ID
);
也可以在设置页面修改:
MoveToPositionAsync方法可调整位置控制逻辑Math.Abs(currentPosition - position) < 1.0f可在ModbusManager中增加其他PLC控制动作,以满足特定需求。例如:增加 OK/NG 信号控制。
假设 PLC 通过写入寄存器 16 实现 OK/NG 信号控制,可以在ModbusManager中增加如下方法:
_modbusApi.WriteSingleRegister(16, isOK);
单相机的情况下,可以在设置页面修改,包括相机名称,触发方式等:
同时也可以在设置页面修改:
多相机的情况下,可以在 CameraInitializer.cs 中修改相机连接参数:
CameraInstance.Instance// 多相机管理示例
private List<CameraManager> _cameraManagers = new List<CameraManager>();
// 初始化多个相机
public void InitializeMultipleCameras(Settings settings)
{
foreach (var cameraConfig in settings.CameraConfigs)
{
var cameraManager = new CameraManager();
// 设置相机参数
_cameraManagers.Add(cameraManager);
}
}
在设置页面,可以修改模型路径:
在 ModelManager.cs 中可以修改AI模型推理相关配置:
加载多个模型
// 多模型管理示例
private Dictionary<string, Model> _models = new Dictionary<string, Model>();
// 加载多个模型
public void LoadModels(List<string> modelPaths)
{
foreach (var path in modelPaths)
{
string modelName = Path.GetFileNameWithoutExtension(path);
_models[modelName] = new Model(path, 0);
}
}
实现模型级联
PerformInference方法实现多模型级联推理// 级联推理示例
public string PerformCascadeInference(Bitmap image)
{
// 第一阶段:检测
var detectionResult = _models["DetModel"].InferBatch(imageList);
// 第二阶段:分割
var smallImages = CropImage(image, detectionResult);
var segmentationResult = _models["SegModel"].InferBatch(smallImages);
return segmentationResult;
}
自定义结果处理
简单的设备逻辑可以在设置里修改:
在 MainLoopManager.cs 中可以修改整体处理逻辑:
修改位置序列
// 位置序列定义可以根据需要调整
private readonly float[] _positionSequence = new float[] { 220, 330, 440, 330 };
调整处理流程
RunMainLoopAsync方法中定义添加图像预处理
ProcessImageAsync方法中添加图像处理逻辑// 图像预处理示例
private Bitmap PreprocessImage(Bitmap image)
{
using (var mat = BitmapConverter.ToMat(image))
{
// 添加预处理步骤,如二值化等
Cv2.CvtColor(mat, mat, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(mat, mat, 128, 255, ThresholdTypes.Binary);
return BitmapConverter.ToBitmap(mat);
}
}
自定义后处理逻辑
// 后处理逻辑示例
private bool PostProcessResult(string result)
{
// 实现自定义决策逻辑
if (result.Contains("缺陷") && _currentPositionIndex == 2)
{
// 特定位置的特定缺陷处理
return false;
}
return string.IsNullOrEmpty(result);
}
more like this
TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…
SCYTHE is a lightweight, C#-based game engine focused on modifiability and rapid iteration using Raylib.
Provides the ability to show various dialogs and child windows in a DI injectable application dialog service ready to p…
search projects, people, and tags