OpenCV 파이썬 함수
OpenCV Python
기초
이미지 다루기
이미지 파일 읽기
src = cv2.imread("test.jpg", cv2.IMREAD_COLOR)
- cv2.IMREAD_COLOR
- cv2.IMREAD_GRAYSCALE
- cv2.IMREAD_UNCHANGED
불러온 이미지 오류 확인
if src is None:
print("Image load failed!")
exit(1)
이미지 저장하기
cv2.imwrite('dst.jpg', src)
새창 띄우기
cv2.namedWindow("src")
영상 출력하기
cv2.imshow("src", src)
창 닫기
cv2.destroyAllWindows()
키보드 입력 대기:
if cv2.waitkey(2) == 27:
break
이미지 변환
dst = cv2.cvtColor(src,cv2.COLOR_BGR2GRAY)
- cv2.COLOR_GRAY2BGR <-> cv2.COLOR_BGR2GRAY
- cv2.COLOR_BGR2HSV <-> cv2.COLOR_HSV2BGR
- cv2.COLOR_BGR2YCrCb <-> cv2.COLOR_YCrCb2BGR
동시에 여러창 띄우기
dst = cv2.hconcat([src, src_gray])
dst = cv2.vconcat([src, src_gray])
동영상 다루기
카메라 연결: cap = cv2.VideoCapture(0)
or cap = cv2.VideoCapture("output.avi")
카메라 or 동영상 연결 확인
if cap.isOpened() == False:
print("Camera open failed!")
exit(1)
카메라에서 영상 불러오기: ret, frame = cap.read()
영상 불러오기 확인
if ret == False:
print("Image load failed!")
break
속성 얻어오기
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
width = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv2.CAP_PROP_FPS)
delay = round(1000 / fps)
카메라 연결 해제: cap.release()
영상 데이터 타입
src.dtype
: unit8
src.shape
:
- 칼라: (cols, rows, 3)
- 흑백: (cols, rows)
src.size
:
- 칼라: cols * rows * 3
- 흑백: cols * rows
초기화
dst1 = src.copy()
dsr2 = np.zeros((height, width), np.uint8)
복사
얕은 복사
dst1 = src
dst2 = src[y : y + height + 1, x : x + width + 1]
깊은 복사
ㅜ
dst2 = cv2.copyTo(src, mask)
픽셀 값 참조
height, width = src.shape[:2]
for y in range(0, height):
for x in range(0, width):
b, g, r = src.item(y, x , 0), src.item(y, x , 1), src.item(y, x , 2)
src.itemset(y, x, 0, 124)
채널 분리, 병합
planes = cv2.split(src)
dst = merge(planes)
유용한 기능
트랙바 다루기
def on_trackbar(x):
pass
...
while cv2.waitKey(1) != 27:
low = cv2.getTrackbarPos("low_threshold", "src")
high = cv2.getTrackbarPos("high_threshold", "src")
canny = cv2.Canny(src, low, high)
cv2.imshow("src", canny)
다양한 그리기 함수
직선 그리기
cv2.lune(src, (x1, y1), (x2, y2), (0, 0, 255), 1)
사각형 그리기
cv2.rectangle(src, (x1, y1), (x2, y2), (0, 0, 255), 2)
cv2.rectangle(src, (x1, y1), (x2, y2), (0, 0, 255), -1)
cv2.rectangle(src, (x, y, width, height), (0, 0, 255), -2)
원그리기
cv2.circle(src, (x, y), radius, (0, 0, 255), 1)
다각형 그리기
pts = np.array([[x1, y1], [x2, y2], [x3, y3]], np.int32)
cv2.polylines(img, [pts], True,(0, 0, 255), 2)
cv2.fillPoly(img, [pts], (0, 0, 255))
글자 출력
cv2.putText(src, text, (30, 30), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 2)
시간 측정
tm = cv2.TickMeter()
tm.start()
tm.stop()
ms = tm.getTimeMilli()
마스크 & ROI
cv2.copyTo(src, mask, dst)
roi = src[y : y + height, x : x + width]
mask = np.zeros((height, width), np.uint8)
cv2.fillPoly(mask, [pts], (255))
dst = cv2.copyTo(src, mask)
차선 인식 함수들
가우시간 블러함수
blur1 = cv2.GaussianBlur(src, (3, 3), 0)
blur2 = cv2.GaussianBlur(src, (5, 5), 0)
캐니 에지 함수
canny = cv2.Canny(np.uint8(blur), low_threshold, high_threshold)
canny = cv2.Canny(blur, low_threshold, high_threshold)
색깔 영역 추출
hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)
low = np.array([0, 0, 70])
high = np.array([131, 255, 255]) # np.array([131, 255, 255], dtype=np.uint8)
mask = cv2.inRange(hsv, low, high)
Author And Source
이 문제에 관하여(OpenCV 파이썬 함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@openjr/OpenCV-파이썬-함수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)