halcon輪廓擦除_halcon第十二講,毛刺去除

在視覺測量中我們很會被毛刺問題困擾,產生干擾的因素很多,有打光問題和產品本生帶毛刺,接下來給兄弟們帶來兩種去毛刺的方法。

第一種

read_image (Image1323153Ba0b96cf52f88f1, '1')

rgb1_to_gray (Image1323153Ba0b96cf52f88f1, GrayImage)

laplace_of_gauss (GrayImage, ImageLaplace, 0.5)

threshold_sub_pix (ImageLaplace, Border, 1)

select_obj (Border, ObjectSelected, 1)

smooth_contours_xld (ObjectSelected, SmoothedContours, 15)

get_contour_xld (SmoothedContours, Row1, Col1)

get_contour_xld (ObjectSelected, Row2, Col2)

*錯誤距離閾值

errdist:=0.5

distRow:= sqrt((Row1-Row2)*(Row1-Row2)+(Col1-Col2)*(Col1-Col2))

a:=find(distRow[>]errdist,1)

e:=Row2[a]

g:=Col2[a]

dev_display (Image1323153Ba0b96cf52f88f1)

gen_cross_contour_xld (Cross, e, g, 10, 0.785398)

運行結果

image.png

image.png

第二種

read_image(Image,'1')

get_image_size(Image,Width,Height)

dev_close_window()

dev_open_window(0,0,Width/3,Height/3,'black',WindowHandle)

dev_set_draw ('margin')

dev_set_color ('cyan')

dev_set_line_width(2)

rgb1_to_gray(Image,GrayImage)

dev_display(GrayImage)

*鼠標畫你要找的roi區域

draw_rectangle1(WindowHandle,Row1,Column1,Row2,Column2)

*顯示roi區域

gen_rectangle1(roi1, Row1, Column1, Row2, Column2)

*減少其他區域,顯示你畫的roi區域

reduce_domain(GrayImage,roi1,ImageReduced)

threshold (ImageReduced, Regions, 200, 255)

opening_circle(Regions,ReigionsoOpening,3.5)

closing_circle(ReigionsoOpening,ReigionsoClosibng,3.5)

*fill_up(ReigionsoClosibng,ReigionFillup)

*boundary(ReigionFillup,ReigionBoundary,'outer')

*ilation_circle(ReigionBoundary,ReigionDilation,1)

reduce_domain(Image,ReigionsoClosibng,ImageReduced1)

gen_contour_region_xld(ImageReduced1,Contours, 'border')

*edges_sub_pix(ImageReduced1,Edges,'canny',1,10,60)

dev_display(ImageReduced1)

dev_display(Contours)

stop()

*根據長度裁剪

select_shape_xld(Contours, AreaEdges1, 'contlength', 'and', 50, 9999)

*根據xld找尋區域輪廓的所有x,y坐標

count_obj (AreaEdges1, Number)

*遍歷亞像素坐標點

y2:=[]

x2:=[]

for x := 0 to Number-1 by 1

select_obj (AreaEdges1, ObjectSelected, x+1)

get_contour_xld (ObjectSelected, Row, Column)

y2 := [Row, y2]

x2 := [Column, x2]

endfor

*找最大最小x,y

min_x:=min(x2)

max_x:=max(x2)

min_y:=min(y2)

max_y:=max(y2)

*畫直線

disp_line (WindowHandle, min_y,min_x , min_y, max_x)

disp_line (WindowHandle, min_y,min_x ,max_y , min_x)

disp_line (WindowHandle, max_y , min_x, max_y, max_x)

disp_line (WindowHandle, max_y, max_x, min_y, max_x)

運行結果

image.png

image.png

有什么需求,可以評論一起探討思路

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270905.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270905.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270905.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言雙循環計算n的階乘,用C語言用循環實現N的階乘

匿名用戶1級2014-03-04 回答不要用數組,用vector來實現相應的功能,我給你寫個大概的框架,你向里面添加就好了1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include #include #include …

存儲知識:U盤的實際容量要比標注容量小,你知道原因嗎?

用過U盤的朋友一定都會知道,U盤的實際容量往往是達不到它標注的容量。比如一個16G的U盤,其實際容量一般只有14.7G左右。今天本文會給大家解釋其中的原因。 原因一:計算容量方法不同 存儲設備制造商為了計算方便,采用十進制計算方法…

CentOS 7 防止端口自動關閉

tl;dr firewall-cmd --permanent --zonepublic --add-port2888/tcp firewall-cmd --reload #重新載入服務 永久配置firewalld開啟端口。 之前的一些坑 之前的一篇文章CentOS 7部署Node.jsMongoDB:在VPS上從安裝到Hello world中,講到了CentOS開啟端口用這…

jio文件 久其_功能強大的Windows文件管理器工具

Windows文件管理功能體驗只能說中規中矩,批量處理文件時非常的慢,而且在模糊搜索文件時的速度以及資源占用實在是感人,再加上功能較少,只能實現重命名、復制、粘貼、剪切這些基礎功能,因此想要提高文件之間處理效果通常…

C語言補丁原理,C語言可變長參數實現原理

(1) C語言可變參數我們能夠從C語言的printf得出可變參數的作用。printf函數的原型例如以下:int printf ( const char * format, ... );通過使用可變個數參數,就是傳入的參數個數是可變的,如printf須要依據format實參傳入多個實參。(2) …

辦公技巧:各類特殊符號輸入快捷鍵,瞬間提高你的辦公效率

??作者主頁:IT技術分享社區 ??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽: 數據庫領域優質創作者🏆&#x…

前端構建工具的用法—grunt、gulp、browserify、webpack

隨著前端項目的飛速發展,項目越來越大、文件越來越多,前端工程化的工具也越來越多。下面介紹目前最流行的四種構建工具——grunt、gulp、browserify、webpack 所有的構建工具都是基于NodeJs和Npm,所以使用下面任何工具都需要安裝Node 一、gru…

adb命令刷機vivox20_vivo手機變磚 刷機手機端口連上顯示adb

展開全部vivo的刷機解賬戶鎖方法如下 有了這個方法 以后不管手機出現啥毛病 只要是軟件系統引32313133353236313431303231363533e4b893e5b19e31333365643535起的故障 都能一招搞定提示:刷機有風險 刷機需謹慎 對于刷機造成的一切后果均與本處無關 而避免風險的最好…

SQLServer常用的聚合函數筆記

今天給大家分享一下SQLServer常用的聚合函數,希望對初學者有所幫助!1、COUNT合計函數:返回查詢記錄(行)數。格式:COUNT([ALL|DISTINCT] [表達式|*])參數說明:ALL:默認值,指對查詢所有…

android studio 工程demo例子,Android Studio 實現跑馬燈微項目實例

**閑來無事,自己做了很多小的Demo,現在分享一個小的跑馬燈項目實例,有機會把2048小游戲的Demo也發了。不過那個的算法稍微有點兒復雜,需要整理。首先在創建一個MarqueeTextViewDemo項目在res-layout-activity_main.xml中編寫出相應…

SQLServer常用的配置函數筆記

今天給大家分享一下SQLServer常用的配置函數知識,希望對初學者能有所幫助!1、DATEFIRST Datefirst返回值tinyint說明:datefirst指一周中的第一天,英語中第一天為星期日示例:SELECT DATEFIRST AS 1st Day, DATEPART(dw, GETDATE())…

localdatetime 默認時間_datetime-local設置初始值

//全局變量var format "";//構造符合datetime-local格式的當前日期function getFormat(){format "";var nTime new Date();format nTime.getFullYear()"-";format (nTime.getMonth()1)<10?"0"(nTime.getMonth()1):(nTime.get…

android音樂播放器完整教程,android實現簡單音樂播放器

本文實例為大家分享了android音樂播放器的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下話不多說先上效果前言寫這個音樂播放器實在是迫不得已。因為我們Andoird課程要求寫一個音樂播放器。所以就有了此項目。這個項目比較簡單&#xff0c;實現了最基本的音樂播放功…

編譯原理

編譯原理是計算機專業的一門重要專業課&#xff0c;旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 這門課程是一門真正與代碼做斗爭的課程&#xff0c;對于一個有至于追…

JDK1.8 JVM元數據區取代了永久代,元數據空間并不在虛擬機中,而是使用本地內存

JDK1.8 JVM運行時內存數據區域劃分。1.8同1.7比&#xff0c;最大的差別就是&#xff1a;元數據區取代了永久代。元空間的本質和永久代類似&#xff0c;都是對JVM規范中方法區的實現。不過元空間與永久代之間最大的區別在于&#xff1a;元數據空間并不在虛擬機中&#xff0c;而是…

SQLServer常用的字符串函數梳理

今天給大家分享一下SQLServer常用的字符串函數知識筆記&#xff0c;希望對大家能有所幫助&#xff01;1、ASCII(字符串表達式)作用&#xff1a;返回表達式最左側字符串的ASCII代碼值。示例&#xff1a;SELECT ASCII(ABC),ASCII(A) --返回結果都是65 計算的是第一個字符串的ASCI…

tchar linux,錯誤:Error:未定義標識符_TCHAR

svn sc create 命令行創建服務自啟動今天重裝了系統,Subversion服務也得重裝.照例輸入代碼: sc create svnserve binpath"d:\PortableApps\svn\svnserve.exe - ...Spring&lowbar;Springmvc&lowbar;mybatis一般配置web.xml配置 <?xml version"1.0" e…

Mac 系統引導過程概述 BootCamp 的秘密

http://bbs.feng.com/read-htm-tid-6890655.html轉載于:https://www.cnblogs.com/zengkefu/p/5857710.html