본문 바로가기
728x90
반응형
SMALL

Python/Computer Vision21

[파이썬, Python] OpenCV - 영상의 변환 1. 영상의 변환 영상을 구성하는 픽셀의 배치 구조를 변경함으로 전체 영상의 모양을 바꾸는 작업 1-1. 이미지 이동(translate) 원래 있던 좌표에 이동시키려는 거리만큼 덧셈 x_new = x_old + d1 y_new = y_old + d2 이미지 변환 행렬(2*3 행렬) cv2.warpaffine(영상, 2*3 변환행렬, 결과이미지=None, 보간법알고리즘) [ 1 0 d1 0 1 d2 ] 결과: (0, 0) 이면 입력 영상과 크기가 같은 행렬을 반환 보간법알고리즘(가장자리를 어떻게 처리할 것인지) cv2.INTER_LINEAR: 기본값. 인접한 4개 픽셀 값에 거리 가중치 사용 속도가 빠르지만, 퀄리티가 떨어짐 cv2.INTER_NEAREST: 가장 가까운 픽셀 값을 사용 속도가 가장 빠르고.. 2023. 8. 29.
[파이썬, Python] OpenCV - 이미지 유사도 판단 1. 이미지 유사도 픽셀값의 분포가 서로 비슷하다면 유사한 이미지일 확률이 높음 cv2.compareHist(히스토그램1, 히스토그램2, 알고리즘) 알고리즘 cv2.HISTCMP_CORREL: 상관관계(1:완전 일치. -1:완전 불일치, 0: 무관계) cv2.HISTCMP_CHISQR: 카이제곱(0:완전 일치, 무한대: 완전 불일치) cv2.HISTCMP_INTERSECT: 교차(1:완전 일치, 0:완전 불일치) cv2.HISTCMP_BHATTACHARYYA: 밀도함수(0: 완전 일치, 1: 완전 불일치) ✅ img1과 유사도 판단 import cv2 import matplotlib.pyplot as plt import numpy as np img1 = cv2.imread('taekwonv1.jpg') .. 2023. 8. 27.
[파이썬, Python] OpenCV - 영상의 이진화 1. 영상의 이진화(Binarization) 픽셀을 검은색 또는 흰색과 같이 두 개의 값으로 나누는 작업 영상에서 의미있는 관심영역(ROI)과 비관심 영역으로 구분할 때 사용 배경과 객체를 나눌 때 영상의 이진화 연산을 할 때 나누는 특정값을 임계값이라고 함 cv2.threshold(영상, 임계값, 최대값, 플래그값) 플래그값 cv2.THRESH_BINARY: 픽셀값이 임계값을 넘으면 최대값으로 지정하고, 작거나 같으면 0으로 지정 예) 105로 임계값을 설정했을 때 105보다 큰 것은 최대값 으로 지정, 105보다 작으면 0 cv2.THRESH_BINARY_INV: cv2.THRESH_BINARY의 반대 cv2.THRESH_TRUNC: 픽셀 값이 임계값을 넘으면 value로 지정하고, 넘지 못하면 원래.. 2023. 8. 27.
[파이썬, Python] OpenCV - 관심영역(ROI) 1. 관심 영역(ROI, Region of Interest) 영상 내에서 관심이 있는 영역 cv2.selectROI(창이름, 영상, 중앙에서 시작할지에 대한 여부=False) 중앙에서 시작할지에 대한 여부가 True일 경우 선택한 ROI 중앙좌표로 계산 기본값은 False이고 왼쪽상단으로 좌표 계산 ✅ 다음 그림에서 해 부분을 ROI로 설정하여 합성하고 사각형 그리기(해가 떠있는 부분의 좌표값으로) import cv2 img = cv2.imread('sun.jpg') x = 180 y = 17 w = 125 h = 120 roi = img[y: y+h, x: x+w] img2 = roi.copy() # print(roi.shape) img[y:y+h, w+x:x+w+w] = roi cv2.rectangl.. 2023. 8. 25.
[파이썬, Python] OpenCV - 크로마키(cromakey) 1. inRange() 이미지에서 지정된 범위 안에 픽셀을 찾아냄 cv2.inRange(영상, min값, max값) ✅ inRange()를 활용하여 영상에서 녹색계열만 추출하기 import cv2 src = cv2.imread('candies.png') hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) ''' RGB 녹색계열 0 2023. 8. 25.
[파이썬, Python] OpenCV - 히스토그램과 영상 균등화, 정규화 1. 히스토그램(histogram) 영상의 픽셀값 분포를 그래프 형태로 표현 예) 그레이스케일 영상에서 밝기 정보에 해당하는 픽셀의 개수를 구하고 막대 그래프로 표현 cv2.calcHist(영상, 히스토그램을 구할 채널, None, 빈의 개수를 나타내는 리스트, 히스토그램 각 차원의 최소값과 최대값으로 구성된 리스트) 빈의 개수: 색상에 대한 개수(0 ~ 255) -> 관례적으로 256을 넣으면 됨 1-1. 영상과 히스토그램의 관계 밝은 영상이면 히스토그램이 전체적으로 오른쪽으로 치우쳐져 있음 어두운 영상이면 히스토그램이 전체적으로 왼쪽으로 치우쳐져 있음 명암비가 확실한 영상이면 히스토그램이 전체적으로 양쪽으로 분포 ✅ 흑백 영상의 히스토그램 import cv2 import matplotlib.pyplo.. 2023. 8. 25.
[파이썬, Python] OpenCV - 컬러 영상과 색상 정보 1. 컬러 영상과 색 컬러 영상은 3차원 배열 numpy.ndarray로 다룰 수 있음 img.shape: (h, w, 3) -> OpenCV에서는 BGR 색상 채널 분리 cv2.split(영상) 색상 채널 결합 cv2.merge(입력 영상 리스트 또는 튜플) import cv2 src = cv2.imread('candies.png', cv2.IMREAD_UNCHANGED) # BGRA로 가져올 수 있음(png파일이라 알파채널 포함) print('shape:', src.shape) print('dtype:', src.dtype) # b = src[:,:,0] # g = src[:,:,1] # r = src[:,:,2] b, g, r = cv2.split(src) cv2.imshow('src', src) .. 2023. 8. 24.
[파이썬, Python] OpenCV - 영상의 화소 처리 1. 영상의 화소처리 영상의 특정 좌표 픽셀값으 변경하여 출력 영상의 좌표 픽셀을 설정하는 모든 연산 1-1. 밝기 조절 영상을 전체적으로 밝게하거나 어둡게 하는 연산 cv2.add(첫번째 영상, 두번째 영상) cv2.subtract(첫번째 영상, 두번째 영상) cv2.multiply(첫번째 영상, 두번째 영상) cv2.divide(첫번째 영상, 두번째 영상) import cv2 src1 = cv2.imread('dog.bmp', cv2.IMREAD_GRAYSCALE) src2 = cv2.imread('dog.bmp') # src1, src2의 픽셀값에 100씩 더해줌 dst1 = cv2.add(src1, 100) print('dst1: ', dst1) print('---------------') dst.. 2023. 8. 24.
728x90
반응형
LIST