OpenCV Python 영상에서의 연산(+밝기 조절, 차이 확인)
영상에서의 연산이란 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산을 의미합니다. opencv에서 색은 0~255로 표현되는데요 그렇기 때문에 OpenCV에선 위 그림과 같이 포화 연산(saturate 연산)이란 걸 합니다. 포화 연산은 연산 결과가 0보다 작으면 0으로, 255보다 크면 255로 설정하는 연산입니다. 그러면 연산 관련 함수에 대해 알아보겠습니다. 덧셈 연산 : cv2.add(src1, src2[, dst[, mask[, dtype]]]) [] : 생략 가능 import cv2 import numpy as np src1 = cv2.imread('imgs/Lenna.png') dst1 = cv2.add(src1, (200, 50, 50, 0)) # B..
OpenCV Python 선, 도형, 문자열 출력
직선 : cv2.line(img, pt1, pt2, color [, thickness [, lineType [, shift]]]) img : 그림 그릴 영상 pt1, pt2 : 직선의 시작점, 직선의 끝점 (영상 벗어난 좌표도 괜찮습니다.) color : 선 색상 또는 밝기(B, G, R) 튜플 또는 정수 값 thickness : 선 두께(기본 값 : 1) lineType : 선 타입(기본 값 : cv2.LINE_8) cv2.LINE_4 cv2.LINE_8 cv2.LINE_AA : 부드러움 shift : 그리기 좌표 값 축소비율(기본 값 : 0) 사각형 : cv2.rectangle(img, pt1, pt2, color [, thickness [, lineType [, shift]]]) cv2.rectan..
OpenCV Python 필터링 - 잡음 제거 : 양방향(bilateral) 필터
잡음 제거 필터의 하나 기준 픽셀, 이웃 픽셀과의 거리, 픽셀 값의 차이를 함께 고려하여 블러링 정도 조정 가우시안 필터의 경우 에지 부분까지 blurring 하여 이미지의 형태조차 알아보기 힘든 경우가 많지만 양방향 필터의 경우 에지가 아닌 부분에서만 blurring 하여 물체의 윤곽이 어느 정도 보존이 됩니다. cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace [, dst [, borderType]]) [] : 생략 가능 import cv2 img = cv2.imread("imgs/Lenna.png") img = cv2.resize(img, dsize=(0, 0), fx=2, fy=2) dst = cv2.bilateralFilter(img, -1, 10, 10..
OpenCV Python 이미지 영상 확대 축소
cv2.resize(src, dsize [, dst [, fx [, fy [, interpolation]]]]) [] : 생략 가능 import cv2 img = cv2.imread("imgs/Lenna.png") # 이미지 불러오기 # height, width, channel = img.shape # print(f'width : {width}, height : {height}, channel : {channel}') dst = cv2.resize(img, dsize=(0, 0), fx=1.5, fy=1.5) dst2 = cv2.resize(img, dsize=(500, 500)) dst3 = cv2.resize(img, dsize=(840, 720)) cv2.imshow("Lenna", img) cv2..
OpenCV Python 필터링 - 날카로운 영상 만들기: 언샤프(unsharp) 필터
날카롭지 않은 영상(unsharp), 부드러워진 영상을 이용하여 날카로운 영상을 생성하는 필터입니다. 언샤프 마스크 필터링의 연산과정입니다. 흑백 영상 import cv2 import numpy as np img = cv2.imread("imgs/Lenna.png", cv2.IMREAD_GRAYSCALE) filter_img = cv2.GaussianBlur(img, (0, 0), 2) dst = cv2.addWeighted(img, 2, filter_img, -1, 0) #dst = np.clip(2.0*img - filter_img, 0, 255).astype(np.uint8) cv2.imshow("Lenna", img) cv2.imshow("dst", dst) cv2.waitKey() cv2.des..