Python (55) 썸네일형 리스트형 나 혼자 하는 프로젝트 6탄 - 인공지능 스피커 만들기 - 2. 뼈대 만들기 이제 본격적으로 인공지능 스피커 코드를 작성해볼 시간이다. 동작을 위해 총 4개의 라이브러리를 사용한다. 동작에 필요한 함수는 총 3개 이다. 먼저, 사용자로부터 음성을 인식받아 텍스트로 전환해주는 listen() === STT 다음 해당 listen()에서 받은 텍스트를 활용하여 대답을 만들어주는 answer() 그리고 해당 answer()를 사용자에게 읽어주는 speak() === TTS 이제 천천히 코드를 짜보자. 먼저 m과 r 이라는 변수를 선언하여 음성을 인식하고, 마이크를 통해 음성정보를 전달받도록 해주었다. 여기서 stop_listening 은 listen_in_background()로 목소리를 항시 감지하며, 사용자로부터 음성입력을 전달받으면 listen 함수가 작동하게 된다. while문.. 22.11.28 18 FLASK 만들기 이번주 강의는 서버를 만들어 볼 것이다. 서버가 하는일은 지금껏 만들어 놓은 페이지(HTML)를 사용자에게 보여주는 일을 한다. 서버는 python 으로 작업할 예정이고, 프레임 워크 라고 하는 이미 다른 개발자들이 짜놓은 코드를 사용할 예정이다. Flask 는 python 에서 사용가능한 프레임 워크로, 배우 가볍고 커스텀이 자유롭다. 먼저 서버를 구축하기 위해서 가상환경을 설정해서 설치해주어야 한다. 가상환경 설치 관련해서는 워낙 많은 자료들이 존재하기에, 자세한 설명은 생략한다. 가상환경을 활성화 한 뒤에 pip install flask 로 flask 라이브러리를 먼저 설치해주어야 한다. 기본적으로 서버의 몸체(?)는 app.py 라는 이름을 가진다. (통상적으로 다들 이렇게 쓴다.) 저 9줄밖에 .. 나 혼자 하는 프로젝트 5탄 - OpenCV - 프로젝트(얼굴 인식 프로그램) 이제 대망의 프로젝트 시간이다. 거창하게 프로젝트 라는 단어를 사용했지만, 사실은 기존 코드를 수정하여 용도에 맞게 변경해 주는 작업이다. 먼저 해당 프로젝트를 진행하기 위해서는 mediapipe라는 라이브러리를 추가로 설치해 주어야 한다. 이제 해당 mediapipe 라이브러리 공홈으로 가서 예제 코드들을 가져오자. 이번 프로젝트에 사용할 영상은 https://www.pexels.com/ko-kr/video/3256542/ 이다. 가져온 코드중에 # For static images: 라고 주석으로 처리된 부분은 삭제하였고, 영상에서 캡쳐하는 부부만 남긴뒤 들여쓰기를 통해 코드를 정렬해 주었다. 삭제할 부분은 삭제하고, cv2.imshow()의 cv2.flip()은 cv2.resize() 로 바꾸어 주었.. 나 혼자 하는 프로젝트 5탄 - OpenCV - 12. 퀴즈 이제 대략적인 개념 정리는 끝이 났다. 이번의 퀴즈는 가로로 촬영된 영상을 세로로 변환하여 파일로 저장하는 것이다. 위의 3가지 조건을 만족하는 새로운 파일을 만들어야 한다. 결과물을 보면 이렇게 총 9초에 해당하는 원본보다 4배 빠른 영상이 만들어 져야 한다. 이미 파일 저장에서 공부했던 부분이기에 추가적인 설명은 빼고 cv2.VideoWriter() 함수에 전달하는 너비,높이 값이 거꾸로 적어주어야 한다. 이유는 저장될 이미지가 회전하기 때문이다. 저 값을 반대로 적어주지 않으면, 코드를 실행하면 화면에는 90도로 회전된 영상이 출력되지만, 파일로 저장하는 과정에 에러가 생기기 때문에, 실제 재생가능한 파일로 저장되지 않는다. 또한 fps*4 로 전달하여 재생속도를 4배 증가 시켜주었다. 이제 whi.. 나 혼자 하는 프로젝트 5탄 - OpenCV - 11. 미니 프로젝트2( 이미지 추출 후 저장) 이제 앞서 윤곽선을 검출하는걸 응용한 미니 프로젝트 시간이다. 목적은 카드 4장의 이미지를 검출하여, 파일로 저장하는 것이다. 어려워 보이지만, 의외로 굉장히 간단하다. 앞서 윤곽선 검출에 사용한 코드를 그대로 사용 하였다. 여기에서 이미 카드 이미지의 좌표 정보를 알고 있다, 바로 x,x+widht,y+height,y 이다. (왼쪽 위 부터 시계방향 순서) 이제 crop이란 변수에 원본 이미지의 특정 부분을 저장하여 준다. 이렇게 저장된 crop 이미지를 cv2.imwrite()를 통해 파일로 저장해 주면 된다. 자동으로 넘버링 될 수 있게 idx 라는 변수를 사용 하였으며, 최종적으로 이렇게 4개의 이미지가 잘 검출 되었다. 나 혼자 하는 프로젝트 5탄 - OpenCV - 10. 이미지 검출(경계선 & 윤곽선) 이미지에서 색상이 바뀌는 부분을 경계선이라고 한다. 즉, 우리가 그림을 그릴때, 스케치를 먼저 하고 그 안을 색상으로 채우게 되는데 그때 하는 스케치가 경계선을 그리는 작업이다. 경계선을 검출하기 위해 가장 많이 사용되는건 cv2.Canny() 함수이다. cv2.Canny()함수는 총 3개의 인수를 전달받아 사용하는데, 첫번째는 대상 이미지, 두번째는 하위 임계값, 세번째는 상위 임계값이다. 색 변화가 하위 임계값보다 낮은경우에는 외곽선으로 인식하지 않으면, 상위 임계값보다 큰 경우에만 외곽선으로 인식하여 이미지를 검출하게 된다. 검출된 이미지를 살펴보면, 원본 이미지의 눈사람 아래 눈은 외곽선으로 그려지지 않았다. 즉 설정한 하위 임계값 보다 낮은 색변화인 것이다. 이제 트렉바를 추가하여 임계값 변화에.. 나 혼자 하는 프로젝트 5탄 - OpenCV - 9. 이미지 변형(팽창, 침식) 이미지를 팽창시킨다는건 크기를 키운다는것이 아니다. 정확히 말하자면, 해당 영역(흰색)을 확장 시키는 것에 가깝다. 먼저 이미지 팽창을 위해서는 kernel 이란게 필요한데, numpy 를 이용하여 3*3 의 영역에 모두 1 값을 가지는 배열을 생성해 주었다. 이제 미리 준비해둔 이미지를 불러오자. '나도 코딩' 글자 위에 검은색 구멍이 뚫린게 보인다. 이제 cv2.dilate()함수를 이용해 영역을 팽창시켜서 저 검은색 구멍을 없애보자. 옵션값 iterations 은 반복 횟수를 의미한다. 3번 실행하였을때 글자위 검은 구멍이 완벽이 사라진 모습이다. 또한 흰색 글자 자체의 크기보다는 두께가 많이 두꺼워졌다. 즉, 흰색 픽셀 기준 외곽선으로 팽창이 일어나는 것이다. 이번에 침식(Erosion)에 대해 .. 나 혼자 하는 프로젝트 5탄 - OpenCV - 2. 도형 그리기 도형 그리기가 필요한 이유는, 이미지를 처리하는 과정에 특정 부분만 캡쳐하거나 수정하기 위해서이다. 특정 이미지 파일을 불러와서 사용해도 무방하지만, 정확한 개념을 이해하기 위해 빈 스케치북을 만들어서 도형을 그리는 방법을 공부해보자. 코드 작성의 편의를 위하여 numpy 라이브러리를 추가로 사용하였다. np.zeros()함수를 이용하면 지정된 영역에 모두 0 값으로 채워줄 수 있다.RGB에서 0,0,0 은 검은색을 의미한다. 먼저 사각형이다. 빈 스케치북 img에 [] 좌표값을 넣어주면 되는데, y,x 순서이다. 위 코드에서는 y 100부터 200까지, x 200부터 300까지의 값을 255,255,255(흰색)으로 변경해 주었다. 직선은 3가지 옵션값이 존재한다. 먼저 기본값 cv2.LINE_8을 이.. 이전 1 2 3 4 5 ··· 7 다음