예제 #1
0
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'
예제 #2
0
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'
예제 #3
0
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'
예제 #4
0
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'
예제 #5
0
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))
예제 #6
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)
예제 #7
0
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 ''
예제 #8
0
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))
예제 #9
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'
예제 #10
0
def test_ARPattHandleConstruct():
    handle = ARTKBlender.ARPattHandle()
    pattID = handle.load('../../UnitTests/Data/hiro.patt')
    return '' if pattID == 0 else 'Invalid pattern ID'