ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OpenCV] 1. Img 불러오기
    Python/openCV 2023. 8. 13. 17:44
    728x90

    Introduce

     해당 글은 자율주행 경진대회를 준비하면서 Perception 부분을 맡아 진행하면서 준비한 Lane Detection에 대해 정리하는 글이며

    코드는 python기반 ROS를 활용하여 작성하였습니다. (png, jpg 등으로 코드를 실행시키는 것도 작성할 것 입니다.)

     

    1. Image_raw 불러오기

    이미지 처리를 위해 가장 먼저 시작해야 하는 이미지를 가져오기 입니다.
    (웹캠으로 부터 이미지를 ROS에서 처리하기 위해서 아래 CVBridge가 필요함)

     

    1.1 이미지 불러오기(only python)

     

    import numpy as np
    import cv2
    
    #웹캠 기준
    cap = cv2.VideoCapture(1) # input은 웹캠 포트번호
    
    x_size = 640
    y_size = 480
    
    if cap.isOpened() == False:
    	print("Not connected cam")
    
    else:
    	while True:
        ret, frame = cap.read()
        if ret == True:
        	cv2.imshow("frame", frame)
            
        else:
        break
     
     #종료
     cap.release()
     cv2.destroyAllWindows()
    #----------------------------------------------------------------------------
    #이미지 기준
    img = cv2.imread("이미지경로 및 .jpg or .png")
    
    cv2.imshow("frame",img)
    cv2.waitKey(0)

    1.2 이미지 불러오기 (ROS)

    #!/usr/bin/env python3
    #-*- coding:utf-8 -*-
    import numpy as np
    import cv2
    import rospy
    from sensor_msgs.msg import CompressedImage
    from cv_bridge import CvBridge, CvBridgeError
    from std_msgs.msg import Int16
    from sensor_msgs.msg import Image
    
    class ImgParser:
        def __init__(self):
        	#
            self.bridge = CvBridge()
            #"/usb_cam/image_raw" 토픽으로 부터 이미지를 받아오기
            self.img_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.img_callback)
            
            self.frame = None
                                            .
                                            .
                                            .
    
        def img_callback(self, msg):
                try:
                    self.frame = self.bridge.imgmsg_to_cv2(msg, "bgr8")
    
                except Exception as e:
                    print(e)

     ROS를 활용하는게 아니라면 매우 간단하게 이미지를 받아올 수 있습니다.

    다음 포스트에서는 이미지처리에 대해 작성할 예정이며 최종적으로 Lane Detection까지 정리 할 예정입니다.

    728x90

    'Python > openCV' 카테고리의 다른 글

    [Lane Detection]OpenCV기반 차선인지1  (0) 2024.01.07
    [OpenCV] 모듈 패키지 오류설정  (0) 2022.03.14
Designed by Tistory.