日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Halcon 点云拟合平面并获取单位法向量及位姿

發(fā)布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Halcon 点云拟合平面并获取单位法向量及位姿 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

確實因為halcon的文檔寫的太好了,所以網(wǎng)上關(guān)于halcon的博客就很少,點云擬合平面的文檔上介紹的比較詳細,但是如何從平面模型中讀取法向量可確實是難到了,找了三個小時人傻了,然后發(fā)現(xiàn)還是一行函數(shù)。

首先來說三維點云擬合平面,首先gen_object_model_3d_from_points,把點云轉(zhuǎn)化為3d模型,輸入:X,Y,Z坐標,輸出ObjectModel3D

gen_object_model_3d_from_points( : : X, Y, Z : ObjectModel3D)

?再選擇擬合成想要的平面,使用fit_primitives_object_model_3d 把該上模型轉(zhuǎn)化到Plane

fit_primitives_object_model_3d( : : ObjectModel3D, ParamName, ParamValue : ObjectModel3DOut)

ObjectModel3D:輸入模型

ParamName:選擇'primitive_type':擬合的類型,'fitting_algorithm':擬合方法等等

ParamValue:對應(yīng)'primitive_type'------'cylinder', 'sphere', 'plane',就是"圓柱體","球體","平面"。對應(yīng)'primitive_type'------'least_squares', 'least_squares_huber', 'least_squares_tukey'幾種最小二乘法,這里選擇plane和least_squares

ObjectModel3DOut:輸出的平面

得到平面之后,ObjectModel3DOut相當于一個平面的模型,他里邊包含各種平面的參數(shù):pose,nomals等等,需要使用一個函數(shù)get_object_model_3d_params

get_object_model_3d_params( : : ObjectModel3D, ParamName : ParamValue)

F1文檔查看,有所有想要的信息~

然后選擇ParamName是'primitive_parameter',取出法向量

選擇ParamName是'primitive_pose',取出位姿

?代碼如下:

X:=[-0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04, -0.04, -0.03, -0.02, -0.01, 0.0, 0.01, 0.02, 0.03, 0.04]
Y:=[-0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.04, -0.03, -0.03, -0.03, -0.03, -0.03, -0.03, -0.03, -0.03, -0.03, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, -0.02, -0.01, -0.01, -0.01, -0.01, -0.01, -0.01, -0.01, -0.01, -0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04]
Z:=[-0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0, -0.0]
*生成3D模型
gen_object_model_3d_from_points(X, Y, Z, ObjectModel3D)
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
*展示一下這個平面
fit_primitives_object_model_3d (ObjectModel3D, ['primitive_type','fitting_algorithm'], ['plane','least_squares_tukey'], ObjectModel3DOut)
visualize_object_model_3d (WindowHandle,[ObjectModel3D,ObjectModel3DOut], [],[], \['color_0','color_1','alpha_1','disp_pose'], ['green','gray',0.5,'true'],'RectBOX', [], [], Pose)
*獲取法向量,Normal的前三個數(shù)值就是單位法向量
get_object_model_3d_params (ObjectModel3DOut, 'primitive_parameter', Normals)

平面圖如下:

?

?單位法向量:

剛好是Z軸正方向的那個法向量。

?

?

總結(jié)

以上是生活随笔為你收集整理的Halcon 点云拟合平面并获取单位法向量及位姿的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。