You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.4 KiB
41 lines
1.4 KiB
import numpy as np |
|
import cv2 as cv |
|
|
|
def load_bunny(): |
|
with open(cv.samples.findFile("../viz/data/bunny.ply"), 'r') as f: |
|
s = f.read() |
|
ligne = s.split('\n') |
|
if len(ligne) == 5753: |
|
pts3d = np.zeros(shape=(1,1889,3), dtype=np.float32) |
|
pts3d_c = 255 * np.ones(shape=(1,1889,3), dtype=np.uint8) |
|
pts3d_n = np.ones(shape=(1,1889,3), dtype=np.float32) |
|
for idx in range(12,1889): |
|
d = ligne[idx].split(' ') |
|
pts3d[0,idx-12,:] = (float(d[0]), float(d[1]), float(d[2])) |
|
pts3d = 5 * pts3d |
|
return cv.viz_WCloud(pts3d) |
|
|
|
myWindow = cv.viz_Viz3d("Coordinate Frame") |
|
axe = cv.viz_WCoordinateSystem() |
|
myWindow.showWidget("axe",axe) |
|
|
|
cam_pos = (3.0, 3.0, 3.0) |
|
cam_focal_point = (3.0,3.0,2.0) |
|
cam_y_dir = (-1.0,0.0,0.0) |
|
cam_pose = cv.viz.makeCameraPose(cam_pos, cam_focal_point, cam_y_dir) |
|
print("OK") |
|
transform = cv.viz.makeTransformToGlobal((0.0,-1.0,0.0), (-1.0,0.0,0.0), (0.0,0.0,-1.0), cam_pos) |
|
pw_bunny = load_bunny() |
|
cloud_pose = cv.viz_Affine3d() |
|
cloud_pose = cloud_pose.translate((0, 0, 3)) |
|
cloud_pose_global = transform.product(cloud_pose) |
|
|
|
cpw = cv.viz_WCameraPosition(0.5) |
|
cpw_frustum = cv.viz_WCameraPosition(0.3) |
|
myWindow.showWidget("CPW", cpw); |
|
myWindow.showWidget("CPW_FRUSTUM", cpw_frustum) |
|
myWindow.setViewerPose(cam_pose) |
|
myWindow.showWidget("bunny", pw_bunny, cloud_pose_global) |
|
#myWindow.setWidgetPosePy("bunny") |
|
myWindow.spin(); |
|
print("Last event loop is over")
|
|
|