라즈베리파이에 usb웹캠, opencv를 사용하기 위해 관련 패키지를 설치해보자.
opencv package 설치 $sudo apt install ros-kinetic-opencv* | cs |
usb cam 패키지 설치 sudo apt-get install ros-kinetic-usb-cam | cs |
rqt 패키지 설치 sudo apt-get install ros-kinetic-rqt ros-kinetic-rqt-common-plugins | cs |
usb 웹캠을 라즈베리파이에 연결하고
rosrun usb_cam usb_cam_node
명령어로 usb_cam 패키지 실행
rqt_image_view
명령어로 rqt를 실행한다
영상이 안나오면 왼쪽 상단
image View밑에있는 버튼을 눌러서 /usb_cam/image_raw를 선택하면 영상이 잘 나온다
cw 명령으로 catkin폴더로 이동하고
src폴더로 이동한다.
catkin_create_pkg opencv std_msgs rospy roscpp
명령으로 패키지를 생성한다.
cm명령으로 패키지를 빌드한다
opencv.py파일을 만들고 아래 코드를 작성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/usr/bin/env python import rospy import cv2 import numpy as np from cv_bridge import CvBridge, CvBridgeError from sensor_msgs.msg import Image from sensor_msgs.msg import CompressedImage class Gray(): def __init__(self): self.selecting_sub_image = "raw" # you can choose image type "compressed", "raw" if self.selecting_sub_image == "compressed": self._sub = rospy.Subscriber('/usb_cam/image_raw/compressed', CompressedImage, self.callback, queue_size=1) else: self._sub = rospy.Subscriber('/usb_cam/image_raw', Image, self.callback, queue_size=1) self.bridge = CvBridge() def callback(self, image_msg): if self.selecting_sub_image == "compressed": #converting compressed image to opencv image np_arr = np.fromstring(image_msg.data, np.uint8) cv_image = cv2.imdecode(np_arr, cv2.IMREAD_COLOR) elif self.selecting_sub_image == "raw": cv_image = self.bridge.imgmsg_to_cv2(image_msg, "bgr8") cv_gray = cv2.cvtColor(cv_image, cv2.COLOR_RGB2GRAY) cv2.imshow('cv_gray', cv_gray), cv2.waitKey(1) def main(self): rospy.spin() if __name__ == '__main__': rospy.init_node('gray') node = Gray() node.main() | cs |
chmox +x opencv.py 명령어 실행
usb_cam 노드를 실행하고
rosrun opencv opencv.py명령으로 방금 만든 opencv패키지를 실행하면 그레이 처리된 영상이 나온다.
'자율주행 > ROS기반 자율주행모형차 개발' 카테고리의 다른 글
result (0) | 2019.03.11 |
---|---|
(9) 아두이노 펌웨어 (0) | 2019.03.05 |
ROI 성공 (0) | 2018.10.30 |
opencv roi (0) | 2018.10.30 |
(8) motor_control 노드 작성 (0) | 2018.07.22 |