이미지 파일 매칭은 간단하다
cv2라는 오픈 라이브러리를 활용하여 파일 이미지를 출력하면 된다.
이미지 웃는 모양을 출력해 내는 방법
image = cv2.imread("state_lough.png", cv2.IMREAD_UNCHANGED)//이미지 불러와서 변수저장
cv2.imshow("ough", image)//cv2화면에 이미지 띄우기
cv2.waitKey(0)
cv2.destroyAllWindows()
Python
복사
연속적인 이미지 출력하기 랜덤값 생성
출력후 지우기
import numpy as np
import matplotlib.pyplot as plt
from IPython import display
for i in range(100):
array = np.random.random(size=(10,10,3))
display.clear_output(wait=True)
display.display(plt.gcf())
plt.imshow(array)
Python
복사
참고자료들
실시간 소리에 따라 움직이는 얼굴 코드
import pygame
import pyaudio
import wave
import numpy as np
from pynput import keyboard
from threading import Thread
import cv2
from matplotlib import pyplot as plt
from IPython import display
# 스크린 전체 크기 지정
SCREEN_WIDTH = 1020
SCREEN_HEIGHT = 480
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
RECORD_SECONDS = 1
WAVE_OUTPUT_FILENAME = "output.wav"
NOISE_MININUM_VALUE = 250
# pygame 초기화
pygame.init()
def keyint():
with keyboard.Listener(
on_press=on_press,
) as listener:
listener.join()
# 스크린 객체 저장
SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("pygame Sprite")
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
# FPS를 위한 Clock 생성
clock = pygame.time.Clock()
FPS = 120
frames = []
BACKGROUND_COLOR = pygame.Color('white')
class AnimatedSprite(pygame.sprite.Sprite):
def __init__(self, position):
super(AnimatedSprite, self).__init__()
# 이미지를 Rect안에 넣기 위해 Rect의 크기 지정
# 이미지의 크기와 같게 하거나, 크기를 다르게 한다면 pygame.transform.scale을 사용하여 rect 안에
# 이미지를 맞추도록 한다.
size = (680, 472)
# 여러장의 이미지를 리스트로 저장한다. 이미지 경로는 자신들의 경로를 사용한다.
images = []
images.append(pygame.image.load('state_surprise.png'))
image_nomal = []
image_nomal.append(pygame.image.load('state_nomal.png'))
image_nomal.append(pygame.image.load('state_surprise.png'))
image_nomal.append(pygame.image.load('state_gloomy.png'))
image_nomal.append(pygame.image.load('state_lough.png'))
image_nomal.append(pygame.image.load('state_OH.png'))
image_nomal.append(pygame.image.load('state_happy.png'))
# rect 만들기
self.rect = pygame.Rect(position, size)
# Rect 크기와 Image 크기 맞추기. pygame.transform.scale
self.images = [pygame.transform.scale(image, size) for image in images]
self.image_nomal = [pygame.transform.scale(image, size) for image in image_nomal]
# 캐릭터의 첫번째 이미지
self.index = 0
self.image = image_nomal[self.index]
# 1초에 보여줄 1장의 이미지 시간을 계산, 소수점 3자리까지 반올림
self.animation_time = round(100 / len(self.image_nomal * 100), 2)
# mt와 결합하여 animation_time을 계산할 시간 초기화
self.current_time = 0
def update(self, mt, noise):
# update를 통해 캐릭터의 이미지가 계속 반복해서 나타나도록 한다.
# loop 시간 더하기
self.current_time += mt
# loop time 경과가 animation_time을 넘어서면 새로운 이미지 출력
if self.current_time >= self.animation_time:
self.current_time = 0
if(noise>250):
self.index +=1
if(noise<250):
self.index = 0
if self.index >= len(self.image_nomal):
self.index = 1
self.image = self.image_nomal[self.index]
def main():
# player 생성
player = AnimatedSprite(position=(100, 8))
# 생성된 player를 그룹에 넣기
all_sprites = pygame.sprite.Group(player)
Thread(target=keyint, daemon=False)
running = True
while running:
mt = clock.tick(60) / 1000
# 각 loop를 도는 시간. clock.tick()은 밀리초를 반환하므로
# 1000을 나누어줘서 초단위로 변경한다.
data = np.frombuffer(stream.read(CHUNK), dtype=np.int16)
noise = int(np.average(np.abs(data)))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
all_sprites.update(mt,noise)
# 배경색
SCREEN.fill(BACKGROUND_COLOR)
# 모든 sprite 화면에 그려주기
all_sprites.draw(SCREEN)
pygame.display.update()
# all_sprites 그룹안에 든 모든 Sprite update
if __name__ == '__main__':
main()
Python
복사