00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 '''
00033 Created on Oct 12, 2009
00034
00035 @author: martin
00036 '''
00037 import opencv.cv as cv
00038 import opencv.highgui as hg
00039 import webcamera
00040 import util as ut
00041
00042
00043
00044 if __name__ == '__main__':
00045
00046 wc = webcamera.Webcamera()
00047 img = wc.get_frame()
00048 grey = cv.cvCreateImage((img.width, img.height), 8,1)
00049 hg.cvConvertImage(img, grey)
00050
00051
00052
00053
00054
00055 file = open('test.raw', 'wb')
00056
00057
00058
00059 for i in range(grey.height):
00060 for j in range(grey.width):
00061 file.write(chr(grey[i][j]))
00062
00063 file.close()
00064
00065
00066
00067 import subprocess
00068
00069 output = subprocess.Popen(["/home/martin/artags/ARToolKitPlus_2.1.1/bin/simple", ""], stdout=subprocess.PIPE, env={"LD_LIBRARY_PATH": "/home/martin/artags/ARToolKitPlus_2.1.1/lib:/usr/local/lib:"}).communicate()[0]
00070 import re
00071 try:
00072 m = re.search('getARMatrix.*\n([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*).*\n([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*).*\n([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*) ([0-9\-\.]*)', output)
00073 except:
00074
00075 print "ERROR parsing ARToolKitPlus output"
00076
00077 import numpy as np
00078 R = np.array(m.groups(),dtype=np.float)
00079 R = R.reshape(3,4)
00080
00081 if False == np.any(R):
00082 print "ERROR: failed to detect AR tag"
00083
00084 print output
00085 print m.groups()
00086 print R
00087
00088
00089 from enthought.mayavi import mlab
00090
00091
00092
00093
00094
00095
00096 import numpy as np
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 v1 = np.array([0,0,0])
00110 v2 = np.array([80,0,0])
00111 v2 = np.dot(R[:,0:3],v2)
00112 mlab.triangular_mesh([[v1[0]-1,v1[0]+1,v2[0]-1,v2[0]+1]], [[v1[1]-1,v1[1]+1,v2[1]-1,v2[1]+1]], [[v1[2]-1,v1[2]+1,v2[2]-1,v2[2]+1]], [(0,1,2),(1,2,3)],color=(1,1,1))
00113
00114 v1 = np.array([0,0,0])
00115 v2 = np.array([0,80,0])
00116 v2 = np.dot(R[:,0:3],v2)
00117 mlab.triangular_mesh([[v1[0]-1,v1[0]+1,v2[0]-1,v2[0]+1]], [[v1[1]-1,v1[1]+1,v2[1]-1,v2[1]+1]], [[v1[2]-1,v1[2]+1,v2[2]-1,v2[2]+1]], [(0,1,2),(1,2,3)],color=(1,1,1))
00118
00119 v1 = np.array([0,0,0])
00120 v2 = np.array([0,0,80])
00121 v2 = np.dot(R[:,0:3],v2)
00122 mlab.triangular_mesh([[v1[0]-1,v1[0]+1,v2[0]-1,v2[0]+1]], [[v1[1]-1,v1[1]+1,v2[1]-1,v2[1]+1]], [[v1[2]-1,v1[2]+1,v2[2]-1,v2[2]+1]], [(0,1,2),(1,2,3)],color=(1,1,1))
00123
00124
00125 print
00126
00127 mlab.triangular_mesh([[0,0,100]], [[-0.3,0.3,0]], [[0,0,0]], [(0,1,2)])
00128 mlab.triangular_mesh([[-0.3,0.3,0]], [[0,0,100]], [[0,0,0]], [(0,1,2)])
00129 mlab.triangular_mesh([[-0.3,0.3,0]], [[0,0,0]], [[0,0,100]], [(0,1,2)])
00130 mlab.show()
00131
00132
00133 print 'done.'