유튜브 영상의 댓글로 코드 실행시 다음과 같은 에러가 난다고 알려주신 분이 있어서 확인해보았습니다. The convex hull indices are not monotonous, which can be in the case when the input contour contains self-intersections in function 'cv::convexityDefects' 유튜브 영상에서 설명하고 있는 다음 포스트의 코드에서 발생한 에러입니다. OpenCV를 사용하여 손 검출 및 인식하기(Hand Detection and Recognition using OpenCV)https://webnautes.tistory.com/1378 코드 작성시 테스트한 버전에서는 문제 없던 코드가 OpenCV 4.3.0에서..
OpenCV Python을 사용하여 stitching을 구현해보았습니다. 스티칭(stitching)은 같은 장소 또는 같은 객체를 촬영한 여러 장의 사진에서 공통적인 부분을 찾아 이미지를 하나로 연결하는 알고리즘입니다. 결과적으로 아래 이미지처럼 파노라마 이미지가 만들어 집니다. 포스트의 코드는 다음 두 곳의 코드를 기반으로 작성되었습니다. https://github.com/opencv/opencv/blob/master/samples/python/find_obj.py https://www.pyimagesearch.com/2016/01/11/opencv-panorama-stitching/ 영상에 코드 설명이 되어 있습니다. ''' https://github.com/opencv/opencv/blob/mast..
이번 영상에서는 윈도우즈 10에서 화면을 캡처한 결과를 입력으로 사용하여 OpenCV Python에서 탬플릿 매칭을 해보았습니다. # pip install pyautogui # pip install opencv-python import cv2 as cv import numpy as np import pyautogui cv.namedWindow("result"); cv.moveWindow("result", 0, 500); img_piece = cv.imread('dino.png', cv.IMREAD_COLOR) h,w = img_piece.shape[:2] while 1: pic = pyautogui.screenshot(region=(0, 0, 700, 500)) img_frame = np.array(pi..
NumPy 함수를 사용하다보면 axis 아규먼트를 사용하는 것이 있습니다. 어떤 의미일까 고민해보다가 적어봅니다. 최초 작성 2019. 11. 7 넘파이 모듈을 임포트 하고 크기 2 x 3 x 4인 넘파이 배열에 0~23까지 숫자를 채웁니다. >>> import numpy as np >>> a = np.arange(24).reshape(2,3,4) 변수 a를 출력해보면 다음처럼 배열이 출력됩니다. 바깥쪽 괄호 [] 부터 시작하여 괄호를 기준으로 차원이 2, 3, 4가 됩니다. 가장 바깥쪽 괄호안에 2개의 원소가 존재하며 >>> a array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]], [[12, 13, 14, 15], [16, 17, 18, 19], [20, ..
OpenCV Python API를 사용하여 카메라로부터 영상을 캡처하는 경우.. 프로그램 종료시 보이는 메시지입니다. 프로그램을 실행하는데 문제가 없어서 무시해도 되지만.. 다음처럼 해서 안보이도록 할 수 있습니다. 윈도우의 경우 해결방법입니다. 우분투의 경우에도 같은 문제가 발생하는지 아직 확인을 못해봤습니다. cap = cv.VideoCapture(0, cv.CAP_DSHOW) 찾아보니 카메라로부터 캡처시 사용할 벡엔드를 지정하는 거라고 하네요. 사용가능한 전체 벡엔드 목록은 아래 링크에서 확인할 수 있습니다. https://docs.opencv.org/master/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d
안녕하세요. 웹나우테스입니다. 그동안 "멈춤보단 천천히라도" 블로그에 방문해주신 여러분 덕에 "파이썬과 NumPy로 배우는 선형대수" 책을 출간하였습니다. 감사하는 마음으로 열 분에게 책을 나누어 드리려고 합니다. 아래 목차를 살펴보시고 책이 필요하신 분은 댓글에 이메일을 남겨주세요. 응원글을 남기셔도 좋습니다^^14일까지 글을 남겨주시면 10분을 추첨하여 책을 보내 드리겠습니다. 앞으로도 많은 응원 부탁드립니다. 감사합니다 : ) 책 목차입니다. Chapter 1 파이썬 1.1파이썬의 장단점 1.2파이썬 개발 환경 만들기 1.3데이터 타입 1.4제어문 1.5함수 1.6모듈 1.7입출력 Chapter 2 넘파이 2.1 넘파이 배열 2.2 넘파이 배열 생성 함수와 shape 변환 함수 2.3 인덱싱과 슬라..
파이썬에서 코드 실행시간을 측정하는 방법을 찾아 테스트해보았습니다. 파이썬 3.3+ 이상부터 perf_counter와 process_time를 사용할 수 있는데 차이점은 다음과 같습니다. perf_counter는 sleep 함수를 호출하여 대기한 시간을 포함하여 측정합니다. process_time는 실제로 연산하는데 걸린 시간만 측정합니다. import time def process1(): start = time.perf_counter() time.sleep(1) return (time.perf_counter()-start) def process2(): start = time.process_time() time.sleep(1) return (time.process_time()-start) print('u..
이미지에서 검출된 컨투어 영역에 특정 이미지를 텍스쳐로 넣는 예제입니다. 실행시키면 다음처럼 검출된 원 모양 컨투어 내부에 이미지 일부를 보여줍니다. 최초작성 2019. 7. 23 최종작성 2019. 8. 18 테스트에 사용한 이미지입니다. 전체 소스 코드입니다. Python import cv2 as cv import numpy as np # 마스크로 사용할 이미지와 텍스처로 사용할 이미지를 불러옵니다. img_input_mask = cv.imread('1.png') img_input_texture = cv.imread('2.png') # 마스크로 사용할 이미지를 바이너리 이미지로 변환합니다. img_gray = cv.cvtColor(img_input_mask, cv.COLOR_BGR2GRAY) # 그레..
라즈베리파이3에서 서보 모터를 제어하는 방법을 다룹니다. Python 언어와 C 언어로 다루는 방법을 설명하며 이후 웹캠과 초음파 센서를 얹어 사용할 예정입니다. 2019. 6. 3 (영상은 업로드 중입니다.) Python import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BOARD) GPIO.setup(12, GPIO.OUT) p = GPIO.PWM(12, 50) p.start(0) p.ChangeDutyCycle(3) sleep(1) p.ChangeDutyCycle(12) sleep(1) p.ChangeDutyCycle(7.5) sleep(1) while(1): val = float(raw_input("input(3~7.5~12) = ..
색깔있는 도형에 도형의 색 이름을 표시해주는 예제 코드입니다. 컨투어로 도형 내부 영역을 검출한 다음 평균으로 도형의 색을 계산합니다. 그리고 미리 지정해놓은 색들과 거리를 계산하여 가장 가까운 색으로 이름을 붙여줍니다. # 원본 코드 - https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/ # 수정 - webnautes import cv2 import numpy as np from scipy.spatial import distance as dist # Contour 영역 내에 텍스트 쓰기 # https://github.com/bsdnoobz/opencv-code/blob/master/shape-detect.cpp d..