Python/openCV
[OpenCV] 1. Img 불러오기
Magin
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