def test_AR3DHandleConstruct(): param = ARTKBlender.ARParam() if not param.load('../../UnitTests/Data/camera_para.dat'): return False handle = ARTKBlender.AR3DHandle(param) return '' if isinstance( handle, ARTKBlender.AR3DHandle) else 'handle isn\'t instance of AR3DHandle'
def test_ARHandleConstructOtherPixelFormat(): param = ARTKBlender.ARParam() if not param.load('../../UnitTests/Data/camera_para.dat'): return 'Parameters load failed' handle = ARTKBlender.ARHandle(param, ARTKBlender.ARPixelFormat.MONO) if not isinstance(handle, ARTKBlender.ARHandle): return 'handle isn\'t instance of ARHandle' return '' if handle.pixelFormat == ARTKBlender.ARPixelFormat.MONO else 'improper pixel format'
def test_ARHandleAttachPattern(): param = ARTKBlender.ARParam() if not param.load('../../UnitTests/Data/camera_para.dat'): return 'Parameters load failed' handle = ARTKBlender.ARHandle(param, ARTKBlender.ARPixelFormat.RGB) if handle.attachPatt is not None: return 'No pattern should be attached' pattHandle = ARTKBlender.ARPattHandle() if pattHandle.load('../../UnitTests/Data/hiro.patt') != 0: return 'Invalid pattern ID' handle.attachPatt = pattHandle if handle.attachPatt != pattHandle: return 'Invalid pattern attached' del handle.attachPatt return '' if handle.attachPatt is None else 'No pattern should be attached'
def test_ARHandleDetect_Camera(): param = ARTKBlender.ARParam() if not param.load('../../UnitTests/Data/camera_para.dat'): return 'Parameters load failed' param.size = (640, 480) image = loadImage('../../UnitTests/Data/test_image.raw', param.size, 4) if isinstance(image, str): return image handle = ARTKBlender.ARHandle(param, ARTKBlender.ARPixelFormat.RGBA) handle.attachPatt = ARTKBlender.ARPattHandle() if not handle.detect(image): return 'First detection failed' pattID = handle.attachPatt.load('../../UnitTests/Data/4x4_42.patt') if pattID != 0: return 'Invalid pattern ID' if not handle.detect(image): return 'Second detection failed' return '' if len(handle.markers) > 0 else 'No marker detected'
def test_AR3DHandleCalcMatrix(): rslt = ARHandleTest.performMarkerDetection() if isinstance(rslt, str): return rslt handle = rslt[0] handle3D = ARTKBlender.AR3DHandle(rslt[1]) mat = handle3D.getTransMatSquare(handle.markers[0], 100.0) return checkMatrix(mat, ((0.9, -0.3, 0.3), (0.4, 0.7, -0.6), (0.0, 0.65, 0.75)), (7.0, 13.0, -270.0))
def performMarkerDetection(): param = ARTKBlender.ARParam() if not param.load('../../UnitTests/Data/camera_para.dat'): return 'Parameters load failed' param.size = (254, 207) image = loadImage('../../UnitTests/Data/hiro_marker.raw', param.size, 3) if isinstance(image, str): return image handle = ARTKBlender.ARHandle(param, ARTKBlender.ARPixelFormat.RGB) handle.attachPatt = ARTKBlender.ARPattHandle() pattID = handle.attachPatt.load('../../UnitTests/Data/hiro.patt') if pattID != 0: return 'Invalid pattern ID' if len(handle.markers) != 0: return 'No markers should be available' rslt = detectMarker(handle, image) if rslt != '': return rslt return (handle, param)
def testARParamLoadData(dataFile, imgSize, matrix, distFac): param = ARTKBlender.ARParam() if not param.load(dataFile): return 'Parameters load failed' if param.size[0] != imgSize[0] or param.size[1] != imgSize[1]: return 'Invalid image size' for i in range(3): for j in range(4): if param.matrix[i][j] != matrix[i][j]: return 'Invalid matrix' for i in range(len(distFac)): if param.distFactor[i] != distFac[i]: return 'Invalid distortion factor' return ''
def test_AR3DHandleCalcMatrixCont(): rslt = ARHandleTest.performMarkerDetection() if isinstance(rslt, str): return rslt handle = rslt[0] param = rslt[1] handle3D = ARTKBlender.AR3DHandle(param) mat = handle3D.getTransMatSquare(handle.markers[0], 100.0) vecs = ((0.9, -0.3, 0.3), (0.4, 0.7, -0.6), (0.0, 0.65, 0.75)) rslt = checkMatrix(mat, vecs, (7.0, 13.0, -270.0)) if rslt != '': return rslt image = ARHandleTest.loadImage('../../UnitTests/Data/hiro_marker2.raw', param.size, 3) if isinstance(image, str): return image rslt = ARHandleTest.detectMarker(handle, image) if rslt != '': return rslt mat = handle3D.getTransMatSquareCont(handle.markers[0], 100.0, mat) return checkMatrix(mat, vecs, (-10.0, 30.0, -270.0))
def test_ARParam_Size(): param = ARTKBlender.ARParam() param.size = (640, 400) return '' if param.size[0] == 640 and param.size[ 1] == 400 else 'Invalid image size'
def test_ARPattHandleConstruct(): handle = ARTKBlender.ARPattHandle() pattID = handle.load('../../UnitTests/Data/hiro.patt') return '' if pattID == 0 else 'Invalid pattern ID'