首页 > 其他分享 >Blob测量(例子)

Blob测量(例子)

时间:2024-08-15 14:37:58浏览次数:13  
标签:Distance Phi Column 测量 contour 例子 Blob gen Row

 

 通过定位黑色塑料件的中心位置来定位目标,

代码流程

  • median_image中值滤波,去除亮点和暗点,让图片模糊化
  • threshold 阈值二值化,获取塑料件
  • select_shape 去除细小的干扰

 

dev_close_window ()
list_files ('Pic', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
Row1:=[]
Column1:=[]
Angle1:=[]
Distance:=185
for Index := 0 to |ImageFiles| - 1 by 1
    read_image (Image, ImageFiles[Index])
    get_image_size (Image, Width, Height)
    dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
    dev_display (Image)
    dev_set_draw ('margin')
    * Image Acquisition 01: Do something
    median_image (Image, ImageMedian, 'circle', 3, 'mirrored')
    threshold (ImageMedian, Regions, 0, 60)
    select_shape (Regions, SelectedRegions, 'area', 'and', 7000, 99999)
    shape_trans (SelectedRegions, RegionTrans, 'convex')
    area_center (RegionTrans, Area, Row, Column)
    gen_cross_contour_xld (Cross, Row, Column, 16, rad(45))
    *极轴的角度(与水平轴方向)
    orientation_region (RegionTrans, Phi)
    OriAngle:=deg(Phi)
    dev_set_color ('red')
    dev_set_draw ('margin')
    dev_set_line_width (1)
    Length := 80
    disp_arrow (WindowHandle, Row, Column, Row + cos(Phi + 1.5708)* Length, Column + sin(Phi + 1.5708) * Length, 3)
    stop()
    *============测量矩形区域=================
    Length1:=56
    Length2:=14
    lineColumn:=Column+Distance
    gen_circle (Circle, Row, Column, Distance)
    *圆弧的起始角度为极轴方向对应的角度Phi:2.00711
    *圆弧的跨度(需要事先知道,可以计算得出)AngleExtend:2.73167
    AngleExtend:=2.73167
    ArcAngle:=Phi+AngleExtend
    *确定两条直线的夹角:圆弧跨度计算
    *angle_ll (Row, Column, Row, lineColumn, Row, Column, CenterRow, CenterColumn, Angle2)
    *Angle22:=deg(Angle2)
*      A:=360-(angle-Angle22)
*      Ac:=rad(A)
     *AngleC:=Phi+Ac
      *get_points_ellipse (AngleC, Row, Column, 0, Distance, Distance, RowPoint, ColPoint)
       *gen_cross_contour_xld (Cross2, RowPoint, ColPoint, 6, Angle2)
        *disp_line (WindowHandle, Row, Column, Row, Column+Distance)
         get_points_ellipse (ArcAngle, Row, Column, 0, Distance, Distance, RowPoint, ColPoint)
         *水平线    gen_contour_polygon_xld (Contour, [Row,Row], [Column,lineColumn])
         *极轴方向直线
         gen_contour_polygon_xld (Contour, [Row,Row + cos(Phi + 1.5708) * Distance], [Column,Column + sin(Phi + 1.5708) * Distance])
         *测量区域,连接中心点直线
         gen_contour_polygon_xld (Contour, [Row,RowPoint], [Column,ColPoint])
         *创建一个测量矩形区域
         gen_rectangle2 (ROI_0, RowPoint, ColPoint, rad(OriAngle+6), Length1, Length2)
*放平,将Phi角度变为0 vector_angle_to_rigid (Row, Column, Phi, Row, Column, rad(0), HomMat2D) affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false') affine_trans_region (ROI_0, RegionAffineTrans, HomMat2D, 'nearest_neighbor') stop() area_center (RegionAffineTrans, Area1, Row2, Column2) orientation_region (RegionAffineTrans, Phi1) NewAngle:=deg(Phi1) *一下就是通过定位之后的其操作 gen_measure_rectangle2 (Row2, Column2, Phi1, 100, 20, Width, Height, 'nearest_neighbor', MeasureHandle1) measure_pairs (ImageAffineTrans, MeasureHandle1, 1.6, 23, 'all', 'all', RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)

      gen_cross_contour_xld (Cross1, RowEdgeSecond, ColumnEdgeSecond, 6, 0.785398)
          stop()
endfor

 

read_image

median_image

 threshold (ImageMedian, Regions, 0, 60)

 shape_trans (SelectedRegions, RegionTrans, 'convex')

 gen_cross_contour_xld (Cross, Row, Column, 16, rad(45))

*极轴的角度(与水平轴方向),最终是将这个角度转成0
orientation_region (RegionTrans, Phi)

disp_arrow (WindowHandle, Row, Column, Row + cos(Phi + 1.5708)* Length, Column + sin(Phi + 1.5708) * Length, 3)

 gen_circle (Circle, Row, Column, Distance)

*极轴方向直线
gen_contour_polygon_xld (Contour, [Row,Row + cos(Phi + 1.5708) * Distance], [Column,Column + sin(Phi + 1.5708) * Distance])
*测量区域,连接中心点直线
gen_contour_polygon_xld (Contour, [Row,RowPoint], [Column,ColPoint])

 

 

gen_cross_contour_xld (Cross1, RowEdgeSecond, ColumnEdgeSecond, 6, 0.785398)

 

 

 

 


 

例图

 

 

标签:Distance,Phi,Column,测量,contour,例子,Blob,gen,Row
From: https://www.cnblogs.com/ken0137/p/18360869

相关文章

  • 斑点寻找工具Blob
    斑点概述斑点分析 探测并且分析图像中的二维形状Blob是先根据用户设定好的灰阶范围对图像进行分割,然后对目标进行查找和分析。斑点报告多种属性:面积质心周长主轴……..应用场景Blob分析非常适合以下场合的应用:对象在尺寸、形状和/或方向上差异很大(训练模型很难或......
  • 一个单机多卡训练模型的例子
    """Mydemotrainscript."""importargparseimportloggingimportosimportrandomimporttimeimportnumpyasnpimporttorchfromtorchimportnn,optim,Tensorfromtorch.utils.dataimportDataLoader,Datasetdefparse......
  • milvus调用阿里云大模型例子
    环境:OS:Windowspycharm:2022.1python:3.11.9 1.安装依赖模块pipinstallpymilvustqdmdashscope或是分别单独安装pipinstalldashscope--timeout=100pipinstalltqdm--timeout=100pipinstallpymilvus--timeout=100 2.导入文本报道内容将如下文本文件解压到项目的......
  • 高精度光学测量工具MXoptiCal,分分钟搞定实车测试数据对标
    一、产品概述  在实车ADAS/AD功能测试时,工程师需要在车上安装更高精度的传感器来对车辆的参照物距离进行准确测量,从而判断ADAS/AD功能实现的准确性,因此也需要车上准确的对照点位置。 MXoptiCal是由德国MdynamiX公司开发的一款高精度光学测量工具,旨在实现简便且重复性高的......
  • 在 S7-1200/S7-1500 中,如何测量一个完整程序、子程序或特定组织块的运行时间?
    RUNTIME"指令的第一次调用用来设置测量时间的起点,并将其保存在DB变量"Memory"中来为第二次调用做参考。然后调用 "TestBlock" 程序块。当程序块被执行后,"RUNTIME" 指令第二次调用,第二次调用来计算"TestBlock"程序块的运行时间并将结果(秒)写入DB变量"runtimeResult"中......
  • 转义字符及例子
    转义字符简单来说就是转变原来字符的意思文章目录转义字符1.转义字符例子2.常用转义字符总览3.常用转义字符及例子3.1\?3.2\’3.3\“小拓展:3.4\\\3.5\a3.6\n3.7\r3.8\t3.9\ddd3.10\xdd1.转义字符例子1.例子代码用换行符来举例子#include<stdio.h>......
  • 前端二进制文件转blob链接
    背景有的时候后端返回文件,文件是属于stream类型(二进制格式),我们获取到二进制格式的文件后可能是需要下载,也直接在页面上预览等等。代码<template><divclass="app"><iframe:src="iframeSrc"scrolling="auto"style="border:0;height:100vh;wid......
  • 【无线通信发展史②】带你走进查利·奥古斯丁·库仑的世界,了解(库伦定律)-(扭秤实验)-(如何
       前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。我为什么会写这个系列呢?首先肯定是因为我本身就是一名从业通信者,想着更加了解自己专业的知识,所以更想着从头开始了解通信的......
  • 在线仿真平台+C语言实现:STM32驱动0.96寸OLED屏幕显示DHT11温湿度传感器测量值
    这里推荐一款由深圳航天科技创新研究院推出的在线电路仿真软件,该软件不仅具备原理图绘制与代码编写功能,还支持在线编译代码、上传自定义代码以及进行仿真模拟,此外还能在线生成并允许下载.bin和.hex文件。官网地址如下:Document进入网页后先注册一个账号。  注册完账号后即可......
  • 【电力系统状态估计与PMU(相量测量单元)】使用WLS和PMU来估计系统的电压幅值和角度还
     ......