일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- error
- 채보
- paramiko
- pandas
- LIST
- Python
- Linux
- C
- C#
- C++
- 프로그래머스
- mysql
- VS Code
- YOLO
- label
- windows forms
- JSON
- ubuntu
- 핑거스타일
- 명령어
- pip
- 기타 연주
- Selenium
- SSH
- pytorch
- Docker
- Numpy
- Visual Studio
- 오류
- OpenCV
- Today
- Total
목록OpenCV (9)
기계는 거짓말하지 않는다
cv2를 이용할 때 imread, imwrite 한글(utf-8) 인식 문제가 있다. imread, imwrite 함수를 아래와 같이 선언하고 사용한다. import os import cv2 import numpy as np def imread(file_path): npArr = np.fromfile(file_path, dtype=np.uint8) return cv2.imdecode(npArr, cv2.IMREAD_COLOR) def imwrite(file_path, img, params=None): try: ext = os.path.splitext(file_path)[1] result, n = cv2.imencode(ext, img, params) if result: with open(file_path..
OpenCV를 이용하여 영상을 read 한 후 확인 시, 회전되어 있는 경우가 있다. 영상의 메타데이터를 확인하면 (ffmpeg 사용) rotate에 회전된 각도가 있다. OpenCV 4.5 버전 미만에서, 원본 영상을 회전시켜 수정한 영상일 경우 OpenCV로 프레임을 읽으면 반영이 되지않고 원본 그대로 출력되는 현상이 있다. 4.5 버전 미만이라도 메타데이터를 읽어 다시 회전시켜 줘도 되지만 4.5 버전 이상을 설치하면 정상적으로 출력된다.
from PIL import Image import cv2 img = cv2.imread("img.png") # 299 x 507 h, w, c = img.shape # height, width, channel print(h, w, c) img = Image.open("img.png") w, h = img.size # wdith, height print(w, h)
Python의 OpenCV를 이용하여 웹캠을 실시간으로 읽어 올 수 있다. import cv2 import numpy as np # 0 = default camera, 1 or more = additional camera capture = cv2.VideoCapture(0) # 3 = height, 4 = width 크기 설정 capture.set(3, 720) capture.set(4, 1080) while True: # ret = True or False, frame = numpy array ret, frame = capture.read() cv2.imshow('test', frame) k = cv2.waitKey(1) # ord('q'): input q exit if k == 27: # esc br..
Python의 openCV를 사용할 때, 원, 사각형 등 이미지에 무엇인가를 나타내면 이런 오류를 보는 경우가 있다. OpenCV(4.5.2) :-1: error: (-5:Bad argument) in function 'rectangle' > Overload resolution failed: > - Can't parse 'pt1'. Sequence item with index 0 has a wrong type ... point는 정수가 되어야 하고 이럴 경우 매개변수에 float 형식이 들어갈 수 있으므로 타입을 꼭 확인한다.
OpenCV를 이용한 이미지 편집(감마, 블러, 패딩)의 예 640 x 360 (16:9)로 resize한 이미지 이용 # 이미지 밝기, 감마 aurora = cv2.imread("aurora.jpg") aurora = cv2.resize(aurora, (640, 360)) g = 2.2 table = np.array([((i / 255.0) ** (1/g)) * 255 for i in np.arange(0, 256)]).astype("uint8") # g를 변경하면 변화 gamma_img = cv2.LUT(aurora, table) # 미리 가중치를 계산해 각 화소가 계산 후 어떤 결과가 되는지 참조만 하는 테이블을 만듦. 연산량 줄임 val = 50 # randint(10, 50) array = np..
OpenCV를 이용한 이미지 편집(붙여넣기, 회전, 반전 등)의 예 640 x 360 (16:9)로 resize한 이미지 이용 import cv2 import numpy as np img = cv2.imread("aurora.jpg") img2 = cv2.imread("rain.jpg") img = cv2.resize(img, (640, 360)) img2 = cv2.resize(img2, (640, 360)) # 붙여넣기 img = cv2.rectangle(img, (200, 100), (350, 300), (0, 255, 0), 2) img2 = cv2.resize(img2, (150, 200)) # 좌표 x, y 350-200, 300-100 img[100:300, 200:350] = img2 # ..
이미지에 도형을 그리거나 텍스트를 입력할 때 기본적으로 사용하는 방법 # 직선 img = cv2.line(img, (100, 100), (500, 500), (255, 255, 0), 3) # point1, point2, 색상, 굵기 cv2.imshow("", img) cv2.waitKey() # 사각형 img = cv2.rectangle(img, (400, 400), (520, 640), (0, 255, 0), 3) # 왼쪽 위, 오른쪽 밑, 색상, 굵기(-1은 모두 채움) cv2.imshow("", img) cv2.waitKey() # 원 img = cv2.circle(img, (600, 300), 100, (0, 100, 255), 3) # 중심점, 반지름, 색상 cv2.imshow("", img)..