金属圆柱求取倾斜角度

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

方法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,一经查实,立即删除!

相关文章

编程开发之--java多线程学习总结(2)同步代码块

1、第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize;/*** 1、使用同步代码块* 语法:synchronized (同步锁) {//需要同步操作的代码 }同步锁:为了保证每个线程都能正常的执行原子操作&a…

swift 随机数

1.一行代码生成随机数 arc4random() 如果要生成一个生成在一定范围内的随机整数: func randomIn(#min: Int, max: Int) -> Int { return Int(arc4random()) % (max - min 1) min} 该方法会生成[min, max]范围内的随机整数转载于:https://www.cnblogs.com/qiyiyifan/p/…

u-boot裁减

http://blog.csdn.net/menuconfig/article/details/2276078u-boot裁减的主要方法是通过删除不需要的命令来减小可执行代码体积。比如说,如果不需要网络相关的功能,则可以将网络相关的所有命令全部删除,可以节约可观的flash空间。一般u-boot的…

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…

github设置添加SSH

很多朋友在用github管理项目的时候,都是直接使用https url克隆到本地,当然也有有些人使用 SSH url 克隆到本地。然而,为什么绝大多数人会使用https url克隆呢? 这是因为,使用https url克隆对初学者来说会比较方便&…

linux设置套接字缓冲区的大小

系统提供的socket缓冲区大小为8K,你可以将之设置为64K,尤其在传输实时视频时。 socket发送数据时候先把数据发送到socket缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满&#x…

【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输入法的进程

Socket编程原理

什么是SocketSocket接口是TCP/IP网络的API&#xff0c;Socket接口定义了许多函数或例程&#xff0c;程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程&#xff0c;必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果…

【XLL 框架库函数】 TempActiveCell/TempActiveCell12

这两个函数创建 XLOPER/XLOPER12 &#xff0c;包含了当前激活工作表上的单元格引用。 LPXLOPER TempActiveCell(WORD row, BYTE col); LPXLOPER12 TempActiveCell12(RW row, COL co); 参数 row 引用行号&#xff0c;行号参数是从0开始的&#xff0c;因此 第一行就是0. col 引用…

POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】

Balanced Lineup Time Limit: 5000MS Memory Limit: 65536KTotal Submissions: 53703 Accepted: 25237Case Time Limit: 2000MSDescription For the daily milking, Farmer Johns N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to…

halcon测试一张图片是否过曝或过暗

read_image (Image, 1.bmp) count_obj (Image, Number) if(Number<0)return() endif min_max_gray (Image, Image, 0, Min, Max, Range) if(Min<1)*图像过暗 endif if(Max>254)*图像过曝 endif

真的要做一辈子的程序员吗?来自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安装…

Spring在3.1版本后的bean获取方法的改变

xml配置不变&#xff0c;如下 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://…

使用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…