加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

新阁教育1

(2022-04-19 13:58:08)
分类: 电脑
2022-03-27
Halcon视觉通用流程:
1.  采集图像
2. 有无判断(Blob、模板)
    (1) Blob流程=>图像分割=>形态学=>连通性分析(区域的分割)=>填充=>特征提取
    (2) 定位
3. 获取位置、角度相关信息
4. 仿射变换(跟随)    求变换矩阵、ROI变化
5. 图像预处理
6. 图像处理
7. 结果输出

标定
1. 像素变换   像素当量
2. 不同坐标系之间标定(九点标定)
3. 多相机通过标定统一到一个坐标系中

联合编程

== 
Halcon几何定位步骤
新阁教育1
C#  固高锡球4.20课初始化及日志显示  7"50 讲到 增加记录, 怎样判断是 跨线程访问:

public void AddLog(int index, string log)
{
            if(!this.lst_Info.InvokeRequired)
{
                ListViewItem lst = new ListViewItem("   "+CurrentTime,index);
                lst.SubItems.Add(log);
                this.lst_Info.Items.Insert(0, lst);
}
            else
{
                this.lst_Info.Invoke(new Action(() =>
                {
                    ListViewItem lst = new ListViewItem("   "+CurrentTime, index);
                    lst.SubItems.Add(log);
                    this.lst_Info.Items.Insert(0, lst);
                }));
}
}

        ///
        /// 添加报警信息
        ///
        /// 报警信息
        /// true为添加, false为撤消报警
        public void AddAlarm(string info, bool isAck )
        {
            if(isAck)   //增加报警
{
                if(!AlarmInfoList.Contains(info))
{
                    AlarmInfoList.Add(info);
}
}
            else
{
                if (AlarmInfoList.Contains(info))
                {
                    AlarmInfoList.Remove(info);
                }
            }

            //刷新显示
            RefreshAlarm();

        }

        ///
        /// 更新报警界面
        ///
private void RefreshAlarm()
{
            this.Invoke(new Action(() =>
            {
                if (AlarmInfoList.Count == 0)
                {
                    lbl_ScrollInfo.Visible = false;
                    lbl_Info.Visible = true;
                    lbl_Info.Text = "系统运行正常";
                    led_state.Value = true;
                }
                else if (AlarmInfoList.Count == 1)
                {
                    lbl_ScrollInfo.Visible = false;
                    lbl_Info.Visible = true;
                    lbl_Info.Text = AlarmInfoList[0];
                    led_state.Value = false;
                }
                else
                {
                    lbl_ScrollInfo.Visible = true;
                    lbl_Info.Visible = false;
                    lbl_ScrollInfo.Text = string.Join("  ", AlarmInfoList).Trim();
                    led_state.Value = false;
                }
            }
            ));
        }

///
/// 报警信息列表
///
private List AlarmInfoList = new List();

///
/// 当前时间
///
private string CurrentTime
{
            //get { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); }
            get { return DateTime.Now.ToString("HH:mm:ss"); }
        }



这下面是网上摘录的:
//非跨线程访问 直接调用即可,跨线程需要使用Invoke方法
if (!listView1.InvokeRequired)
{
//声明一个列表对象 加入icon图片 下标 = index 0-2 从0开始
//插入icon需要ImageList组件添加图片
ListViewItem lst = new ListViewItem(" "+CurrentTime,index);
//列表对象【带icon】 加入文字项
lst.SubItems.Add("hello");

//插入到列表的第n项,向下显示最新项。
listView1.Items.Insert(listView1.Items.Count, lst);
}
//跨线程访问
else
{
Invoke(
new Action(
() =>
{
ListViewItem lst = new ListViewItem(" " + CurrentTime, index);

lst.SubItems.Add("hello");

listView1.Items.Insert(listView1.Items.Count, lst);
}
));
}

=============================================================
2022-04-25
在一个按钮中设计一个循环, 会让屏幕停止:
新阁教育1


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有