(10) 카메라 세팅 및 Opencv 설치
자율주행/ROS기반 자율주행모형차 개발

(10) 카메라 세팅 및 Opencv 설치


라즈베리파이에 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