opencv
ubuntu 에서 opencv 로 h264 codec 비디오 파일 만들기
ubuntu 에서 opencv 로 h264 codec 비디오 파일 만들기
2021.09.01개발환경 -fast api -docker -python3.9 -postgres 를 사용하였습니다. 참고하시길 바랍니다. 이글을 쓰게된 이유는 python에서 openvcv 를 사용해 영상을 N x M 으로 자른뒤 각각의 html5 video 태그에 뿌려주는 걸 개발하다가 생긴 문제에 대해서 해결과정을 적으려고 합니다. html5 video 태그의 표준 코덱은 H 2 6 4 코덱입니다. cv2.VideoWriter_fourcc(*"H264") 하지만 docker build 이후 영상을 자르면 다음과 같은 에러를 내뱉으며 영상을 자를수 없다고 합니다. https://stackoverflow.com/questions/33134985/cv2-videowriter-will-not-write-file-using-f..
적응형 이진화
적응형 이진화
2020.11.12전체 이미지에 하나의 임계값을 사용하는 threshold함수는 이미지 일부가 어두운 경에는 하나의 임계값을 사용하여 이진화 할때 좋은 결과를 얻기 힘듭니다. 적응형 이진화는 이미지를 작은 영역으로 나누어 각 영역별로 다른 임계값을 사용하는 방법입니다. 적응형 이진화를 위해 OpenCV 에서는 adaptive Threshold함수를 제공합니다. 그림에 적응형 이진화를 적용해보면 어두운 부분과 조명이 알맞은 부분에 모두 좋은 이진화 결과를 보여주는 것을 볼수 있습니다. #include #include using namespace cv; using namespace std; int main() { // 이미지를 읽어옵니다. Mat img_color; img_color = imread("test.jpg", IM..
opencv 전역 임계값 사용
opencv 전역 임계값 사용
2020.11.10'이진화 thresholding'는 그레이 스케일 이미지를 바이너리 이미지로 변환 하는방법입니다. 임계값 threshold를 기준으로 그레이 스케일 이미지를 흰색 영역과 검은색 영역으로 분리합니다. 예를 들어, 임계값이 127일 경우 입력으로 사용한 이미지에서 픽셀값이 127 이하이면 검은색(0)으로 하고, 픽셀값이 127보다 크면 흰색(255)로 하여 바이너리 이미지를 생성합니다. OpenCV 에서는 이미지 전체에 하나의 임계값을 사용하는 threshold함수와 이미지를 작은 영역으로 나누어 각 영역별로 다른 임계값을 사용하는 adaptiveTreshold 함수를 제공합니다. threshold함수는 이미지 전체에 하나의 임계값을 사용하여 이진화를 합니다. 왼쪽 그라데이션 이미지는 검은색(0)에서 흰색(..
opencv 이미지 채널 분리 및 합치기
opencv 이미지 채널 분리 및 합치기
2020.11.10컬러 이미지를 B, G, R 채널로 분리한 후, 순서를 R, G, B로 바꾸어 컬러 이미지를 생성해보겠습니다. Color창에 보이는 이미지를 보면 Red와 Blue의 위치가 바뀐것을 볼 수 있습니다. R, G, B 창에 보여지는 채널별 이미지는 해당 채널의 픽셀값이 255인 영역만 흰색으로 보입니다. import cv2 as cv import os dt_path = os.path.join(os.path.expanduser('~'),'Desktop') os.chdir(dt_path) img_color = cv.imread('test.jpg', cv.IMREAD_COLOR) # 컬러 이미지를 채널별로 분리합니다. img_b, img_g, img_r = cv.split(img_color) # 채널별 이미지를 ..
opencv 픽셀에 접근하기
opencv 픽셀에 접근하기
2020.11.10import cv2 as cv import os import numpy as np dt_path = os.path.join(os.path.expanduser('~'),'Desktop') os.chdir(dt_path) img_color = cv.imread("test.jpg", cv.IMREAD_COLOR) # 이미지의 높이와 너비를 가져옵니다. height, width = img_color.shape[:2] print(img_color.shape) # gray scale image 를 저장할 numpy array 를 생성합니다. img_gray = np.zeros((height, width), np.uint8) # for 문을 돌면서 (x, y)에 있는 픽셀을 하나씩 접근합니다. for y in ran..