我正在做一个项目,我必须在露台模拟中校准一个固定摄像机。首先,生成一个模式,然后用我的固定相机拍摄一些照片,最后,将这些照片发送到matlab
到目前为止,我已经生成了一个棋盘格图案,但是,我的下一步是更改棋盘格的方向(而不是位置),以便拍摄不同的照片
因此,我的方法是在不同的位置和方向上以某种方式产生10倍于此模型(模式)。会是这样的:
-开创露台世界 -繁殖模式位置1 -抹掉这个图案 -繁殖模式位置2 -抹掉这个图案 -....
请问,我如何实现这个代码,以实现我的需求
我也愿意接受其他想法
提前表示感谢和问候
我该怎么做
编辑
我工作,所以我设法创建了这个.py
import rospy, tf, random, string
from random import randint, uniform
from gazebo_msgs.srv import DeleteModel, SpawnModel
from geometry_msgs.msg import *
import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import cv2
import os
import captura_patron as captura
bridge = CvBridge()
def image_callback(msg):
print("Received an image!")
try:
# Convert your ROS Image message to OpenCV2
cv2_img = bridge.imgmsg_to_cv2(msg, "bgr8")
except CvBridgeError, e:
print(e)
else:
# Save your OpenCV2 image as a jpeg
#cv2.imwrite(os.path.join(os.path.expanduser('~'),'home','ros-industrial','POPBL','src','python','patron.jpg'), cv2_img)
cv2.imwrite('camera_image.jpeg'+ str(count), cv2_img)
def capturador():
# Set up your subscriber and define its callback
rospy.Subscriber("camera/cal_image", Image, image_callback)
print("LIXTO")
# Spin until ctrl + c
if __name__ == '__main__':
print("Waiting for gazebo services...")
rospy.init_node("patron_spawn")
rospy.wait_for_service("gazebo/spawn_sdf_model")
print("Got it.")
spawn_patron = rospy.ServiceProxy("gazebo/spawn_sdf_model", SpawnModel)
srv_delete_model = rospy.ServiceProxy('gazebo/delete_model', DeleteModel)
with open("/home/ros-industrial/POPBL/src/PAP_TALLER/models/patron/model.sdf", "r") as f:
box = f.read()
count = 0
while count < 1000:
count = count + 1
choice = randint(1,3)
if choice == 1:
with open("/home/ros-industrial/POPBL/src/PAP_TALLER/models/patron/model.sdf", "r") as f:
box = f.read()
rospy.loginfo("Press any key to spawn a model")
raw_input()
Position = Pose()
orient = tf.transformations.quaternion_from_euler(0,0,0 + random.uniform(-1,1) )
Position.position.x = 1.3 + random.uniform(-0.1,0.1)
Position.position.y = -0.5 + random.uniform(-0.1,0.1)
Position.position.z = 0.8126
Position.orientation.x = orient[0]
Position.orientation.y = orient[1]
Position.orientation.z = orient[2]
Position.orientation.w = orient[3]
item_name = "patron" + str(count)
print("Spawning model:", item_name)
spawn_patron(item_name, box, '', Position, "world")
rospy.sleep(1)
#execfile('captura_patron.py')
#captura.main()
capturador()
print("PHOTO SAVED")
rospy.sleep(1)
res = srv_delete_model(item_name)
现在这个模式产生了10个我想要的,但我有这个问题,在我的目录中保存的图像总是“刷新”,而且,只创建一个图像,而不是每个循环创建一个图像
目前没有回答
相关问题 更多 >
编程相关推荐