create_generic_shape_model

dev_update_window ('off')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
* dev_get_window (WindowHandle)
read_image (Image, 'board/board_01.png')
get_image_size (Image, Width, Height)
* 
* Generate the ROIs: First the one for the shape model.
ModelRow1 := 450
ModelColumn1 := 470
ModelRow2 := 580
ModelColumn2 := 750
* 
gen_rectangle1 (Rectangle, ModelRow1, ModelColumn1, ModelRow2, ModelColumn2)
area_center (Rectangle, Area, ModelAreaRow, ModelAreaColumn)
* Generate rectangles in which we will extract the lead edges.
* We define their center point relative to the model ROI.
* We will later apply the transformation of the found model
* instance on this relative displacements.
RectDeltaRow := 160
RectDeltaColumn := 10
RectPhi := 0
RectLength1 := 180
RectLength2 := 10
gen_rectangle2 (Rectangle1, ModelAreaRow - RectDeltaRow, ModelAreaColumn + RectDeltaColumn, RectPhi, RectLength1, RectLength2)
gen_rectangle2 (Rectangle2, ModelAreaRow + RectDeltaRow, ModelAreaColumn + RectDeltaColumn, RectPhi, RectLength1, RectLength2)
* 
* Create and train the shape model.
reduce_domain (Image, Rectangle, ImageModel)
create_generic_shape_model (ModelID)
train_generic_shape_model (ImageModel, ModelID)

find_generic_shape_model (ImageModel, ModelID, MatchResultID, NumMatchResult)

get_generic_shape_model_result_object (Objects, MatchResultID, 'all', 'contours')


for I := 2 to 9 by 1
    read_image (SearchImage, 'board/board_' + I$'02')
    dev_set_window (WindowHandle)
    dev_display (SearchImage)
    count_seconds (S0)
    find_generic_shape_model (SearchImage, ModelID, MatchResultID, NumMatchResult)
    get_generic_shape_model_result_object (Objects1, MatchResultID, 'all', 'contours')
    count_seconds (S1)
    get_generic_shape_model_result (MatchResultID, 'all', 'hom_mat_2d', HomMat2D)
    
    get_generic_shape_model_result (MatchResultID, 'all', 'row', HomRow)
    get_generic_shape_model_result (MatchResultID, 'all', 'column', HomColumn)
    get_generic_shape_model_result (MatchResultID, 'all', 'angle', HomAngle)
    
    vector_angle_to_rigid (ModelAreaRow, ModelAreaColumn, 0, HomRow, HomColumn, HomAngle, HomMat2D1)
    
    affine_trans_region (Rectangle1, RegionAffineTransRectangle1, HomMat2D1, 'constant')
    affine_trans_region (Rectangle2, RegionAffineTransRectangle2, HomMat2D1, 'constant')
    dev_display (Objects1)
    dev_display (RegionAffineTransRectangle1)
    dev_display (RegionAffineTransRectangle2)
    stop()
    
endfor

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`create_shape_model_3d` 是一个 OpenCV 函数,用于创建三维形状模型。它可以用于计算三维形状的表面法线、特征描述符和匹配模板等。通常情况下,这个函数用于计算三维物体的模型,以用于目标跟踪、三维重建和虚拟现实等应用。 该函数的语法如下: ```python cv2.create_shape_model_3d(object_points, model_filename, viewpoint, attributes[, texture_filename]) ``` 参数解释如下: - `object_points`:包含三维物体模型点云的 numpy 数组。 - `model_filename`:输出的形状模型文件名。 - `viewpoint`:指定视点的坐标,用于计算表面法线和特征描述符。一般情况下,这个参数应该是三维物体的中心点。 - `attributes`:一个 Python 列表,包含用于计算形状模型的属性。可以选择的属性包括 `cv2.SM_MODEL_NORMS`(计算表面法线)、`cv2.SM_MODEL_TEXTURE`(计算纹理贴图)、`cv2.SM_MODEL_LIGHTING`(计算光照)等。 - `texture_filename`:可选参数,用于指定纹理贴图文件名。 一个简单的示例代码如下: ```python import cv2 import numpy as np # 读取点云数据 points = np.loadtxt('object_points.txt') # 创建形状模型 model = cv2.create_shape_model_3d(points, 'model.yml', [0, 0, 0], [cv2.SM_MODEL_NORMS, cv2.SM_MODEL_TEXTURE]) # 保存模型 model.write('model.yml') ``` 需要注意的是,`create_shape_model_3d` 函数需要依赖于 OpenCV 的 三维重建模块(`cv2.sfm`),因此需要安装 OpenCV 时需要选择安装该模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值