본문 바로가기

분류 전체보기

(21)
OpenCV를 이용해 이미지 출력하기 OpenCV는 래스터 그래픽스 이미지 파일 포맷을 쉽게 불러올 수 있는 별도의 함수를 제공합니다. 이 함수는 불러온 압축 해제된 이미지 데이터 구조에 필요한 메모리 할당과 같은 복잡한 작업을 처리하며, 파일 시그니처(File Signature)를 읽어 적절한 코덱을 결정합니다. OpenCV에서 이미지를 불러올 때는 확장자를 확인하는 방식이 아닌 파일 시그니처를 읽어 파일의 포맷을 분석합니다. 파일 시그니처는 파일 매직 넘버(File Magic Number)라고도 하며, 각 파일 형식마다 몇 개의 바이트가 지정되어 있습니다. 예를 들어, PNG 확장자의 경우 89 50 4E 47 … 형태로 파일 헤더에 포함되어 있습니다. 이미지 입력 함수는 운영체제의 코덱을 사용해 운영체제 별로 픽셀값이 다를 수 있습니다..
OpenCV을 이용해 카메라(웹캠) 출력 OpenCV를 하면서 기본이라고 할 수 있는 카메라 출력을 해볼 것입니다. 우선 완성 코드를 보면 메인코드 import cv2 capture = cv2.VideoCapture(0) capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640) capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) while cv2.waitKey(33) < 0: ret, frame = capture.read() cv2.imshow("VideoFrame", frame) capture.release() cv2.destroyAllWindows() 구문 코드 해석 capture = cv2.VideoCapture(0) 비디오 출력 클래스(cv2.VideoCapture)를 통해 내장 카메라 또는..
영상처리 및 기초 딥러닝 공부 방법 및 과정(개인적인 생각) 필자가 딥러닝부터 시작해서 영상처리를 공부하기까지의 공부방법을 소개하려고한다(광고x, 초급자 기준) 파이썬 및 C, C++ 우선 기본적으로 본인이 가고자 하는 기업에서 사용하는 언어를 마스터까진 아니더라도 코드 해석 및 기초적인 코드, 중견기업 이상을 원한다면 코딩테스트 준비까지 하는 것을 추천한다. 현재 기업에서 대부분 쓰이는 AI 관련 코딩언어는 대표적으로 파이썬 및 C종류이며 현재 BrainJS가 새로 생겨남에 따라 자바스크립트도 점점 성장세를 이루고 있다. 한줄요약: 한 언어를 기준으로 점점 스펙트럼을 넓히는 것을 추천(넓힐수록 반기는 기업들은 많을 것 같음) 넘파이 파이썬을 공부하게 되었다면 두번째로는 넘파이가 필수이다. 기초적인 shape 및 계산을 도와주는 numpy이다. 넘파이는 딥러닝 과..
MIL의 기본 구조 해석 MIL의 기본 구조에 대해서 구문설명을 하는 부분이다. 좀 더 빠른 이해를 위해서 전 게시물을 보길 바란다 처음 공부해 보는 영역이라 어려울 줄 알았는데 기본구조는 C,C++형식으로 되어있다. 우선 #include로 mil헤더파일을 포함시킨다. void main 구문에서 변수설정을 하는데 변수 타입은 long 형 포인터이고 필요한 모듈을 MIL_ID형으로 선언한다. Allocate 부분에서는 각 모듈을 할당하는데, 우선 최상의 모듈(Application)을 할당하고 프레임 그래버 보드(Solios)를 시스템으로 할당하고 보드가 여러개일 경우 M_DEV0, M_DEV1, ... M_DEVn 으로 한다. 일반적으로 VGA 카드에서 가까운 보드가 DEV0이다.(산업용 컴퓨터는 상이할 수 있음) MdigAllo..
MIL이란 무엇인가.(간략하게 경험해보기) 영상처리쪽 공부하는 사람들은 대부분 openCV나 YOLO를 대표적으로 알고 있을 것이다. 하지만 기업에서는 위의 라이브러리 및 프레임워크 뿐만 아니라 MIL, Cognex등 다양한 경험을 요구한다. 우리는 이 중 MIL에 대해 간단하게 알아보도록 할 것이다. Matrox의 라이브러리인 MIL도 OpenCV와 같이 영상처리를 가능하게 한다. OpenCV에서 여러줄에 걸쳐 사용할 수 있는 기능이 하나의 함수로 구현되어 있어서 한 줄로도 기능을 사용할 수 있고, 다양한 모듈들이 함수로 구혀되어 있어서 필요한 기능을 가져다 쓸 수 있다. 이 외에도 주기적으로 버그 및 새로운 기능들이 추가되고 관리되어 안정성이 높다고 본다. 하지만 편리하고 안정성이 좋은 만큼 유로로 라이센스를 구매하여 사용해야 한다. MIL ..
Kaggle대회 얼굴 키포인트 탐지(Facial Keypoints Detection)증강 본 작업은 코랩에서 진행하였고 5년 전 Kaggle에서 진행한 얼굴 키포인트 탐지의 사용자레퍼런스를 활용했습니다. test,train,idlookup 파일 및 api링크를 원하시는 분들은 댓글 남겨주시면 감사하겠습니다. (질문도 받아요) Module 임폴트 import numpy as np #넘파이 import pandas as pd #csv파일 받아들이기 위한 판다스 import seaborn as sns #그래프확인 시본 import matplotlib.pyplot as plt #matplot %matplotlib inline import cv2 #opencv from math import sin, cos, pi #sin,cos,pi import from keras.applications.mobile..
OpenCV 를 이용해 도형그리기(직선,원,타원) 오늘 해볼 것은 OpenCV를 이용해 도형을 그려볼 것입니다. 코랩을 이용하였습니다. 동심으로 돌아가 본인이 그림그리기 공부를 한다고 가정했을 때, 우선은 스케치북이 필요하겠죠 import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inline from PIL import Image import requests from io import BytesIO from google.colab.patches import cv2_imshow img = np.zeros((512,512,3), np.uint8) 그리고 plt로 출력결과를 보겠습니다. plt.imshow(img) plt.show() 직선의 파라미터설명 img 그림을 그릴 이미지 ..
opencv 이미지 출력시 색바뀜 오류 해결(기본) url로 다운받은 이미지를 cv2.imshow(코랩인 경우 from google.colab.patches import cv2_imshow) 할 경우 아래 사진과 같은 다른 색상이 나타나게 된다. 이 문제는 numpy형식인 원본은 matplot으로 보여줄 때 기본적으로 알고 있는RGB 형식으로 보여주는데 cv2에서 보여주는 형식은 BGR의 형식으로 거의 반전(?)되서 보인다. 이럴 경우 두가지의 방법이 있는데, 가장 많이 쓰이는 방법은 image = cv2.cvtColor(pic_arr, cv2.COLOR_RGB2BGR) 를 이용하면 된다. 코드를 설명하자면 cv2.cvtColor를 이용하여 원본사진인 pic_arr의 배열 RGB를 BGR형식으로 바꿔주는 구문이다. 그리고 image를 cv2_show(cv..