quilt code

[AI] OpenCV 본문

daily/AI

[AI] OpenCV

김뱅쇼 2023. 4. 22. 16:48

OpenCV

: Open Source Computer Vision Library 

(설치- cmd에서 pip install opencv-python) 


 이미지 읽어오기 

cv2.imread(imgFile, flag) 

imgFile : 이미지 파일 경로
flag : 이미지 파일을 읽어올 때 옵션
1 : imread_color : color(BGR)로 읽기, default값=1(flag 생략)
0: imread_grayscale : 흑백
-1 : imread_unchanged : color + alpha channel까지 포함


이미지 출력


cv2.imshow('title', img)

title : windows 창 이름
img : 이미지 파일

 
cv2.waitKey(time)

키 입력 대개
time : mesc 시간 단위, 공백 or 0일 경우 무한대기

 
cv2.destroyWindows('title')

특정 이미지 창 닫기
tile : windows창 이름

 
cv2.destroyAllWindows()

모든 이미지 창 닫기

 

 

day11)


1. my_cv01



1
2
3
4
5
6
7
8
import cv2
 
img1 = cv2.imread("jhjh.jpg")
print(img1.shape)
 
cv2.imshow('jhjh', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
cs



 


2. my_cv03_bw



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2
 
img1 = cv2.imread("jhjh.jpg", cv2.IMREAD_GRAYSCALE)
print(img1.shape)
 
cv2.imshow('jhjh', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
 
# 강사님 코드
# # gray_scale 이미지 불러오기
# img = cv2.imread('so.jpg') # 인수를 0으로 전달하면 gray 이미지가 로드된다.
# img_gray = cv2.cvtColor(img,  cv2.COLOR_BGR2GRAY) # 인수를 0으로 전달하면 gray 이미지가 로드된다.
#
# print(img_gray)
#
# # gray 이미지 보기
# cv2.imshow('gray_image', img_gray)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
cs



 

 


3. my_cv04_crop


사진 자르기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import cv2
 
img1 = cv2.imread("jhjh.jpg")
 
= 200
= 300
= 500
= 300
 
cropped_img = img1[y: y + h, x: x + w]
 
cv2.imshow('jhjh_cute', img1) #원본 이미지 파일
cv2.imshow('jhjh_crop', cropped_img)
 
cv2.waitKey(0)
cv2.destroyAllWindows()
 
 
 
 
cs

 


4. my_cv05_bw_save



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2
 
# img1 = cv2.imread("jhjh.jpg", cv2.IMREAD_GRAYSCALE)
# print(img1.shape)
#
# cv2.imshow('jhjh', img1)
# # cv2.imwrite('C:/Users/PC-20/Pictures/Saved Pictures/jhjh.jpg',img1) #흑백으로 바꾼 이미지 저장
# cv2.imwrite('jhjh_gray.jpg',img1) #흑백으로 바꾼 이미지 저장
#
# cv2.waitKey(0)
# cv2.destroyAllWindows()
 
 
image = cv2.imread("jhjh.jpg")
print(image.shape)
grayImg = cv2.imread('jhjh.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('jhjh2_bw.jpg', grayImg)
cv2.imshow('gray', grayImg)
 
cv2.waitKey()
cv2.destroyAllWindows()
cs

5. my_cv06_resize


사진 크기 변경


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import cv2
 
img = cv2.imread("jhjh.jpg")
 
#방법3
= int(img.shape[0]/2)
= int(img.shape[1]/2)
resize_img = cv2.resize(img, (w, h))
resize_img_gray = cv2.cvtColor(resize_img,cv2.COLOR_BGR2GRAY)
 
print(img.shape[0])
 
# 방법1
# resize_img = cv2.resize(img, (250, 380))
 
# 방법2
# resize_img = cv2.resize(img, (0,0), fx=0.5, fy=0.5)
print("resize_img.shape = {0}".format(resize_img.shape))
 
cv2.imshow('jhjh1', img)
cv2.imshow('resize_img', resize_img)
 
cv2.imwrite('jhjh_gray2.jpg', resize_img_gray)
 
cv2.waitKey(0)
cv2.destroyAllWindows()
cs
 

6. my_cv07_rotate


사진 회전


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import cv2
 
img1 = cv2.imread("jhjh_gray2.jpg")
 
# 내가 찾은거
# img2 = cv2.rotate(img1, cv2.ROTATE_90_COUNTERCLOCKWISE) #반시계로 90도
 
print(img1.shape)
 
height, width, channe1 = img1.shape
matrix = cv2.getRotationMatrix2D((width/2, height/2), 451)
dst = cv2.warpAffine(img1, matrix, (width, height))
 
 
 
 
 
cv2.imshow('jhjh1', img1)
cv2.imshow('jhjh2', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
cs

7. my_cv08_rectangle


사진 위에 그림 그리기


1
2
3
4
5
6
7
8
9
10
import cv2
 
img = cv2.imread("jhjh.jpg")
print(img.shape)
# img = cv2.rectangle(img, (110, 110), (200, 200), (0, 255, 0), 3)
img = cv2.circle(img, (150150), 50, (02550), 5)
 
cv2.imshow('jhjh1', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cs







8. my_cv09_text


사진 위에 글씨 쓰기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
 
font=ImageFont.truetype("fonts/batang.ttc",20#파일에 폰트 가져다 두면 fonts/ 없어도 쓸 수 있음(다른 환경에서도 사용가능)
 
img = cv2.imread("jhjh.jpg")
img = Image.fromarray(img)
 
draw = ImageDraw.Draw(img)
 
# org=(50,100)
# text="JaeHyeon (재현)"
# draw.text(org,text,font=font,fill=(0,255,0))
 
text = "재현"
draw.text((50,100),text,font=font,fill=(0,255,0))
 
 
 
img = np.array(img)
 
print(img.shape)
 
cv2.imshow('jhjh1', img)
cv2.waitKey()
cv2.destroyAllWindows()
cs




9. my_cv10_face


얼굴 인식


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import cv2
 
# haarcascade 불러오기 / 
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
 
# 이미지 불러오기
img = cv2.imread('jhface.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 
# 얼굴 찾기
faces = face_cascade.detectMultiScale(gray, 1.35)
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (25500), 2)
 
# 영상 출력
cv2.imshow('image', img)
 
key = cv2.waitKey(0)
cv2.destroyAllWindows()
cs




10. my_cv10_hw


얼굴 인식 후 글자 입력 (숙제로 한 것)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
 
# haarcascade 불러오기
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
 
# 이미지 불러오기
img = cv2.imread('jhface.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = Image.fromarray(img)
 
#이름 쓰기
draw = ImageDraw.Draw(img)
font=ImageFont.truetype("fonts/gulim.ttc",20)
org=(250,300)
text="재현"
draw.text(org,text,font=font,fill=(0,255,0))
img = np.array(img)
 
# 얼굴 찾기
faces = face_cascade.detectMultiScale(gray, 1.35)
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (25500), 2)
 
    # 눈 찾기
    # roi_color = img[y:y + h, x:x + w]
    # roi_gray = gray[y:y + h, x:x + w]ㅔ
    # eyes = eye_cascade.detectMultiScale(roi_gray)
    # for (ex, ey, ew, eh) in eyes:
    #     cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)
 
# 영상 출력
cv2.imshow('image', img)
 
key = cv2.waitKey(0)
cv2.destroyAllWindows()
cs





11. my_cv11_face_label



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import cv2
import numpy as np
from PIL import ImageFont, ImageDraw, Image
 
# harcascade 불러오기 / 
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
 
img1 = cv2.imread('jhface.jpg')
 
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.35)
for (x, y, w, h) in faces:
 
    font=ImageFont.truetype("fonts/batang.ttc",20)
    img = Image.fromarray(img1)
    draw = ImageDraw.Draw(img)
    draw.text((250,300),"재현",font=font,fill=(0,255,0))
    img = np.array(img)
    
    cv2.rectangle(img, (x, y), (x + w, y + h), (25500), 2)
 
cv2.imshow('image', img)
 
key = cv2.waitKey(0)
cv2.destroyAllWindows()
cs

'daily > AI' 카테고리의 다른 글

[AI] 자동차 번호판 숫자 인식  (0) 2023.06.14
[AI] BeautifulSoup  (0) 2023.04.25
[AI] tensorflow (3)  (0) 2023.04.22
[AI] cifar10  (0) 2023.04.20
[AI] tensorflow (2)  (0) 2023.04.19