ROS ERROR: segmentation fault (core Dumped)
ROS ERROR: segmentation fault (core Dumped)
我一直在用 ROS 在无人机上 运行 开发人脸检测应用程序。
面部检测代码是可以在 google 上找到的代码并且工作正常但是当我将它与 ROS 混合时,我一直在努力解决错误:segmentation fault (core dumped)。我试图找到错误,例如使用错误类型的变量但没有成功。
这是代码:
while not rospy.is_shutdown():
# Capture frame-by-frame
ret, frame = video_capture.read()
frame = imutils.resize(frame, width=600)
#convert the frame (of the webcam) to gray)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
mask = cv2.erode(gray, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
# detecting the faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
x_imagem = x + (w/2)
y_imagem = y + (h/2)
cv2.circle(frame, (x+(w/2), y+(h/2)), 5, (0,0,255), -1)
#600 x 450;
cmd_vel_msg = Twist()
if(x_imagem > 200 and x_imagem < 400):
rospy.loginfo("CENTER")
elif(x_imagem < 200): #WHERE IT CRASH
rospy.loginfo("LEFT")
cmd_vel_msg.linear.x = 0.0
cmd_vel_msg.linear.y = -0.3
cmd_vel_msg.linear.z = 0.0
pub_cmd_vel.publish(cmd_vel_msg)
elif(x_imagem > 400): #WHERE IT CRASH
rospy.loginfo("RIGHT")
cmd_vel_msg.linear.x = 0.0
cmd_vel_msg.linear.y = 0.3
cmd_vel_msg.linear.z = 0.0
pub_cmd_vel.publish(cmd_vel_msg)
# Display the resulting frame
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()
每当我的脸转向 windows 的左侧或右侧时,程序就会崩溃。我标记了崩溃的地方。终端中没有出现 ERRO MSG。
希望你能帮我,这次能说清楚!谢谢!
谢谢!
我终于成功了,我所做的是:
- 在函数中实例化发布者和 init_node
由 main
调用
- 现在我的函数main只调用了人脸识别函数
- 删除rospy.spin()
- 创建一个新的 .py 来处理发布,就是那个
crashing 被用来发送到新的值 where
无人机必须起飞。
我一直在用 ROS 在无人机上 运行 开发人脸检测应用程序。 面部检测代码是可以在 google 上找到的代码并且工作正常但是当我将它与 ROS 混合时,我一直在努力解决错误:segmentation fault (core dumped)。我试图找到错误,例如使用错误类型的变量但没有成功。 这是代码:
while not rospy.is_shutdown():
# Capture frame-by-frame
ret, frame = video_capture.read()
frame = imutils.resize(frame, width=600)
#convert the frame (of the webcam) to gray)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
mask = cv2.erode(gray, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)
# detecting the faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
x_imagem = x + (w/2)
y_imagem = y + (h/2)
cv2.circle(frame, (x+(w/2), y+(h/2)), 5, (0,0,255), -1)
#600 x 450;
cmd_vel_msg = Twist()
if(x_imagem > 200 and x_imagem < 400):
rospy.loginfo("CENTER")
elif(x_imagem < 200): #WHERE IT CRASH
rospy.loginfo("LEFT")
cmd_vel_msg.linear.x = 0.0
cmd_vel_msg.linear.y = -0.3
cmd_vel_msg.linear.z = 0.0
pub_cmd_vel.publish(cmd_vel_msg)
elif(x_imagem > 400): #WHERE IT CRASH
rospy.loginfo("RIGHT")
cmd_vel_msg.linear.x = 0.0
cmd_vel_msg.linear.y = 0.3
cmd_vel_msg.linear.z = 0.0
pub_cmd_vel.publish(cmd_vel_msg)
# Display the resulting frame
cv2.imshow('Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()
每当我的脸转向 windows 的左侧或右侧时,程序就会崩溃。我标记了崩溃的地方。终端中没有出现 ERRO MSG。
希望你能帮我,这次能说清楚!谢谢!
谢谢!
我终于成功了,我所做的是:
- 在函数中实例化发布者和 init_node 由 main 调用
- 现在我的函数main只调用了人脸识别函数
- 删除rospy.spin()
- 创建一个新的 .py 来处理发布,就是那个 crashing 被用来发送到新的值 where 无人机必须起飞。