LiJell's 성장기

04. OpenCV Basic Review + α (4편) 본문

Bigdata/OpenCV

04. OpenCV Basic Review + α (4편)

All_is_LiJell 2022. 1. 26. 17:50
반응형

 

04_OpenCV.zip
6.86MB

 

2022.01.26 - [Bigdata/OpenCV] - 05. OpenCV Basic 두번째 (5편)

2022.01.25 - [Bigdata/OpenCV] - 03. OpenCV_Basic (3편)

 

 

03. OpenCV_Basic (3편)

2022.01.26 - [Bigdata/OpenCV] - 05. OpenCV Basic 두번째 (5편) 2022.01.25 - [Bigdata/OpenCV] - 03. OpenCV_Basic (3편) 2022.01.24 - [Bigdata/OpenCV] - 01. OpenCV_Intro (1편) 01. OpenCV_Intro (1편) 202..

lime-jelly.tistory.com

 

05. OpenCV Basic 두번째 (5편)

2022.01.25 - [Bigdata/OpenCV] - 03. OpenCV_Basic (3편) 2022.01.24 - [Bigdata/OpenCV] - 01. OpenCV_Intro (1편) 01. OpenCV_Intro (1편) 2022.01.25 - [Bigdata/OpenCV] - 03. OpenCV_Basic (3편) 2022.01.25..

lime-jelly.tistory.com

4.1. 1편 리뷰 + α

import numpy as np
import cv2
import sys

4.1.1 사진 불러오기

img = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1) # 1은 컬러 0은 흑백


if img is None:
    print('image read failed')
    sys.exit()

cv2.namedWindow('img', cv2.WINDOW_AUTOSIZE)
cv2.imshow('img', img)

while True:
    key = cv2.waitKey()
    if key ==27  or key == ord('q'):
        break

cv2.destroyAllWindows()

4.1.2. 사이즈 조정

img = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)
img_re = cv2.resize(img, (200, 150), interpolation = cv2.INTER_AREA)

# cv2.imwrite('./Ch_2_Opencv_basic/fig/resized_puppy.png', img_re)

if img is None:
    print('image read failed')
    sys.exit()

cv2.namedWindow('img', cv2.WINDOW_AUTOSIZE)
cv2.imshow('img', img)

while True:
    if cv2.waitKey()==27:
        break

cv2.destroyAllWindows()

4.1.3. matplotlib로 사진 뽑기

import matplotlib.pyplot as plt

imgBGR = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)
imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB)
imgGRAY = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2GRAY)
plt.imshow(imgBGR)
plt.imshow(imgRGB)
plt.imshow(imgGRAY, cmap = 'gray')
plt.axis('off')
plt.show()

4.1.4. glob 이용해서 폴더 전체 파일 반복

import glob
img_list = glob.glob('./Ch_1_Opencv_Intro/fig/images/*.jpg')
print(img_list)
'''
['./Ch_1_Opencv_Intro/fig/images\\autumn_forest_park_128379_1920x1080.jpg', './Ch_1_Opencv_Intro/fig/images\\boat_mountains_lake_135258_1920x1080.jpg', './Ch_1_Opencv_Intro/fig/images\\forest_fog_trees_128751_1920x1080.jpg', './Ch_1_Opencv_Intro/fig/images\\pier_dock_sea_dusk_shore_118549_1920x1080.jpg', './Ch_1_Opencv_Intro/fig/images\\road_marking_evening_clouds_horizon_120298_1920x1080.jpg']
'''
cv2.namedWindow('img', cv2.WINDOW_NORMAL)
cv2.setWindowProperty('img', cv2.WND_PROP_FULLSCREEN,
                     cv2.WINDOW_FULLSCREEN)

idx = 0
while True:
    img = cv2.imread(img_list[idx])

    cv2.imshow('img', img)

    if cv2.waitKey(3000) == 27:
        break


    idx +=1

    if idx >= len(img_list):
        idx = 0


cv2.destroyAllWindows()

4.1.5. 영상 크기 참조

img = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)

print(img.shape)

h, w = img.shape[:2]

print('img dimension = {} x {}'.format(w,h))
'''
(480, 640, 3)
img dimension = 640 x 480
'''

4.1.6. 특정 부위 바꾸기

imgC = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)
imgG = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 0)


imgC[100:200, 200:300] =  (0, 0, 225)
imgG[100:200, 200:300] =  127

cv2.imshow('img1', imgC)
cv2.imshow('img2', imgG)

cv2.waitKey()

cv2.destroyAllWindows()

4.1.7. 새로운 창 만들기

img1 = np.zeros((400, 300, 3), dtype = np.uint8)
img2 = np.ones((400, 300, 3), dtype = np.uint8)*255
img3 = np.full((400, 300, 3), (0, 0 , 255), dtype = np.uint8) # 뭘 넣어줄지 입력해야해 
img4 = np.random.randint(0, 255, (400, 300), dtype = np.uint8)


cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.imshow('img4', img4)

cv2.waitKey()

cv2.destroyAllWindows()

4.1.8. 사진 복사

img = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)

img1 = img
img2 = img.copy()

img[50:100, 100:300] = (255, 0 ,0)

cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img', img)

cv2.waitKey()

cv2.destroyAllWindows()

4.1.9. 코 동그라미

img = cv2.imread('./Ch_2_Opencv_basic/fig/puppy.bmp', 1)

img2 = img[200:400, 300:500]
cv2.circle(img2, (100,100), 50, (0,0,255), 3, cv2.LINE_AA)

cv2.imshow('img', img)
cv2.imshow('img2', img2)


cv2.waitKey()
cv2.destroyAllWindows()

4.1.10. 합성

src = cv2.imread('./Ch_2_Opencv_basic/fig/airplane.bmp')
mask = cv2.imread('./Ch_2_Opencv_basic/fig/mask_plane.bmp')
dst = cv2.imread('./Ch_2_Opencv_basic/fig/field.bmp')

cv2.copyTo(src, mask, dst)



cv2.imshow('src',src)
cv2.imshow('mask',mask)
cv2.imshow('dst',dst)



cv2.waitKey()
cv2.destroyAllWindows()

반응형

'Bigdata > OpenCV' 카테고리의 다른 글

06. OpenCV 키보드 마우스 이벤트 처리 (6편)  (0) 2022.01.27
05. OpenCV Basic 두번째 (5편)  (0) 2022.01.26
03. OpenCV_Basic (3편)  (0) 2022.01.25
02. OpenCV_Intro_Review + α (2편)  (0) 2022.01.25
01. OpenCV_Intro (1편)  (0) 2022.01.24
Comments