2022/03 22

[Python]OpenCV 마우스 이벤트/클릭(Mouse Event, Click) 콜백함수

목차 파이썬 마우스 클릭시 함수 구현 파이썬 OpenCV에서 이미지를 띄워 놓고 마우스 클릭 시 특정 함수가 동작되게 하기 위해서는 콜백 함수를 사용해야 합니다. 콜백 함수는 이벤트(Event)가 발생할 시 특정 함수를 시행하는 함수 입니다. 간단히 설명을 드리면 파이썬(Python) 함수는 라인 별로 구현을 하고 완료 합니다. 하지만 마우스 입력(Mouse Click)이나 키보드 입력(Keyboard input)시에 어떤 동작을 구현하길 원한다면 누군가는 코드가 진행되는 와중에도 event가 발생하는 지 모니터링(Monitoring)하고 있어야 합니다. 그리고 이벤트 발생 시 특정 동작을 이행하는데 이것이 콜백 함수의 역할 입니다. 아래는 OpenCV 라이브러리에서 마우스(Mouse) 이벤트 발생 시 ..

[Python]OpenCV 그림 영역 선택, 모자이크 처리하기(Image, Mosaic, Blur)

목차 파이썬 OpenCV Image File 모자이크 처리 이번 포스트는 파이썬 OpenCV의 Blur 함수를 사용해서 모자이크(Mosaic)처리 하는 방법에 대해 알아보겠습니다. 이번 포스트를 수행하기 위해서 아래 단계를 수행 합니다. 이미지 파일불러오기 모자이크할 영역 선택하기 선택 영역 blur함수로 모자이크하기 원본 영역에 blur 모자이크된 영역 덧붙이기 변경된 이미지 불러오기 1~2번 단계는 selectROI로 구현 합니다. selectROI 함수 사용법에 대해서는 아래 포스트에서 진행하였으니 궁금하시면 아래 포스트 참조하시면 됩니다. https://scribblinganything.tistory.com/496 [Python]OpenCV 이미지 마우스 클릭 좌표(위치) 값 확인(selectRO..

[과학상식] 도플러 효과란? 공식 (Doppler effect)

목차 도플러 효과란?(Doppler effect) 도플러 효과란 오스트리아 물리학자 크리스티안 도플러(Christian Doppler)가 1842년 발견한 현상을 얘기 합니다. 그림과 같이 음원(Sound source)나 광원(Light source)가 고정된 위치에서 소리나 빛을 낼 경우 그림처럼 일정한(Same frequency) 파장(wave)이 발생합니다. 만일 음원(Sound source)가 그림처럼 이동하는 경우 음원과 Sound의 파장이 같은 방향일 경우 상대 속도가 줄어 들어 짧은 주기(High frequency or Low period)의 파장이 발생합니다. 반대로 음원과 Sound의 파장 진행 방향이 반대인 경우 (위그림에서는 왼쪽) 상대 속도가 커져서 파장의 주기가 넓어지고 주파수는 ..

여러가지공부 2022.03.26

[Python] 키보드(keyboard) 이벤트(event) 값 읽기

목차 파이썬 키보드 값 클릭 확인 함수 is_pressed 파이썬(Python)의 키보드 값을 입력하면 입력에 대응해서 뭔가를 처리하고 싶을 때가 있습니다. 이러한 이벤트(event)를 감지하기 위해 필요한 라이브러리가 keyboard 입니다. 만일 keyboard 라이브러리가 없다면 pip install keyboard로 먼저 설치를 하시길 바랍니다. 키보드를 통해 입력한 값이 맞는지를 확인하는 함수는 is_pressed 입니다. 아래 예제 코드를 보시면 쉽게 이해할 수 있습니다. 예제 코드>> import keyboard while True: if keyboard.is_pressed("1"): print("hello") break 4번 라인: 키보드 1버튼을 클릭하면 if 문 실행 결과>> 코드 실행..

[Python]OpenCV 이미지 마우스 클릭 좌표(위치) 값 확인(selectROI 함수)

목차 OpenCV 이미지 마우스 클릭 좌표 값 확인 파이썬 OpenCV의 함수 중에 selectROI 함수는 이미지(image) 파일이나 그림 파일을 읽었을 때 마우스로 원하는 이미지를 클릭하면 해당 위치(Location) 값을 return해 줍니다. selectROI 함수 사용법은 아래와 같습니다. Syntax>> cv2.selectROI(윈도우창 이름, 소스 이미지명, 격자형태 선택) 윈도우창 이름은 imshow를 사용했을 때 처럼 selectROI도 이미지 창을 만들어 주는데 이미지 창(window)의 이름을 설정합니다. 소스 이미지명은 imread로 읽은 이미지 파일(image file)의 return 값을 저장한 객체 명을 입력 합니다. 격자 형태는 마우스를 클릭하면 사각형이 만들어 지는데 Fa..

[주파수] Octave 계산 방법(Calculation), 파이썬으로 구현하기

목차 Octave 계산 방법(Calculation) 주파수(Frequency)에서 이동 속도(Velocity)를 결정할 때 Octave/min 과 같은 단위를 볼 수 있습니다. 그리고 주파수(Frequency) 분석에서 Octave 단위로 분석하는 것을 볼 수 있습니다. 음악에서는 1/3 Octave로 분석을 종종 합니다. Octave란 간단하게 얘기해서 기준 주파수에서 2배되는 주파수를 1Octave 단위로 부릅니다. 수식은 아래와 같습니다. f1은 기준이되는 주파수이고 f2는 다음 주파수 값입니다. 만일 f1과 f2가 두배이면 log2/log2가되어 1octave가 됩니다. Octave 파이썬으로 구현하기 파이썬으로 Octave를 구하는 식을 만들기 위해서는 log를 사용하는 함수 numpy log ..

파이썬(Python) 2022.03.24

[Python]OpenCV 색변환 함수 cvtColor 사용 방법(Gray, HSV, RGB, LAB 비교)

목차 파이썬 OpenCV cvtColor 사용 방법 파이썬 openCV에서 제공하는 함수 중에 cvtColor 함수가 있습니다. 함수 가운데 C는 대문자로 작성하셔야 합니다. 그렇지 않으면 아래와 같은 에러 메세지가 발생 합니다. 에러 메세지>> Traceback (most recent call last): File "d:\Python\test02\test06.py", line 5, in modified_img = cv2.cvtcolor(img, cv2.COLOR_BGR2GRAY ) AttributeError: module 'cv2' has no attribute 'cvtcolor' 파이썬의 openCV의 imread 읽은 이미지(image)파일은 BGR(Blue, Green, Red) 형태로 읽습니다...

[Python]OpenCV 이미지 픽셀로 변경하여 수정하기(Numpy array)

목차 OpenCV 이미지 픽셀(Pixel)값 확인하기 우리가 사용하는 컴퓨터의 이미지 파일은 아시다 시피 디지털(Digital)로 되어 있습니다. 화면으로 보이는 값은 실상 픽셀이라는 작은 단위를 BGR(Blue, Green, Red)의 비율로 원하는 색상을 표현해주는 것입니다. 파이썬의 OpenCV 라이브러리를 사용해서 이미지 파일을 읽으면 출력 값은 Numpy(넘파이) array 형태로 숫자로 나옵니다. 즉 픽셀 위치에 따라 배열로 구성되고 구성 값은 BGR값이 되는 것입니다. 아래 예제는 이미지 파일을 읽고 읽은 파일의 종류와 값을 확이하는 작업입니다. 이미지는 무료이미지 사이트에서 포르쉐 자동차 사진을 다운 받아서 사용하였습니다. 예제 코드>> import cv2 img=cv2.imread("po..

[Python]OpenCV 동영상 저장하기, 코덱 종류와 사용방법(Video, fourcc, codec)

목차 파이썬 코덱 종류와 사용방법 파이썬 OpenCV에서 비디오 파일을 다루다 보면 코덱(Codec) 사용을 종종하게 됩니다. 코덱(Codec)이란 영상 파일의 Encode와 Decode를 처리함으로써 우리가 화면에서 보거나 파일로 저장하는 작업을 도와 줍니다. 이번 포스트에서는 코덱(Codec)을 사용해서 영상 파일을 저장하는 코드를 작성할 것입니다. 주로 사용하는 코덱은 아래와 같습니다. MJPG DIVX H264 H264의 경우 웹브라우져(Web browser) 용 비디오 코덱으로 많이 사용 됩니다. 그 외 각종 코덱은 텍스트의 링크를 통해 확인하실 수 있습니다. 코덱을 Python에서 사용하는 방법은 간단하게 아래와 같은 방법으로 진행하시면 됩니다. codec = "DIVX" fourcc = cv..

[Python] OpenCV 동영상 파일 재생하기 (화면 사이즈 변경)

목차 OpenCV 동영상 파일 재생하기 앞서 포스트에서 비디오(Video) 파일(mp4)의 영상 정보를 가져오는 방법에 대해 알아보 았습니다. 이번 포스트는 영상 파일의 사이즈 정보를 가져와서 크기를 변경하고 재생하는 코드를 작성하고 설명하겠습니다. 순서는 아래와 같습니다. 동영상 불러오기(VideoCapture) 동영상 정보가져오기(cv2.get) 동영상 읽기(cv2.read) 프레임(Frame) 크기 변경하기(cv2.resize) 프레임(Frame) 출력 하기(imshow) 코드는 위 순서대로 진행 되고 각 순서에서 사용되는 파이썬 openCV 함수(Function)은 괄호안에 넣었습니다. OpenCV 동영상 파일 재생하기 실습 예제 코드>> import cv2 Vid = cv2.VideoCaptur..