|
|
|
@ -18,10 +18,10 @@ class TakePhoto:
|
|
|
|
|
img_topic = "/camera/rgb/image_raw"
|
|
|
|
|
self.image_sub = rospy.Subscriber(img_topic, Image, self.callback)
|
|
|
|
|
|
|
|
|
|
# Allow up to two second to connection,
|
|
|
|
|
# The initial one second is too short for the camera.
|
|
|
|
|
# Allow up to two second to connection,
|
|
|
|
|
# The initial one second is too short for the camera.
|
|
|
|
|
# rospy.sleep(1)
|
|
|
|
|
# by lcp
|
|
|
|
|
# by lcp
|
|
|
|
|
rospy.sleep(2)
|
|
|
|
|
|
|
|
|
|
def callback(self, data):
|
|
|
|
@ -45,18 +45,20 @@ class TakePhoto:
|
|
|
|
|
|
|
|
|
|
# Initialize
|
|
|
|
|
rospy.init_node('take_photo', anonymous=False)
|
|
|
|
|
camera = TakePhoto() #构造出TakePhoto类的一个对象,
|
|
|
|
|
# 构造出TakePhoto类的一个对象,
|
|
|
|
|
camera = TakePhoto()
|
|
|
|
|
|
|
|
|
|
# Take a photo
|
|
|
|
|
|
|
|
|
|
# Use '_image_title' parameter from command line
|
|
|
|
|
# Default value is 'photo.jpg'
|
|
|
|
|
# 照片的名字默认为'photo.jpg'
|
|
|
|
|
img_title = rospy.get_param('~image_title', 'photo.jpg')
|
|
|
|
|
img_title = rospy.get_param('~image_title', 'photo.jpg')
|
|
|
|
|
|
|
|
|
|
# 调用camera的成员函数take_picture,
|
|
|
|
|
if camera.take_picture(img_title):
|
|
|
|
|
# 如果拍照成功,打印日志"Saved image photo.jpg"
|
|
|
|
|
rospy.loginfo("Saved image " + img_title)
|
|
|
|
|
|
|
|
|
|
if camera.take_picture(img_title): #调用camera的成员函数take_picture,
|
|
|
|
|
# 如果拍照成功,打印日志"Saved image photo.jpg"
|
|
|
|
|
rospy.loginfo("Saved image " + img_title)
|
|
|
|
|
else:
|
|
|
|
|
# 如果拍照失败,打印日志"No images received"
|
|
|
|
|
rospy.loginfo("No images received")
|
|
|
|
@ -77,8 +79,8 @@ data.append('--%s' % boundary)
|
|
|
|
|
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret')
|
|
|
|
|
data.append(secret)
|
|
|
|
|
data.append('--%s' % boundary)
|
|
|
|
|
#用'rb'方式读取文件
|
|
|
|
|
fr=open(filepath,'rb')
|
|
|
|
|
# 用'rb'方式读取文件
|
|
|
|
|
fr=open(filepath, 'rb')
|
|
|
|
|
data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file')
|
|
|
|
|
data.append('Content-Type: %s\r\n' % 'application/octet-stream')
|
|
|
|
|
data.append(fr.read())
|
|
|
|
@ -86,31 +88,31 @@ data.append(fr.read())
|
|
|
|
|
fr.close()
|
|
|
|
|
data.append('--%s' % boundary)
|
|
|
|
|
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_landmark')
|
|
|
|
|
#人脸特征点:'2'返回106个,'1'返回83个,'0'不返回
|
|
|
|
|
# 人脸特征点:'2'返回106个,'1'返回83个,'0'不返回
|
|
|
|
|
data.append('0')
|
|
|
|
|
data.append('--%s' % boundary)
|
|
|
|
|
data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_attributes')
|
|
|
|
|
#请求的数据集(字符串)
|
|
|
|
|
# 请求的数据集(字符串)
|
|
|
|
|
data.append("gender,headpose,emotion,eyegaze")
|
|
|
|
|
data.append('--%s--\r\n' % boundary)
|
|
|
|
|
#python2中data不用decode、encode
|
|
|
|
|
# python2中data不用decode、encode
|
|
|
|
|
|
|
|
|
|
http_body='\r\n'.join(data)
|
|
|
|
|
|
|
|
|
|
#buld http request
|
|
|
|
|
req=urllib2.Request(http_url)
|
|
|
|
|
# buld http request
|
|
|
|
|
req = urllib2.Request(http_url)
|
|
|
|
|
|
|
|
|
|
#header
|
|
|
|
|
# header
|
|
|
|
|
req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
|
|
|
|
|
req.add_data(http_body)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
#req.add_header('Referer','http://remotserver.com/')
|
|
|
|
|
#post data to server
|
|
|
|
|
# req.add_header('Referer','http://remotserver.com/')
|
|
|
|
|
# post data to server
|
|
|
|
|
resp = urllib2.urlopen(req, timeout=5)
|
|
|
|
|
#get response
|
|
|
|
|
qrcont=resp.read()
|
|
|
|
|
# get response
|
|
|
|
|
qrcont = resp.read()
|
|
|
|
|
print qrcont
|
|
|
|
|
|
|
|
|
|
except urllib2.HTTPError as e:
|
|
|
|
|
print e.read()
|
|
|
|
|
print e.read()
|