📌 Intro goprocam 라이브러리에 많은 함수들이 있는데 그 중 사용해봤던 함수들에 대해 정리하려고 한다. 📌 Method 함수들에 대해 설명하기 전에 아래 코드는 미리 삽입되어 있다는 가정하에 진행하도록 하겠다. 실행 환경은 아래 링크에서 만들어준 가상환경과 같다. https://krrong.tistory.com/entry/파이썬으로-GoPro-사용하기?category=986877 from goprocam import GoProCamera, constants gopro = GoProCamera.GoPro() 노트북을 고프로의 와이파이에 연결한 뒤 객체를 생성하면 아래 그림과 같이 연결되었다는 메시지가 나온다. OverView gopro.overview() overview()를 이용하여 현재 연결..
📌 Intro RecyclerView를 사용하면서 많은 양의 데이터를 보여주게 될 경우 원하는 아이템을 찾기 어려웠고, 특히나 개인 프로젝트를 진행하면서 많이 느꼈다. 이를 해결하기 위해 recyclerView에 검색 기능을 추가하였고 이 방법에 대해 정리하려고 한다. 📌 검색 기능 추가하기 검색 기능을 추가하기에 앞서 아래 글에서 사용한 코드를 가져와 사용하려고 한다. [Android] RecyclerView 사용하기 2 📌 Intro 이전에는 RecyclerView의 가장 기본적인 사용법에 대해 정리하였다. 하지만 RecyclerView는 다양한 방법으로 사용할 수 있다. 다양한 방법이 있겠지만 나는 개인적으로 진행하고 있는 토이 프 krrong.tistory.com 1. 어댑터 코드 수정(Simpl..
📌 Intro 이전에는 RecyclerView의 가장 기본적인 사용법에 대해 정리하였다. 하지만 RecyclerView는 다양한 방법으로 사용할 수 있다. 다양한 방법이 있겠지만 나는 개인적으로 진행하고 있는 토이 프로젝트에서 사용한 방법에 대해 정리하려고 한다. 이 글을 시작하기 전에 만약 RecyclerView의 개념과 사용방법을 알고 싶다면 혹은 모르는 사람이라면 이글을 참고하도록 하자. 📌 RecyclerView 사용방법 거두절미하고 바로 사용방법에 대해 알아보도록 하자. 1. 아이템 뷰 디자인 먼저 아이템 뷰를 어떻게 보여줄 것인가에 대해 정해야한다. 내가 보여주고 싶은 아이템 뷰는 다음과 같다. 왼쪽에 이미지 한 장, 오른쪽에 아이템의 이름과 설명을 각각 텍스트로 나타내려고 한다. 위 결과를 ..
📌 Intro 이전에 정리한 ListView는 항목이 갱신될 때마다 매번 아이템 뷰를 새로 구성해야 한다. 이것은 많은 데이터를 표시하는데 있어 성능 저하를 유발할 수 있다. 이를 해결하기 위해 나온 RecyclerView는 아이템을 표시하기 위해 뷰를 재활용하고, 이를 위해 뷰홀더(ViewHolder)패턴을 사용하도록 만들어져있다. ListView는 기본적으로 아이템들을 수직 방향으로만 나열할 수 있다. 그리고 아이템 뷰를 동적으로 구성하기 어려웠다. 이에 비해 RecyclerView는 수직, 수평 방향으로 아이템들이 나열되게 만들 수 있고, 아이템 뷰의 동적 구성을 용이하게 해주며 이를 런타임에 바꿀 수도 있다. 그러면 RecyclerView에 대해 더 자세히 알아보고 어떻게 사용할 수 있는지에 대해..
📌 Intro 이전에 정리한 이미지 받아오는 방법은 속도가 굉장히 느려 RecyclerView에 띄워줄 떄 버벅이는 현상을 보였다. 이 문제를 해결하기 위해 다른 방법을 찾아보았고 Glide에 대해 알게 되었다. 같이 알아보도록 하자. 이번에 정리할 내용은 라이브러리를 이용하여 이미지를 가져오는 방법이다. 널리 사용되고 있는 라이브러리는 Picasso/Glide/Fresco 총 3개이며, 내가 알아볼 것은 Glide다. Glide : 제일 많이 쓰이는 보편적인 것, 자료가 많음 Picasso : 옛날에 많이 사용되었던 것, Picasso와 Glide는 문법과 기능이 거의 비슷하다. Fresco : 페이스북이 개발한 이미지 라이브러리로, 사용법이 조금 어렵고 코드가 많아진다. 하지만 그만큼 섬세한 컨트롤이..
📌 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..
📌 Intro 이미지에서 선레이저로 된 직선을 찾는 방법을 알아보다 허프변환에 대해 알게 되었다. 허프변환은 이미지에서 모양을 찾는 방법으로 가장 잘 알려져있다. 이 방법을 이용하면 이미지의 형태를 찾거나, 누락되거나 깨진 영역을 복원할 수도 있다고 한다. 허프변환의 간단한 이론적인 내용과 사용 방법에 대해 정리해보려 한다. 📌 이론 하나의 점을 지나는 무수한 직선의 방적식은 y=mx+c로 표현할 수 있고, 이를 삼각함수를 통해 변형하면 r = 𝑥 cos𝜃 + 𝑦 sin𝜃 로 표현할 수 있다. 각 점(x,y)에 대해서 삼각함수를 이용하여 𝜃 값을 1 ~ 180까지 변화를 하면서 원점에서 (x,y)까지의 거리(r)을 구한다. 그러면 (𝜃, r)로 구성된 180개의 2차원 배열을 구할 수 있다. 세 점에 대..
📌 Intro 기능테스트를 위해 찍어놨던 영상에서 몇 장의 프레임을 가져와야 하는 일이 생겼다. 앞으로도 필요할 것 같은 작업이기 때문에 정리해두려고 한다. 📌 환경 openCV 라이브러리를 사용하고, 프레임을 추출할 영상은 아래 소스코드를 실행할 폴더 내에 있는 images폴더 아래 위치시켰다. 📌 소스코드 import cv2 # 비디오 출력 클래스(cv2.VideoCapture)를 통해 파일 경로의 동영상 파일을 불러옴 capture = cv2.VideoCapture('./images/side laser without tilting.MP4') count = 0 # 비디오가 성공적으로 열렸다면 while(capture.isOpened()): # 동영상 파일을 읽어옴 ret, image = capture..