카테고리 없음
[AI] Open cv에서 데이터 다루기
jjin502
2023. 9. 11. 09:45
데이터 타입 확인
데이터 shape, size, dtype을 확인할 수 있다.
사용법
import cv2
img = cv2.imread('data/messi5.jpg')
print(img.shape)
print(img.size)
print(img.dtype)
이미지 나누고 합치기
- 이미지 나누기 :
- 이미지 합치기 :
import cv2
img = cv2.imread('data/messi5.jpg')
b,g,r = cv2.split(img)
cv2.imshow('b', b)
cv2.imshow('g', g)
cv2.imshow('r', r)
img = cv2.merge((b,g,r))
cv2.imshow('image',img)
cv2.waitKey()
cv2.destroyAllWindows()
이미지 리사이즈를 이용한 합치기
- 이미지 합치기
- 이미지 리사이즈
import cv2
img = cv2.imread('data/messi5.jpg')
img2 = cv2.imread('data/opencv-logo.png')
ball = img[280:340, 330:390]
img[273:333, 100:160] = ball
img = cv2.resize(img, (512, 512))
img2 = cv2.resize(img2, (512,512))
dst = cv2.addWeighted(img, .9, img2, .1, 0)
cv2.imshow('image',dst)
cv2.waitKey()
cv2.destroyAllWindows()
bitwise 연산
- and 연산
- or 연산
- Xor 연산
- Not 연산
from IPython.display import Image
Image("data/bitwise.png")
import cv2
import numpy as np
img1 = np.zeros((250, 500, 3), np.uint8)
img1 = cv2.rectangle(img1, (200,0), (300,100),(255,255,255), -1)
img2 = np.zeros((250, 500, 3), np.uint8)
img2 = cv2.rectangle(img2, (250,0), (500,250), (255,255,255), -1)
bitAnd = cv2.bitwise_and(img2, img1)
bitOr = cv2.bitwise_or(img2, img1)
bitXor = cv2.bitwise_xor(img1, img2)
bitNot1 = cv2.bitwise_not(img1)
bitNot2 = cv2.bitwise_not(img2)
cv2.imshow("img1", img1)
cv2.imshow("img2", img2)
cv2.imshow('bitAnd', bitAnd)
cv2.imshow('bitOr', bitOr)
cv2.imshow('bitXor', bitXor)
cv2.imshow('bitNot1', bitNot1)
cv2.imshow('bitNot2', bitNot2)
cv2.waitKey(0)
cv2.destroyAllWindows()
Trackbar
- 트랙바 만들기
- 트랙바로 배경화면 색상 바꾸기
import numpy as np
import cv2 as cv
def nothing(x):
print(x)
# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)
cv.namedWindow('image')
cv.createTrackbar('B', 'image', 0, 255, nothing)
cv.createTrackbar('G', 'image', 0, 255, nothing)
cv.createTrackbar('R', 'image', 0, 255, nothing)
switch = '0 : OFF\n 1 : ON'
cv.createTrackbar(switch, 'image', 0, 1, nothing)
while(1):
cv.imshow('image',img)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
b = cv.getTrackbarPos('B', 'image')
g = cv.getTrackbarPos('G', 'image')
r = cv.getTrackbarPos('R', 'image')
s = cv.getTrackbarPos(switch, 'image')
if s == 0:
img[:] = 0
else:
img[:] = [b, g, r]
cv.destroyAllWindows()
- 트랙바 포지션 값 이미지에 띄우기
import numpy as np
import cv2 as cv
def nothing(x):
print(x)
# Create a black image, a window
cv.namedWindow('image')
cv.createTrackbar('CP', 'image', 10, 400, nothing)
switch = 'color/gray'
cv.createTrackbar(switch, 'image', 0, 1, nothing)
while(1):
img = cv.imread('data/lena.jpg')
pos = cv.getTrackbarPos('CP', 'image')
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img, str(pos), (50, 150), font, 6, (0, 0, 255), 10)
k = cv.waitKey(1) & 0xFF
if k == 27:
break
s = cv.getTrackbarPos(switch, 'image')
if s == 0:
pass
else:
img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
img = cv.imshow('image',img)
cv.destroyAllWindows()