임베디드/opencv(18)
-
histogram이 중요한 이유
펜이 나열 되어있는 사진에 대한 히스토그램이 왼쪽에 표시되어 있다. 오른쪽은 펜의 나열을 달리 한 것이다. 중요한 것은 히스토그램은 불변한다는 특징이 있다. 이러한 특징을 이용해서 학습을 시키는 데 유용하게 사용할 수 있다 [출처] https://www.inflearn.com/course/opencv-lecture/lecture/6764 예를 들어 가로 세로를 번갈아 bin으로 두면서 histogram을 추출한다. 535와 같은 히스토그램 2개를 저장한 후 어떠한 번호가 들어왔을 때, 저장되어 있는 히스토그램을 비교하면서 추출할 수 있다
2019.10.20 -
영상 이진화를 하는 이유
영상 이진화는 grayscale 영상과는 다르다. 영상 이진화는 최적의 threshold를 찾아서 흑과 백 두 가지 픽셀 값으로 바꾸는 것이다. 영상 데이터는 변수가 많기 때문에 하나의 알고리즘으로 확실한 threshold 값을 찾는 것은 매우 어려운 일이다. 따라서 여러 알고리즘을 대입해 최적의 이미지를 뽑아내는 것이 일반적인 방법이다 영상 이진화를 하는 이유는 영상의 사물 혹은 특징을 추출하는 데 있고, 사전에 이진화 처리를 거쳐서 비전 처리로 이어지게 된다. 예를 들어 차량 번호판 인식과 같은 경우는 뚜렷한 숫자의 나열값들이 필요하기에 이용된다. 이와 더불어 머신비전, 의료비전에서도 사용된다
2019.10.20 -
C++ openCV 이미지, 비디오 읽기
이미지를 읽는 방법은 아래 코드와 같다. 반드시 파일은 프로젝트와 같은 디렉토리에 있어야 한다 Mat img = imread("ss.jpg"); // 두번째 인자에 0을 넣으면 grayscale 채널 하나로 읽음 namedWindow("img", 0); // make window, 두번째 인자가 0이면 사이즈가 조절 가능 1이면 불가능 imshow("img", img); // window 이름을 써준다 waitKey(0); // ms 단위로 대기한다. 0이면 무한대기 콘솔창이 아닌 img 창을 활성화하고 key를 눌러야 한다 //file load VideoCapture capture(".\\video.avi"); Mat frame; //check if( !capture.isOpened() ) { prin..
2019.10.20 -
opencv 4.1.1 사용하기
개발 환경 1. vs2017 vc15 2. opencv 4.1.1 https://sourceforge.net/projects/opencvlibrary/files/4.1.1/opencv-4.1.1-vc14_vc15.exe/download 소스포지에 접속해서 opencv 실행파일을 받아서 압축을 푼다. 그리고 폴더를 C:\로 옮기도록 한다 콘솔 응용프로그램을 생성한다 Debug 64비트 모드로 바꾼 후 외부 라이브러리를 추가하도록 한다 Debug Release 모두 적용하기 위해 모든 구성으로 바꾼다 추가해야될 파일은 컴파일에 필요한 include, lib 디렉토리 위치와 실행에서 쓰일 dll 위치를 추가해야 한다 그리고 아래 링크의 예제 코드를 실행시켜보자 https://www.cvlecture.marea..
2019.10.18 -
matplotlib RGB 변환을 해야하는 이유
개발환경 : conda Spyder opencv에서 이미지를 읽어들일 때 BGR 순으로 저장하게 된다. 하지만 matplotlib에서는 RGB로 다르게 저장한다. 따라서 반드시 변환함수를 사용해야만 이미지가 원본 그대로 표시되게 된다 # -*- coding: utf-8 -*- import cv2 from matplotlib import pyplot as plt imageFile = './lena.png' imgBGR = cv2.imread(imageFile) plt.axis('off') # imgRGB = cv2.cvtColor(imgBGR, cv2.COLOR_BGR2RGB) 주석처리 plt.imshow(imgBGR) 이미지 색이 다르게 출력됨을 알 수 있다. 변환코드 주석을 지우고 다시 실행하면 올바르..
2019.08.29 -
opencv-python 영상파일 읽기 및 화면 표시
개발환경 : conda Spyder # -*- coding: utf-8 -*- import cv2 imageFile = './lena.png' img = cv2.imread(imageFile)# IMREAD_COLOR 속성으로 동작 img2 = cv2.imread(imageFile, 0) # IMREAD_GRAYSCALE 속성으로 동작 cv2.imshow('Lena color', img) cv2.imshow('Lena grayscale', img2) cv2.waitKey() # 키 입력까지 무한 대기 cv2.destroyAllWindows()
2019.08.29