Deep Learning - OpenCV 사용하기 ⛷

화이티 ·2024년 1월 16일
0

Deep Learning

목록 보기
17/24

YOLO환경설정시 OpenCV가 자동으로 install 됩다 😾

OpenCV có cấu trúc module, tức là nó bao gồm cả những thư viện liên kết tĩnh lẫn thư viện liên kết động. Nắm rõ các module của OpenCV sẽ giúp bạn đọc hoàn toàn thấu hiểu OpenCV là gì.
Core functionality (core): Module này sở hữu cơ chế rất nhỏ gọn. Nó được dùng để định hình các cấu trúc của cơ sở dữ liệu cơ bản, bao gồm cả những mảng đa chiều. Ngoài ra nó còn xác định các chức năng của những module đi kèm khác nữa.
Image Processing (imgproc): Đây là module được dùng cho quá trình xử lý hình ảnh. Nó cho phép người dùng thực hiện các hoạt động như lọc hình ảnh tuyến tính và phi tuyến, thực hiện phép biến hình, thay đổi không gian màu, xây dựng biểu đồ và rất nhiều thao tác khác liên quan.
Video Analysis (video): Giống như tên gọi của nó, module này cho phép phân tích các video. Kết quả được trả về bao gồm các ước tính chuyển động, thực hiện tách nền và các phép toán theo dõi vật thể.
Camera Calibration and 3D Reconstruction (calib3d): Module này cung cấp các thuật toán hình học đa chiều cơ bản và hiệu chuẩn máy ảnh single và stereo. Ngoài ra nó còn đưa ra các dự đoán kiểu dáng của đối tượng và sử dụng thuật toán thư tín âm thanh nổi cùng các yếu tố tái tạo 3D.
2D Features Framework (features2d): Module này giúp phát hiện các tính năng nổi trội của bộ nhận diện, bộ truy xuất thông số và thông số đối chọi.
Ngoài ra còn có rất nhiều module khác với đa dạng tính năng, ví dụ như: FLANN, Google test wrapper…

  • import cv2
import cv2
  • 경로지정
path = './data/cat.jpg'
  • 이미지 불로오기
img = cv2.imread(path)
  • 원두우 창을 뛰워서 이미지 쮜우가
  • 띄워질 창의 이름, 뛰울 이미지
cv2.imshow('cat', img)
  • 키입력 대기시간
  • 0: 계속 대기, ms 단위, 1000ms = 1초
cv2.waitKey(1000)
  • 원도우에 띄운 창 모두 닫기
cv2.destroyAllWindows()

Gray배경만들기

# 이미지 색상공간 변환하기
# RGB (Red, green, blue) > Gray, RGBA, RSV
import cv2
path = './data/cat.jpg'
img = cv2.imread(path)
# 흑백으로 변환
img_gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
cv2.imshow('cat', img_gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

Thresh_binary

import cv2
path = './data/cat.jpg'
img = cv2.imread(path)
# 흑백으로 변환
img_gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# 이진 이미지 변환 (흰색 or 검은색), 흑백사진에서 진행 가능
_, thr = cv2.threshold(img, 127,255, cv2.THRESH_BINARY)
cv2.imshow('cat', thr)
cv2.waitKey(0)
cv2.destroyAllWindows()


Flip 만들기

  • 정상이미지

-1: 상하좌우 뒤집기

import cv2
path = './data/KakaoTalk_20240112_122826900_03.jpg'
img = cv2.imread(path)
# 사진 불러오기
# 1: 좌우 뒤집기
# 0: 상하 뒤집기
# -1: 상하좌우 뒤집기
img = cv2.flip(img,-1)
cv2.imshow('cat', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

0: 상하 뒤집기

1: 좌우 뒤집기

카메라 (동영상) 연결하기

# 카메라(동영상) 연결하기
import cv2
# 카메라 연결하기
# 경로: 동영상 연결하기
# 보통은 초단 30장의 사진이 출력
# 평균적인 사람은 12~ 15장에서 동영상이라고 인식
video = cv2.VideoCapture(0)
# 몇초의 영상 = 몇장의 사진이입력될지 모르니 while문
while video.isOpened():
    # 한장의 사진 가져오기 시도
    # ret = 가져오면 True,못가져오면 False
    # img = 사진 값
    ret , img = video.read()
    # 만약 사진 못 가져오면 while문 종료
    if not ret:
        break
    # 창의 이름, 창의 뛰울 이미지
    cv2.imshow('img',img)
    # 키 입력 대기 시간
    # 30= 0.3초 동안 한 사진을 뛰우겠다 = 1초에 33장의 사진을 뛰우겠다
    # 다른 코드들의 실행시간을 확보하기 위해서 일반적인 속도보다 조금 더 빠르게 실행
    # while문 종료 버튼 만들기 =동영상 종료 버튼
    k = cv2.waitKey(30) # ASCII코드로 값을 저장
    if k ==49: # 1(!) 을 누르면 실행
        break
        
# 연결되어있는 비디오(카메라) 종료    
video.release()
# 원두우에 뛰운 창 종료
cv2.destroyAllWindows()

Press 1 to Exit

Choose mode by pressing 123456

# 카메라(동영상) 연결하기
import cv2
# 카메라 연결하기
# 경로: 동영상 연결하기
# 보통은 초단 30장의 사진이 출력
# 평균적인 사람은 12~ 15장에서 동영상이라고 인식
video = cv2.VideoCapture(0)
# 몇초의 영상 = 몇장의 사진이입력될지 모르니 while문
black = False
flip0 = False
flip1 = False
flip2 = False
thr = False
while video.isOpened():
    # 한장의 사진 가져오기 시도
    # ret = 가져오면 True,못가져오면 False
    # img = 사진 값
    ret , img = video.read()
    # 만약 사진 못 가져오면 while문 종료
    if not ret:
        break
   
    # 키 입력 대기 시간
    # 30= 0.3초 동안 한 사진을 뛰우겠다 = 1초에 33장의 사진을 뛰우겠다
    # 다른 코드들의 실행시간을 확보하기 위해서 일반적인 속도보다 조금 더 빠르게 실행
    # while문 종료 버튼 만들기 =동영상 종료 버튼
    k = cv2.waitKey(30) # ASCII코드로 값을 저장
    if k ==49: # 1(!) 을 누르면 실행
        break
   # 흑백으로 이미지 변경(2-@)
    elif k == 50:
        # 한장의 사진만 흑백으로 변경
        black = not black
        

    # 이진이미지 변경 (3-#)
    elif k ==51:
        thr = not thr
        
    
    #좌우 반전 (4-$)
    elif k == 52:
        flip0 = not flip0
        
    # 상하 반전 (5)
    elif k ==53:
        flip1 = not flip1
        

    # 상하좌우반전(6)
    elif k ==54:
        flip2 = not flip2
    
    if black : #2 번이 눌리고난 다음부터 실행
        img = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
     # 창의 이름, 창의 뛰울 이미지
    if thr: 
       _, img = cv2.threshold(img, 127,255, cv2.THRESH_BINARY)
    if flip0:
        img = cv2.flip(img,1)
    if flip1:
        img = cv2.flip(img,0)   
    if flip2:
        img = cv2.flip(img,-1)  

    cv2.imshow('img',img)

# 연결되어있는 비디오(카메라) 종료    
video.release()
# 원두우에 뛰운 창 종료
cv2.destroyAllWindows()

Capture Video as image

import cv2
video  = cv2.VideoCapture(0)
cnt = 0
while video.isOpened():
    ret, img = video.read()
    if not ret: 
        break
    k = cv2.waitKey(30)
    if k == 49: 
        break
    elif k ==50:# 순간화면 캡쳐 후 저장
        # 저장될 위치, 사진, 속성 
        cv2.imwrite(f'./data/capture{cnt}.png', img, params=[cv2.IMWRITE_PNG_COMPRESSION, 0])
        cnt+=1
    cv2.imshow('img',img)
video.release()
cv2.destroyAllWindows()
profile
열심히 공부합시다! The best is yet to come! 💜

0개의 댓글

관련 채용 정보