-
[OpenCV] 1. Img 불러오기Python/openCV 2023. 8. 13. 17:44728x90
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