海康视觉——当不更新拍照时,使用上一张的图像进行运算

一、需求:

机器需要一个功能,将标签贴在标签位置上

一个载具上有五个标签位,每个标签位只在Y轴间隔相同距离

相机只在第一个标签位才拍照,之后四个标签位根据第一个标签位的图像进行修正XYR后

直接移动Y轴距离就可以进行后四个标签位贴标了

节省了工时并提高了效率

等到下一个载具时,在第一个标签位才进行拍照

二、上下相机

下相机拍摄标签

上相机拍摄标签位

下相机:标签每个都需要拍照,每次拍照都与基准点做比较,进行标签自身的修正

上相机:第一标签位才拍照,标签位与基准点做比较,进行标签位的修正

而后的四个标签位,标签位的修正是不会改变的,会改变的只有对标签的修正

一般载具都是固定死的,标签位是无法修正的,所以依旧对标签的修正

三、只讲解上相机的这个功能如何使用

(1)产品:

使用的海康Vision Master 4.2.0

(2)流程:
(3)分析:

接收数据是接收来自上位机的数据

约定好一个地址,如D100

当地址里数值是1000,则为更新拍照;当地址里数值是2000,则为使用上一张拍照的图像

协议解析是对接收的数据进行解析

上位机发送的数据是16进制组装结果,需要对其进行解析才能读到1000或者2000

最为重要的是脚本里的内容

(4)代码分析:
cs 复制代码
1、定义两个保存图像的变量
    ImageData image;
    ImageData imageSecond;

2、将输入的图像保存到image变量中
    GetImageValue ("inImage",ref image);

3、将image的变量的图像,再放到imageSecond变量中
    imageSecond =image;

4、将变量中的图像保存到输出的图像    
    SetImageValue ("outImage",image);
    SetImageValue ("outImage",imageSecond);

5、当发送1000的时候,将输入的图像保存到image,并image的图像保存到imageSecond,输出的图像为image

6、当发送2000的时候,输出的图像为imageSecond
(5)绑定:

输入的图像类型是IMAGE,绑定的是图像源图像

输入的判断值,绑定的是解析协议的out0

输出的图像类型是IMAGE

四、注意要点

当你手动去拍照的时候,需要将之后的流程改变成图像源图像,否则无法更新图像

只有跑自动的时候才使用脚本3.outImage

而且标定转换也需要和上图进行同步绑定

比如当,几何变化绑定的是图像源图像,那你的标定转换也需要更换成图像源图像

而当几何变化绑定的是脚本3.outImage时,标定转换也需要更换成脚本3.outImage

脚本的代码:

cs 复制代码
using System;
using System.Text;
using System.Windows.Forms;
using Script.Methods;
public partial class UserScript:ScriptMethods,IProcessMethods
{
    //the count of process
	//执行次数计数
    int processCount ;  
    ImageData image;
    ImageData imageSecond;

    /// <summary>
    /// Initialize the field's value when compiling
	/// 预编译时变量初始化
    /// </summary>
    public void Init()
    {
        //You can add other global fields here
		//变量初始化,其余变量可在该函数中添加
        processCount = 0;

    }

    /// <summary>
    /// Enter the process function when running code once
	/// 流程执行一次进入Process函数
    /// </summary>
    /// <returns></returns>
    public bool Process()
    {
        //You can add your codes here, for realizing your desired function
		//每次执行将进入该函数,此处添加所需的逻辑流程处理
        GetImageValue ("inImage",ref image);         
        if( in0 == 1000 )
        {
            SetImageValue ("outImage",image);
            imageSecond =image;

        }
		else
        {
            SetImageValue ("outImage",imageSecond);
        }
        
        return true;
    }
}
相关推荐
顾道长生'5 小时前
(Arxiv-2025)ID-COMPOSER:具有分层身份保持的多主体视频合成
计算机视觉·音视频·composer
一只侯子6 小时前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
Coding茶水间7 小时前
基于深度学习的安全帽检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
自由的好好干活12 小时前
使用Qoder编写ztdaq的C#跨平台示例总结
linux·windows·c#·qoder
FuckPatience13 小时前
C# 实现元素索引由1开始的链表
开发语言·链表·c#
WWZZ202515 小时前
快速上手大模型:深度学习12(目标检测、语义分割、序列模型)
深度学习·算法·目标检测·计算机视觉·机器人·大模型·具身智能
Ai1731639157917 小时前
2025.11.28国产AI计算卡参数信息汇总
服务器·图像处理·人工智能·神经网络·机器学习·视觉检测·transformer
我是唐青枫17 小时前
C#.NET 范围与索引(Range、Index)完全解析:语法、用法与最佳实践
c#·.net
烛阴19 小时前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
深海潜水员20 小时前
【MonoGame游戏开发】| 牧场物语实现 第一卷 : 农场基础实现 (下)
vscode·游戏·c#·.net·monogame