Open Source Computer Vision Library https://opencv.org/
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.
 
 
 
 
 
 

123 lines
4.2 KiB

import numpy as np
import cv2 as cv
from tests_common import NewOpenCVTests
class volume_test(NewOpenCVTests):
def test_VolumeDefault(self):
depthPath = 'cv/rgbd/depth.png'
depth = self.get_sample(depthPath, cv.IMREAD_ANYDEPTH).astype(np.float32)
if depth.size <= 0:
raise Exception('Failed to load depth file: %s' % depthPath)
Rt = np.eye(4)
volume = cv.Volume()
volume.integrate(depth, Rt)
size = (480, 640, 4)
points = np.zeros(size, np.float32)
normals = np.zeros(size, np.float32)
Kraycast = np.array([[525. , 0. , 319.5],
[ 0. , 525. , 239.5],
[ 0. , 0. , 1. ]])
volume.raycastEx(Rt, size[0], size[1], Kraycast, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
volume.raycast(Rt, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
def test_VolumeTSDF(self):
depthPath = 'cv/rgbd/depth.png'
depth = self.get_sample(depthPath, cv.IMREAD_ANYDEPTH).astype(np.float32)
if depth.size <= 0:
raise Exception('Failed to load depth file: %s' % depthPath)
Rt = np.eye(4)
settings = cv.VolumeSettings(cv.VolumeType_TSDF)
volume = cv.Volume(cv.VolumeType_TSDF, settings)
volume.integrate(depth, Rt)
size = (480, 640, 4)
points = np.zeros(size, np.float32)
normals = np.zeros(size, np.float32)
Kraycast = settings.getCameraRaycastIntrinsics()
volume.raycastEx(Rt, size[0], size[1], Kraycast, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
volume.raycast(Rt, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
def test_VolumeHashTSDF(self):
depthPath = 'cv/rgbd/depth.png'
depth = self.get_sample(depthPath, cv.IMREAD_ANYDEPTH).astype(np.float32)
if depth.size <= 0:
raise Exception('Failed to load depth file: %s' % depthPath)
Rt = np.eye(4)
settings = cv.VolumeSettings(cv.VolumeType_HashTSDF)
volume = cv.Volume(cv.VolumeType_HashTSDF, settings)
volume.integrate(depth, Rt)
size = (480, 640, 4)
points = np.zeros(size, np.float32)
normals = np.zeros(size, np.float32)
Kraycast = settings.getCameraRaycastIntrinsics()
volume.raycastEx(Rt, size[0], size[1], Kraycast, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
volume.raycast(Rt, points, normals)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
def test_VolumeColorTSDF(self):
depthPath = 'cv/rgbd/depth.png'
rgbPath = 'cv/rgbd/rgb.png'
depth = self.get_sample(depthPath, cv.IMREAD_ANYDEPTH).astype(np.float32)
rgb = self.get_sample(rgbPath, cv.IMREAD_ANYCOLOR).astype(np.float32)
if depth.size <= 0:
raise Exception('Failed to load depth file: %s' % depthPath)
if rgb.size <= 0:
raise Exception('Failed to load RGB file: %s' % rgbPath)
Rt = np.eye(4)
settings = cv.VolumeSettings(cv.VolumeType_ColorTSDF)
volume = cv.Volume(cv.VolumeType_ColorTSDF, settings)
volume.integrateColor(depth, rgb, Rt)
size = (480, 640, 4)
points = np.zeros(size, np.float32)
normals = np.zeros(size, np.float32)
colors = np.zeros(size, np.float32)
Kraycast = settings.getCameraRaycastIntrinsics()
volume.raycastExColor(Rt, size[0], size[1], Kraycast, points, normals, colors)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
volume.raycastColor(Rt, points, normals, colors)
self.assertEqual(points.shape, size)
self.assertEqual(points.shape, normals.shape)
self.assertEqual(points.shape, colors.shape)
if __name__ == '__main__':
NewOpenCVTests.bootstrap()