본문 바로가기

OpenCV-Python

(20)
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 연산 시간 측정 https://wjh2307.tistory.com/11의 양방향 필터가 적용되는 시간을 구해보는데 적용해보겠습니다. OpenCV Python 필터링 - 잡음 제거 : 양방향(bilateral) 필터 잡음 제거 필터의 하나 기준 픽셀, 이웃 픽셀과의 거리, 픽셀 값의 차이를 함께 고려하여 블러링 정도 조정 가우시안 필터의 경우 에지 부분까지 blurring 하여 이미지의 형태조차 알아보기 힘든 wjh2307.tistory.com 방법 1 : cv2.TickMeter() - opencv 제공 import cv2 import numpy as np img = cv2.imread("imgs/Lenna.png") img = cv2.resize(img, dsize=(0, 0), fx=2, fy=2) tm = cv2...
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..
OpenCV Python 필터링 - 부드러운 영상 만들기 : blur, GaussianBlur 영상에서의 필터링이란 영상에서 필요한 정보만 통과시키고 원치 않는 정보를 걸러내는 작업을 의미합니다. 영상에서의 필터링은 2 종류로 나눌 수 있는데 1. 주파수 공간에서의 필터링 저주파 : 주변 영역과 색의 차이가 적은 부분(픽셀 값의 차이가 별로 없는 부분 : 대체로 면) 고주파 : 주변 영역과 색의 차이가 크게 나는 부분(픽셀 값의 차이가 큰 부분 : 대체로 모서리) 신호 및 시스템을 배우신 분이라면 저주파 필터, 고주파 필터에 대해 들어보셨을 텐데 저주파 필터의 경우 저주파 성분만을 통과시키는 것으로 이미지가 흐려지게 됩니다. 고주파 필터의 경우 고주파 성분만을 통과시키는 것으로 이미지의 선 같은 부분들이 강조됩니다. 2. 공간적 필터링 영상의 픽셀 값을 직접 이용하는 필터링 마스크(작은 크기의 행..
OpenCV Python 자르기, 붙이기 이미지 자르기는 영상, 이미지에서 특정 영역(관심 가는 부분)만 잘라내는 연산입니다. 이미지를 자르는 것을 흔히 '관심 영역 설정', RoI(Region of Interest)라고 부릅니다. 필요한 특정 영역만 잘라내어 원하는 작업을 한다면 불필요한 연산이 줄어들 것입니다. 강아지 부분만 잘라내 보겠습니다. 이미지를 자르는 것은 픽셀 값을 넣어주어야 합니다. 해당 부분에 대한 픽셀 값입니다. 자신이 원하는 부분에 픽셀 값이 몇인지 모르겠다 하시는 분들은 그림판으로 그림을 여시고 마우스를 올리시면 마우스가 위치한 곳의 픽셀 값을 아실 수 있습니다. import cv2 dog = cv2.imread("imgs/dog.jpg") output = dog[60:410, 260:520] cv2.imshow("img..