전체 글

Computer Vision/OpenCV

[openCV] 특정 색상 영역 추출하기

📌 Intro BGR to HSV로의 색상변경, 비디오에서 특정 색상을 가진 물체 추출하는 방법에 대해 알아보자. 사용하는 라이브러리는 openCV이며 함수는 cv2.cvtColor(), cv2.inRange() 다. 📌 BGR to HSV 색상은 보통 R(Red), G(Green), B(Blue)로 이루어져 있으며 각각 0~255사이의 숫자를 가져 특정한 색을 만들어낼 수 있다. HSV는 Hue(색상), Saturation(채도), Value(명도)로 각각 0~179, 0~255, 0~255 범위의 값을 가진다. HSV 중 H에 해당하는 색상을 이용하여 이미지에서 원하는 색상을 가진 물체를 추출할 수 있다. HSV를 사용하기 위해서는 BGR 색상 값을 이용하여 바꿔줄 수 있다. import cv2 im..

Computer Vision/OpenCV

[openCV] 허프 변환

📌 Intro 이미지에서 선레이저로 된 직선을 찾는 방법을 알아보다 허프변환에 대해 알게 되었다. 허프변환은 이미지에서 모양을 찾는 방법으로 가장 잘 알려져있다. 이 방법을 이용하면 이미지의 형태를 찾거나, 누락되거나 깨진 영역을 복원할 수도 있다고 한다. 허프변환의 간단한 이론적인 내용과 사용 방법에 대해 정리해보려 한다. 📌 이론 하나의 점을 지나는 무수한 직선의 방적식은 y=mx+c로 표현할 수 있고, 이를 삼각함수를 통해 변형하면 r = 𝑥 cos𝜃 + 𝑦 sin𝜃 로 표현할 수 있다. 각 점(x,y)에 대해서 삼각함수를 이용하여 𝜃 값을 1 ~ 180까지 변화를 하면서 원점에서 (x,y)까지의 거리(r)을 구한다. 그러면 (𝜃, r)로 구성된 180개의 2차원 배열을 구할 수 있다. 세 점에 대..

Computer Vision/OpenCV

[openCV] 영상에서 프레임 추출하기

📌 Intro 기능테스트를 위해 찍어놨던 영상에서 몇 장의 프레임을 가져와야 하는 일이 생겼다. 앞으로도 필요할 것 같은 작업이기 때문에 정리해두려고 한다. 📌 환경 openCV 라이브러리를 사용하고, 프레임을 추출할 영상은 아래 소스코드를 실행할 폴더 내에 있는 images폴더 아래 위치시켰다. 📌 소스코드 import cv2 # 비디오 출력 클래스(cv2.VideoCapture)를 통해 파일 경로의 동영상 파일을 불러옴 capture = cv2.VideoCapture('./images/side laser without tilting.MP4') count = 0 # 비디오가 성공적으로 열렸다면 while(capture.isOpened()): # 동영상 파일을 읽어옴 ret, image = capture..

Computer Vision/OpenCV

[openCV] 캐스케이드 분류기

📌 Intro 이번에는 OpenCV의 얼굴 검출 기능에 대해 정리할 것이다. 이 기능은 비올라와 존스라는 사람이 발표한 부스팅기반의 캐스케이드 분류기 알고리즘을 기반으로 만들어졌다. 이 알고리즘은 특히 얼굴 검출에 적용될 때 속도와 정확도가 좋다고 알려져있다. 📌 유사 하르 필터(Haar-like Filter) 먼저 알아야 할 정보로 유사 하르 필터가 있다. 유사 하르 필터란 흑백 사각형이 서로 붙어 있는 형태로 구성된 필터다. 유사 하르 필터 형태에서 흰색 영역 픽셀 값은 모두 더하고, 검은색 영역 픽셀 값은 모두 빼서 하나의 특징 값을 얻을 수 있다. 사람의 정면 얼굴 형태가 전형적으로 밝은 영역(이마, 미간, 볼 등)과 어두운 영역(눈썹, 입술 등)이 정해져 있기 때문에 유사 하르 필터로 구한 특징..

Computer Vision/GoProCam

[goprocam] 파이썬으로 GoPro 사용하기

📌 Intro 프로젝트를 진행하기 위해 GoPro를 사용하게 되었고, python을 이용하여 GoPro를 다루는 기본적인 방법에 대해 정리하려고 한다. open gopro, goprocam 등 다양한 라이브러리가 있었는데 일단 기본적이더라도 사용법이 나와있는 goprocam라이브러리를 선택했다. 📌 가상 환경 생성 다음과 같은 명령어를 사용하여 고프로를 사용할 가상환경을 먼저 만들어주고 실행시키자. conda create -n gopro python=3.6 activate gopro 다음 명령어를 이용하여 goprocam패키지를 다운 받는다. pip install goprocam 📌 고프로 wifi 연결 내가 가지고 있는 고프로는 GoPro HERO7 BLACK모델이다. 이 모델 기준으로 [기본 설정] ..

(구)Android/Java

[Android] 이미지 URL로 받아오기

📌 Intro 사용할 이미지가 적으면 프로젝트 안에 넣어서 사용해도 되지만 이미지가 많을 때는 모두 프로젝트에 넣고 실행하면 어플리케이션의 용량이 커질 것 같아 다른 방법을 생각해봐야했다. 좋은 방법을 모색하던 도중 URL을 이용하여 이미지를 받아오는 방법을 찾았고 이에 대해 정리하려 한다. 📌 권한 추가 URL을 사용한다는 것은 인터넷을 사용한다는 것이다. 즉 어플리케이션이 인터넷을 사용한다는 뜻이고 이를 위해서는 따로 권한을 추가해주어야 한다. 아래 코드를 Manifest.xml파일 application 밖에 추가하자. 추가해준 Manifest.xml 파일은 아래와 같을 것이다. 📌 코드 package com.example.imagetest; import androidx.appcompat.app.Ap..

(구)Android/Java

[Android] Log 사용하기

📌 Intro 개발을 하다 보면 값을 받아올 때 혹은 넘겨줄 때 알맞는 값을 잘 넘겨주고 받아오고 있는지 등을 확인하고 싶을 때가 있다.(확인해야만 할 때도 있다.) 그 때 사용하는 것이 Log인데, 사용법은 어렵지 않지만 종류가 다양해서 간단하게 정리해두려고 한다. 📌 Log 종류 확인할 수 있는 Log의 종류는 5가지가 있고, 각각 특징이 있다. 하나씩 살펴보도록 하자. 1. Log.d() debug의 약자로 debug용 로그다. Logcat에서는 검정색, 파란색으로 출력된다. 2. Log.e() error의 약자로 error용 로그다. exception이 발생하거나 error가 발생할 경우 system에서 Log.e()를 사용한다. 눈에 잘 띄도록 빨간색으로 출력 된다. 3. Log.w() warn..

(구)Android/Java

[Android] Txt 파일 읽어 사용하기

📌 Intro 개인적으로 프로젝트를 진행하다가 안드로이드 스튜디오 안에 저장해둔 txt파일을 읽어야 하는 일이 생겼고, 나중에 또 검색하지 않고 내 블로그에서 편하게 찾을 수 있도록 내용을 정리해두려고 한다. 📌 Txt 파일 읽기 1. 폴더 추가하기 먼저 안드로이드 스튜디오 안에 txt파일을 저장하기 위해서는 새로운 폴더를 만들어줘야 한다. [res] → [raw] 폴더를 새로 만들어주고, 하위에 내가 읽어오려는 텍스트 파일을 추가해주자. 예시로 hello.txt파일을 만들어 추가해보았다. 2. 코드 try { InputStream in = getResources().openRawResource(R.raw.hello); byte[] b = new byte[in.available()]; in.read(b)..

Krrong
노는게 제일 좋아