2024. 11. 27. 10:23ㆍ컴퓨터비전&AI
- 명암도 영상 생성
import cv2
import numpy as np
image1 = np.zeros((50, 512), np.uint8)
image2 = np.zeros((50, 512), np.uint8)
image3 = np.zeros((50, 512), np.uint8)
rows, cols = image1.shape[:2]
for i in range(rows):
for j in range(cols):
image2.itemset((i, j), j // 2)
image3.itemset((i, j), j // 20 * 10)
cv2.imshow("image1", image1)
cv2.imshow("image2", image2)
cv2.imshow("image3", image3)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 영상 화소값 확인
import cv2
image = cv2.imread("images/pixel.jpg", cv2.IMREAD_GRAYSCALE)
if image is None:
raise Exception("영상 파일 읽기 오류")
(x,y),(w,h) = (180, 37), (15, 10)
roi_img = image[y:y+h, x:x+w]
print('roi_img =', '\n', roi_img)
cv2.rectangle(image, (x,y, w,h), 255, 1)
cv2.imshow("image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 영상 밝기 변화
import cv2
import numpy as np
image = cv2.imread("images/bright.jpg", cv2.IMREAD_GRAYSCALE)
if image is None:
raise Exception("영상 파일 읽기 오류")
add_cv2 = cv2.add(image, 100) # 영상 밝게
sub_cv2 = cv2.subtract(image, 100) # 영상 어둡게
add_np = np.add(image, 100) # 영상 밝게
sub_np = np.subtract(image, 100) # 영상 어둡게
cv2.imshow("image", image)
cv2.imshow("add_cv2(bright) : Saturation", add_cv2)
cv2.imshow("sub_cv2(dark) : Saturation", sub_cv2)
cv2.imshow("add_np(bright) : Modulo", add_np)
cv2.imshow("sub_np(dark) : Modulo", sub_np)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 영상합성
import cv2
import numpy as np
win_name = 'Alpha blending'
trackbar_name = 'fade'
def onChange(x):
alpha = x/100
dst = cv2.addWeighted(img1, 1-alpha, img2, alpha, 0)
cv2.imshow(win_name, dst)
img1 = cv2.imread('images/man_face.jpg')
img2 = cv2.imread('images/lion_face.jpg')
if img1 is None or img2 is None:
raise Exception("영상 파일 읽기 오류 발생")
cv2.imshow(win_name, img1)
cv2.createTrackbar(trackbar_name, win_name, 0, 100, onChange)
cv2.waitKey()
cv2.destroyAllWindows()
cv2.destroyAllWindows()
5. 영상 대비변경
import cv2
import numpy as np
image = cv2.imread("images/contrast.jpg",cv2.IMREAD_GRAYSCALE) #이미지를 Grayscale로 읽어 들입니다
if image is None:
raise Exception("영상 파일 읽기 오류 발생")
noimage = np.zeros(image.shape[:2], image.dtype)
#image.shape[:2] : 각 차원의 크기, [:2]를 해주는 이유는 컬러 이미지 shape 에는 가로 세로 말고도 차원 수가 적혀있기 때문
#dtype : 원소의 데이터 타입. 영상 데이터는 uint8
print(image.dtype)
dec_cont = cv2.scaleAdd(image, 0.2, noimage)# cv.scaleAdd(img, scale, add)->명암->img*scale+add
inc_cont = cv2.scaleAdd(image, 2.0, noimage)# cv.scaleAdd(img, scale, add)->명암->img*scale+add
cv2.imshow("image", image)
cv2.imshow("dec_cont", dec_cont)#명암 작아짐 (scale: 0.2이라서)
cv2.imshow("inc_cont", inc_cont)# 명암 커짐 (scale: 2.0이라서)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 컬러 히스토그램 그래프
import cv2
import numpy as np
import matplotlib.pylab as plt #pylab은 pyplot와 numpy를 단일 네임스페이스로 결합한 것
img = cv2.imread('images/mountain.jpg', cv2.IMREAD_COLOR) #사진의 색깔읽기
if img is None:
raise Exception("영상 파일 읽기 오류")
b, g, r = cv2.split(img) # b,g,r로 img를 나눠라
histo1 = cv2.calcHist([b], [0], None, [256], [0, 255])
histo2 = cv2.calcHist([g], [0], None, [256], [0, 255])
histo3 = cv2.calcHist([r], [0], None, [256], [0, 255])
# cv2.calcHist([입력이미지 배열], [인덱스], Mask이미지, [X축요소개수], [Y축 요소 범위 0~255])
plt.figure(figsize=(6,4))
plt.plot(histo1, color='b')
plt.plot(histo2, color='g')
plt.plot(histo3, color='r')
plt.show()
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6-1. 컬러 히스토그램 그래프
import cv2
import numpy as np
import matplotlib.pylab as plt
img = cv2.imread('images/mountain.jpg', cv2.IMREAD_COLOR)
if img is None:
raise Exception("영상 파일 읽기 오류")
b, g, r = cv2.split(img)
plt.figure(figsize=(6,4))
plt.hist(b.ravel(), 256, [0,255], color='b')
plt.hist(g.ravel(), 256, [0,255], color='g')
plt.hist(r.ravel(), 256, [0,255], color='r')
plt.show()
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6-2. 컬러 히스토그램 그래프
import cv2
import numpy as np
import matplotlib.pylab as plt
img = cv2.imread('images/mountain.jpg', cv2.IMREAD_COLOR)
if img is None:
raise Exception("영상 파일 읽기 오류")
b, g, r = cv2.split(img)
plt.figure(figsize=(6,4))
plt.hist(b.ravel(), 256, [0,255], color='b', alpha=0.8)
plt.hist(g.ravel(), 256, [0,255], color='g', alpha=0.8)
plt.hist(r.ravel(), 256, [0,255], color='r', alpha=0.8)
plt.show()
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
6-3 컬러 히스토그램 그래프 저장
import cv2
import numpy as np
import matplotlib.pylab as plt
img = cv2.imread('images/mountain.jpg', cv2.IMREAD_COLOR)
if img is None:
raise Exception("영상 파일 읽기 오류")
b, g, r = cv2.split(img)
plt.figure(figsize=(6,4))
plt.hist(b.ravel(), 256, [0,255], color='b', alpha=0.5)
plt.hist(g.ravel(), 256, [0,255], color='g', alpha=0.3)
plt.hist(r.ravel(), 256, [0,255], color='r', alpha=0.8)
plt.savefig('images/fill_ex.jpg')
plt.savefig('images/fill_ex.pdf', dpi=300) #plt show() 이후에 저장하면 이미지가 안뜬다.
plt.show()
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
'컴퓨터비전&AI' 카테고리의 다른 글
NeRF: Neural Radiance Fields (0) | 2024.12.22 |
---|---|
[배울랑교AI] 이미지 처리 (0) | 2024.11.27 |
[AI배울랑교] 컴퓨터 비전 (2) | 2024.11.27 |
[배울랑교 AI] 컴퓨터 비전 기능을 구현 (0) | 2024.11.27 |
[AI 과제] 회귀 및 분류 모델을 통한 데이터 분석 및 시각화 (0) | 2024.11.27 |