반응형

전체 글 26

C강좌 1. Hello World를 출력해 보자!(전처리, 스코프,함수,빌드)

@읽기전 참고 솔직히 나는 이 글을 읽고 잘 이해가 안되면 다른 블로그를 찾아가는 것을 추천한다. 지금 부터 포스팅 하는 내용은 내 입장에서 기본이라고 생각하기 때문에 입문자에게는 어려울 수 있다. 그래서 만약 이 글을 읽고 이해가 안된다면 앞으로의 글도 이해가 안될거라고 생각하기 때문에 괜히 고집부리지 말고 내 블로그를 떠나기를 추천한다. (나중에 어느정도 감이 잡히면 다시 오기를...) 나는 다음 환경 에서 작업하였다. OS : Windows 10 IDE : Visual Studio 2019 (딱히 C만 지원 하면 어떤 개발환경이든 차이는 없을 것 같다.) 그럼 이제 첫 강좌로 Hellow World를 출력해 보고 기본적인 프로그램의 기본 요소들을 살펴보자. #include int main(void)..

C & C++/강좌 2020.10.27

OpenCV 강좌 6 - 키보드 이벤트

이전 강좌에서 cv2.waitkey() 함수를 통하여 키보드에서 입력된 값을 수신할 수 있다고 배웠었다. 이번 강좌에서는 키보드 이벤트에 관하여 좀 더 자세히 설명하고 그에 따른 예제를 통해 확실히 배워보자. 키보드 이벤트 함수 설명 cv2.waitKey(delay) 키보드로부터 입력된 1byte의 키값을 받는다. cv2.waitKeyEx(delay) 키보드로부터 입력된 2byte의 키값을 받는다. 1바이트? 차이로 무슨일이 가능해질까? cv2.waitKey()를 이용하여 대부분의 키값을 얻을 수 있지만 1byte의 용량 제한으로 인해 받지 못하는 키값도 발생한다. 키(F1, F2, …, F12), ↑, ↓, ←, → 화살표 키 등 특수 키들이 대표적이다. 특수키 cv2.waitKeyEx() 반환값 특수..

OpenCV 키보드 이벤트 관련 ASCII표

문자에서 원하는 처리 키보드이벤트를 찾은뒤에 cv2.waitKey()== 로 처리하면 됩니다. 예제) ESC 키 cv2.waitKey() == 0x1B 10진수 16진수 문자 10진수 16진수 문자 10진수 16진수 문자 10진수 16진수 문자 0 0x00 NUL 32 0x20 Space 64 0x40 @ 96 0x60 ` 1 0x01 SOH 33 0x21 ! 65 0x41 A 97 0x61 a 2 0x02 STX 34 0x22 " 66 0x42 B 98 0x62 b 3 0x03 ETX 35 0x23 # 67 0x43 C 99 0x63 c 4 0x04 EOT 36 0x24 $ 68 0x44 D 100 0x64 d 5 0x05 ENQ 37 0x25 % 69 0x45 E 101 0x65 e 6 0x06 AC..

OpenCV 강좌 5 - 문자를 출력하자~

이번 강좌에서는 CV2를 이용해 글자를 입력해 봅시다~ 함수 설명 cv2.getTextSize(text, fontFace, fontScale, thickness) -> retval, baseLine 문자열 text의 출력을 위한 크기를 retval에 반환 출력될 사각 영여의 하단으로 부터 사대적 기준선 y의 위치를 반환한다. cv2.putText(img, text, org, fontFace, fontScale, color, thickness) text(내용)을 사각형 왼쪽 아래 org(좌표)에 폰트(fonstFace), 폰트스케일(FontScale, color로 문자를 출력한다. 예제 import cv2 import numpy as np img = np.full(shape=(512,512,3),fill_..

OpenCV 한글 출력 깨짐 해결법(feat. PIL활용)

한글을 출력하려고 하면 아래 그림과 같이 깨져버리는 것을 확인할 수 있다. 이제부터 한글 깨짐을 해결해 보자. 해결법 Python의 이미지 처리 모듈 하면 PIL (Python Image Library) OpenCV (Computer Vision) 이 있다. 여기서 OpenCV를 이용하면서 한글이 깨지기 때문에 PIL을 이용해 한글을 출력하면 된다. 일단 PIL모듈을 설치하자. PIL모듈의 이름은 Pillow이다. import cv2 import numpy as np from PIL import ImageFont, ImageDraw, Image img = np.full(shape=(512,512,3),fill_value=255,dtype=np.uint8) img = Image.fromarray(img) ..

OpenCV 강좌 4 - 도형을 그리자.

이번 강좌에서는 OpenCV를 활용해 그림을 그려보도록 하자. "도형을 왜 그려요?" 위와 같은 의문이 들 수도 있다. 백문불여일견[ 百聞不如一見 ] 이라 하던가. 다음 그림을 보고 아! 하고 무릎을 탁 치며 "도형을 그려 어디다 사용하려고!!"라고 생각한 이전의 나를 반성해보도록 하자. 이 그림을 보고 왜 우리가 도형을 그리는 법을 배워야 하는지 대부분이 알 것이다. 우리가 실제 코드를 작성하고 그 결과를 확인하기 위한 가장 좋은 방법은 영상위에 그 결과를 시각화하는 것이다. 단순히 x, y 좌표값을 주면 솔직히 코드가 제대로 작동하는지 잘 모른다. 단순한 도형 그리기 라도 기본기라고 생각하고 제대로 배워보자. 각종 도형 그리기 함수 함수 설명 cv2.line(img, pt1, pt2, color, t..

OpenCV이 BGR 포맷을 쓰는 이유

이미지를 불러오거나 우리가 도형을 그리기 위해 color에 입력하는 순서는 흔히 접하는 RGB 순서가 아니라 BGR 순서이다. 왜 그런지 가끔씩 호기심이 들 때가 있어 이번 포스팅에서는 그 이유에 대한 해답을 알아가 보자. 왜 BGR을 쓸까? rgb = bgr[:,:,::-1] 우리가 OpenCV를 사용하다 보면 위 코드를 자주 사용하게 된다. 우리 일상에서는 RGB순으로 대부분 사용할 것이다. 하지만 OpenCV는 BGR을 기본 포맷으로 사용하기 때문에 위 코드를 이용해 RGB순서로 배열을 바꿔줘야 하는 번거로움이 있다. https://www.learnopencv.com/why-does-opencv-use-bgr-color-format/ Why does OpenCV use BGR color format..

OpenCV2 강좌 3 - 비디오 프레임 캡처 및 표시

저번 강의에서는 이미지 파일을 입출력을 배웠습니다. 이번 시간에는 동영상의 입출력에 대해 배워볼까 합니다. 비디오란? 비디오를 다루려면 비디오에 대한 구성을 알고 있어야 합니다. 비디오를 간단히 생각하면 이전에 배운 여러 장의 이미지 파일이 순차적으로 재생되면서 잔상효과로 인하여 마치 실제 움직이는 것처럼 보입니다. 비디오 캡처는 아날로그 비디오를 디지털 비디오로 변환하는 과정입니다. 프레임(frame, 동영상을 구성하는 사진 1장 단위)은 비디오에서 캡처한 한 장의 영상입니다. 비디오는 이러한 프레임으로 구성된 연속 시퀀스(Sequence)입니다. 비디오 캡처와 관련된 함수 함수 설명 출력 cv2,VideoCapture(device) 웹캠 같은 장치에서 비디오를 불러온다. 카메라가 한개이면 0, 두 개..

OpenCV 강좌 2 - 영상 입출력과 Display

이전까지 OpenCV를 설치하는 과정까지 진행하였습니다. 오늘은 OpenCV를 활용하여 이미지, 동영상을 불러오고 컴퓨터에서 화면을 띄우는 과정까지 진행하도록 하겠습니다. 함수 설명 출력 cv2.imread(filename, flags) 영상파일(BMP,JPEG,PNG,TIFF 등)을 numpy.ndarray의 배열로 읽어 반환한다. retval cv2.imwrite(filename,img) numpy.ndaaray의 배열 img를 filename의 영상파일로 저장 retval cv2.namedWindow(winname,flag) winname을 갖는 윈도우를 생성한다. X cv2.imshow(winname, img) img를 winname에 표시한다. X cv2.witKey(delay) delay만큼(..

OpenCV 강좌 1 - Pycharm에서 OpenCV를 사용하자.

이제부터 본격적으로 OpenCV에 관해서 다루어 보겠습니다. Pycharm 설치에 관한 글들은 제 블로그가 아니라도 흔히 찾아보실 수 있습니다. 혹시 아직 pycharm을 설치하시지 않으신 분은 다른블로그에서 설치하고 오세요.(굳이 Pycharm이 아니라 일반 Python IDE에서 OpenCV를 사용하셔도 됩니다,) 혹시 OpenCV가 무엇인지 궁금하신 분들은 이전 포스팅 [Python/OpenCV 강좌] - OpenCV 강좌 0 - 강좌에 앞서을 참고하시면 되겠습니다. OpenCV 강좌 0 - 강좌에 앞서 오늘부터 OpenCV에 관해 공부하면서 복습 겸 블로그에 OpenCV에 관한 강좌를 올리게 되었습니다. 그래서 오늘은 OpenCV란 무엇이고, 강좌에 사용될 환경에 관해 드리겠습니다. OpenCV개..

OpenCV 강좌 0 - 강좌에 앞서

오늘부터 OpenCV에 관해 공부하면서 복습 겸 블로그에 OpenCV에 관한 강좌를 올리게 되었습니다. 그래서 오늘은 OpenCV란 무엇이고, 강좌에 사용될 환경에 관해 드리겠습니다. OpenCV개요 OpenCV(Open Source Computer Vision)는 영상처리, 컴퓨터 비전, 비디오 처리, 기계학습(흔히 인공지능이라고 알고 있는) 학습에 관한 라이브러리입니다. 위의 분야들은 사람이 눈을 통해 물체를 인지하는 것처럼 컴퓨터가 카메라를 통해 물체를 인지하는 방법에 대해 연구하는 분야입니다. 물론 OpenCV와 유사한 라이브러리도 있겠지만 제가 OpenCV를 사용하는 이유가 있습니다. OpenCV 장점 1. 오래되었다. OpenCV는 Intel에서 c언어로 개발된 IPL(Image Process..

반응형