金属圆柱求取倾斜角度

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

方法1:

     count_seconds (Seconds1)read_image (Image, '9_7750_f3d301de6764d94.jpg')get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowHandle)dev_display (Image)rgb1_to_gray (Image, GrayImage)dev_display (GrayImage)  threshold (GrayImage, Region, 75, 100)closing_circle (Region, RegionClosing, 5)gen_contour_region_xld (RegionClosing, Contours, 'border')segment_contours_xld (Contours, ContoursSplit, 'lines', 50, 10, 10) *擬合水平線select_contours_xld (ContoursSplit, SelectedContours0, 'direction', rad(-5), rad(5), rad(-0.5), rad(0.5))select_shape_xld (SelectedContours0, Stamps, 'row', 'and', 20, 35)length_xld (Stamps, Length0)tuple_max (Length0, Max0)gen_empty_obj (EmptyObject0)count_obj (SelectedContours0, Number0)for i := 1 to Number0 by 1select_obj (SelectedContours0, ObjectSelected, i)length_xld (ObjectSelected, Length0)if (Length0=Max0)concat_obj (EmptyObject0, ObjectSelected, EmptyObject0)endifendfor*擬合垂直線select_contours_xld (ContoursSplit, SelectedContours1, 'direction', rad(85), rad(95),rad(-0.5), rad(0.5))    length_xld (SelectedContours1, Length1)tuple_max (Length1, Max1)gen_empty_obj (EmptyObject1)count_obj (SelectedContours1, Number1)   for j := 1 to Number1 by 1select_obj (SelectedContours1, ObjectSelected, j)length_xld (ObjectSelected, Length1)if (Length1=Max1)concat_obj (EmptyObject1, ObjectSelected, EmptyObject1)endifendfor    fit_line_contour_xld (EmptyObject0, 'tukey', -1, 0, 5, 2, RowBegin0, ColBegin0, RowEnd0, ColEnd0, Nr0, Nc0, Dist0)gen_region_line(RegionLine0, RowBegin0, ColBegin0, RowEnd0, ColEnd0)fit_line_contour_xld (EmptyObject1, 'tukey', -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1)gen_region_line(RegionLine1, RowBegin1, ColBegin1, RowEnd1, ColEnd1)*求交點intersection_lines (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowBegin0, ColBegin0, RowEnd0, ColEnd0, Row, Column, IsOverlapping)   dev_clear_window()dev_display (Image)dev_set_color ('magenta')dev_set_line_width (2)distance_pp(Row,Column,RowEnd0, ColEnd0, DistanceEnd)distance_pp(Row,Column,RowBegin0, ColBegin0, DistanceBegin)if (DistanceBegin > DistanceEnd)disp_line(WindowHandle,RowBegin0, ColBegin0,Row, Column)elsedisp_line(WindowHandle,RowEnd0, ColEnd0,Row, Column)endifdistance_pp(Row,Column,RowEnd1, ColEnd1, DistanceEnd)distance_pp(Row,Column,RowBegin1, ColBegin1, DistanceBegin)if (DistanceBegin > DistanceEnd)disp_line(WindowHandle,RowBegin1, ColBegin1,Row, Column)elsedisp_line(WindowHandle,RowEnd1, ColEnd1,Row, Column)endif*計算角度dev_set_color ('green')gen_region_points(Region,Row, Column)gen_cross_contour_xld (Cross, Row, Column, 20, rad(45))dev_display(Cross)angle_ll (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowBegin0, ColBegin0, RowEnd0, ColEnd0, Angle)AngleDeg := deg(Angle)count_seconds (Seconds2)disp_message (WindowHandle, 'CT : ' + ((Seconds2-Seconds1)*1000)+' mSec', 'image', 10 , 10, 'slate blue', 'true')  disp_message (WindowHandle, 'AngleDeg : ' + AngleDeg+' 度', 'image', 60 , 10, 'slate blue', 'true')  stop()

在这里插入图片描述
方法2:

list_files ('', ['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)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do somethingcount_seconds (Seconds3)mean_image (Image, ImageMean, 30, 30)dyn_threshold (Image, ImageMean, RegionDynThresh, 15, 'light')closing_circle (RegionDynThresh, RegionClosing1, 12.5)fill_up (RegionClosing1, RegionFillUp)connection (RegionFillUp, ConnectedRegions)select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)opening_rectangle1 (SelectedRegions, RegionOpening, 100, 10)skeleton (RegionOpening, Skeleton)gen_contours_skeleton_xld (Skeleton, Contours1, 1, 'filter')fit_line_contour_xld (Contours1, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)gen_region_line (RegionLines, RowBegin, ColBegin, RowEnd, ColEnd)opening_rectangle1 (SelectedRegions, RegionOpening1, 10, 100)dilation_circle (RegionOpening, RegionDilation, 12.5)difference (RegionOpening1, RegionDilation, RegionDifference)connection (RegionDifference, ConnectedRegions1)select_shape_std (ConnectedRegions1, SelectedRegions1, 'max_area', 70)skeleton (SelectedRegions1, Skeleton1)gen_contours_skeleton_xld (Skeleton1, Contours2, 1, 'filter')fit_line_contour_xld (Contours2, 'tukey', -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr, Nc, Dist)gen_region_line (RegionLines1, RowBegin1, ColBegin1, RowEnd1, ColEnd1)intersection_lines (RowBegin1, ColBegin1, RowEnd1, ColEnd1, RowBegin, ColBegin, RowEnd, ColEnd, Row, Column, IsOverlapping)angle_ll (RowEnd1, ColEnd1,RowBegin1, ColBegin1,RowBegin, ColBegin, RowEnd, ColEnd,   Angle)gen_cross_contour_xld (Cross, Row, Column, 20, rad(45))count_seconds (Seconds4)dev_display(Image)dev_set_line_width (3)dev_set_color ('red')dev_display(RegionLines)dev_display(RegionLines1)dev_set_color ('green')dev_display(Cross)AngleDeg := deg(Angle)disp_message (WindowHandle, 'CT : ' + ((Seconds4-Seconds3)*1000)+' mSec', 'image', 10 , 10, 'slate blue', 'true')  disp_message (WindowHandle, 'AngleDeg : ' + AngleDeg+' 度', 'image', 60 , 10, 'slate blue', 'true')stop()
endfor

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PhpStudy 升级 MySQL 版本到5.7

1:备份当前数据库数据、 最好是导成 SQL 文件2:备份 PhpStudy 下的 MySQL 文件夹、以防升级失败、还可以使用旧版本的数据库3:下载MySQL5.7、解压、然后放在 PhpStudy 下的 MySQL 文件夹下地址:https://dev.mysql.com/downloads/f…

使用直线标定板进行相机畸变校正,并且进行9点标定(halcon)

直线标定板图片: 机械吸头位置图片: 处理代码 read_image (Image, 直线标定板图片/Left201118140641772.bmp) get_image_size (Image, Width, Height) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display…

【Java MyBatis Generator】使用generator自动生成Dao,Mapping和实体文件

具体请参照&#xff1a; http://blog.csdn.net/fengshizty/article/details/43086833 按照上面博客地址&#xff0c;下载Generator的依赖包&#xff1a; 如下是我的配置文件&#xff1a; 1 <?xml version"1.0" encoding"UTF-8"?>2 <!DOCTYPE ge…

h5移动端设备像素比dpr介绍

首先介绍一下概念 devicePixelRatio其实指的是window.devicePixelRatio window.devicePixelRatio是设备上物理像素和设备独立像素(device-independent pixels (dips))的比例。 公式表示就是&#xff1a;window.devicePixelRatio 物理像素 / dips 好了&#xff0c;到了这里有出…

halcon直线标定板对相机标定的效果评估(对比矫正前后、对比标定板矫正效果)

原图 程序源码 * gen_caltab (7, 7, 0.0025, 1/2.5, GB025标定板.descr, GB025标定板.ps) * Calibration 01: Code generated by Calibration 01 * CameraParameters : [0.048105,-44.0585,8.31518e-006,8.3e-006,641.37,588.269,1280,1024] * CameraPose : [-0.000849522,-0.…

【QQ输入法】QQ输入法-剪切板 释放内存

发现一个神奇的情况&#xff1a; 清除和关闭的操作&#xff1a; 1. 2.右键 3.点击 4.清空 5.最后需要关闭 QQ输入法的进程

真的要做一辈子的程序员吗?来自10年程序员的心声

经常听一些同学说&#xff1a;不知道下一份工作该去哪类公司做些什么&#xff0c;我的职场人际一团糟老板不重视我&#xff0c;我现在成长的非常慢所以又想跳槽了&#xff0c;我看不到公司的发展前景好迷茫&#xff0c;其实这一切的困惑都来源于没有做好职业规划或者你根本就没…

网络编程之 TCP / UDP 及其流程比较

TCP与UDP的区别 1、基于连接与无连接 2、对系统资源的要求&#xff08;TCP较多&#xff0c;UDP少&#xff09;3、UDP程序结构较简单 流模式与数据报模式 4、TCP保证数据正确性&#xff0c;UDP可能丢包 5、TCP保证数据顺序&#xff0c;UDP不保证具体编程时的区别 1、socket()的参…

Tomcat在Linux上的安装与配置

Tomcat在Linux上的安装与配置 1、 jdk下载地址&#xff1a; http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html tomcat下载地址:http://tomcat.apache.org/download-70.cg 2、jdk安装与配置.&#xff08;rpm包&#xff09; (1)jdk安装…

使用halcon选择点拟合成直线求直线角度

原图 源码 read_image (Image, 0.bmp) dev_clear_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image)binary_threshold (Image, Region, max_separability, dark, UsedThreshold) connection (Region, ConnectedRegions) select_s…

Linux网络/firewalld和netfilter/netfilter/iptables语法

为什么80%的码农都做不了架构师&#xff1f;>>> linux网络相关 查看网卡网络信息 ifconfig 命令查看网卡网络信息&#xff0c;比如ip、网关、子网掩码等&#xff0c;但是安装centos7的版本或者某些未知原因&#xff0c;此命令提示找不到&#xff0c;我们可以使用Yu…

Chrome开发者工具详解(4)-Profiles面板

Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求&#xff0c;你可以使用Profiles面板&#xff0c;利用这个面板你可以追踪网页程序的内存泄漏问题&#xff0c;进一步提升程序的JavaScript执行性能。 概述 当前使用的Chrome最新版为…

halcon通过点拟合圆形,鼠标选点

原图 源码 read_image (Image, 0.bmp) dev_clear_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image)binary_threshold (Image, Region, max_separability, dark, UsedThreshold) connection (Region, ConnectedRegions) select_s…

LINUX多播编程

一.单播&#xff0c;广播和多播 1.单播用于两个主机之间的端对端通信&#xff0c;广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端&#xff0c;要么对一个主机进行通信&#xff0c;要么对整个局域网上的主机进行通信。实际情况下&#xff0c;经常需…

cas单点登录搭建

Cas Server下载&#xff1a;http://developer.jasig.org/cas/ Cas Client下载&#xff1a;http://developer.jasig.org/cas-clients/ 测试环境&#xff1a; jdk&#xff1a;java version "1.8.0_60" tomcat&#xff1a;apache-tomcat-7.0.65 mysql&#xff1a;mysql5…

689D Magic Odd Square 奇数幻方

1 奇数阶幻方构造法 (1) 将1放在第一行中间一列; (2) 从2开始直到nn止各数依次按下列规则存放&#xff1a;按 45方向行走&#xff0c;向右上&#xff0c;即每一个数存放的行比前一个数的行数减1&#xff0c;列数加1 (3) 如果行列范围超出矩阵范围&#xff0c;则回绕。例如1在第…

Java单例的常见形式

2019独角兽企业重金招聘Python工程师标准>>> Java单例的常见形式 本文目的&#xff1a;总结Java中的单例模式 本文定位&#xff1a;学习笔记 学习过程记录&#xff0c;加深理解&#xff0c;便于回顾。也希望能给学习的同学一些灵感 一、非延迟加载单例类 public cla…

U-Boot启动过程完全分析

1.1 U-Boot 工作过程 U-Boot启动内核的过程可以分为两个阶段&#xff0c;两个阶段的功能如下&#xff1a; &#xff08;1&#xff09;第一阶段的功能 硬件设备初始化 加载U-Boot第二阶段代码到RAM空间 设置好栈 跳转到第二阶段代码入口 &#xff08;2&#x…

CJOJ 2171 火车站开饭店(树型动态规划)

CJOJ 2171 火车站开饭店&#xff08;树型动态规划&#xff09; Description 政府邀请了你在火车站开饭店&#xff0c;但不允许同时在两个相连的火车站开。任意两个火车站有且只有一条路径&#xff0c;每个火车站最多有 50 个和它相连接的火车站。 告诉你每个火车站的利润&#…

各视频、各音频之间格式任意玩弄(图文详解)

写在前面说的话 在这里&#xff0c;记录下来&#xff0c;是为了方便以后偶尔所制作所需和你们前来的浏览学习。 学会&#xff0c;玩弄一些视频和音频的软件&#xff0c;只有好处没有害处。同时&#xff0c;也不需很多时间&#xff0c;练练手罢了。也是方便自己所用吧&#xff0…