[OpenCV] OpenCV-Python으로 배우는 영상 처리 및 응용 - 6장 연습문제 풀이
·
Programming/Python
1. 그레이 스케일(gray-scale) 이미지가 의미하는 것이 무엇인지 설명하시오.디지털 영상처리에서 보통 단일채널의 영상을 그레이 스케일(gray-scale) 영상이라고 부른다. 하나의 화소값은 0~255의 값을 가지는데 0은 검은색을, 255는 흰색을 의미한다. 이렇게 화소값이 회색의 비율 정도로 표현되고, 0~255값을 가지는 화소들이 모여서 구성된 것이 영상이 때문에 그레이 스케일 영상이라 한다.(교재 226p) 2. 화소의 밝기와 화소값에 대해서 설명하시오.하나의 화소값은 0~255의 값을 가지는데 0은 검은색을, 255는 흰색을 의미한다.(교재 226p) 3. 두 개의 영상을 합성하는 방법을 두 가지 이상 기술하시오.두 개의 영상을 합하면 영상 합성을 할 수 있다.OpenCV를 이용하여 영상..
[OpenCV] OpenCV-Python으로 배우는 영상 처리 및 응용 - 5장 연습문제 풀이
·
Programming/Python
1. OpenCV의 채널 처리 함수에 대해 아는 대로 기술하시오.컬러 영상은 파란색, 녹색, 빨간색의 각기 독립적인 2창원 정보를 합쳐 놓은 배열로 정의가 가능하며, 이를 표현하기 위해 채널이라는 개념이 도입됐다. 일련의 3개 원소로 하나의 컬러 화소가 구성되며, numpy에서는 화소 단위로 순회한다. 이 컬러 배열을 분리하면 각 채널을 단일채널 행렬로 구성할 수 있으며, 세부적인 영상처리에 이용될 수 있다. (교재 162p) cv2의 채널 처리 함수로는 cv2.merge()와 cv2.split()이 있으며, 각 함수는 아래와 같다. cv2.merge(mv[,dst]) → dst▪ 설명: 여러 개의 단일채널 배열을 다채널 배열로 합성한다.인수 설명mv합성될 입력 혹은 배열 벡터, 합성될 단일채널 배열들의..
[OpenCV] OpenCV-Python으로 배우는 영상 처리 및 응용 - 4장 연습문제 풀이
·
Programming/Python
1. 콜백 함수란 무엇인가?콜백 함수는 일반적으로 이벤트를 처리하기 위한 함수로, 개발자가 시스템 함수를 직접 호출하는 방식이 아니라, 어떤 이벤트가 발생하거나 특정 시점에 도달했을 때 시스템이 개발자가 등록한 함수를 호출하는 방식이다. (교재 96p) 2. 윈도우를 지정하는 cv2.namedWindow() 함수의 두 번째 인수(flags)에 대한 옵션은 여러가지가 있다. 그 중에서 cv2.WINDOW_NORMAL와 cv2.WINDOW_AUTOSIZE간의 차이를 설명하시오.두 번째 인수 flags는 인도우의 크기 조정과 관련된 파라미터이다.cv2.WINDOW_NORMAL은 0의 값을 가지며, 윈도우 크기 조정이 가능하다.cv2.WINDOW_AUTOSIZE는 1의 값을 가지며, 표시된 행렬의 크기에 맞춰 ..
[Jupyter extension] Jupyter 확장프로그램 개발 환경 구축
·
Programming/Python
공식 문서를 따라 환경을 구축 해보자. Conda 설치 및 가상환경 활성화Conda 설치파일 레포지토리에서 설치 파일을 다운로드 한다.내 환경은 우분투 22.04이기 때문에 최신 리눅스 버전을 curl로 땡겨왔다.curl --output anaconda.sh https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh sha256sum로 파일 해시를 따서 다운로드 페이지에서 제공하는 해시와 비교해 검증할 수 있다.sha256sum anaconda.sh 해시가 일치한다면 무사히 파일이 다운로드 된 것이고 다운로드 된 sh 파일을 실행시키면 conda 설치가 시작된다.설치가 끝난 뒤에 conda init을 하면 필요한 설정이 ~/.bashrc ..
Next.js 프로젝트에 GA4 붙이기(사용자 속성, 잠재고객, UTM)
·
Programming/FE
극초기 스타텁 초기 멤버로 일하면서 벌써 4번째 랜딩 리뉴얼을 하고 있다. 첫 랜딩은 되는대로, 두번째도 되는대로, 세번째는 부스 직전에 3일만에 만들고 이번에는 개발하는데 일주일 정도 걸린 것 같다. 기존 랜딩페이지는 홈, 회사 소개, 제품 소개로 구성되어 있었고 이번에는 간결하게 원페이지에 제품 소개만 담는 방향으로 가기로 했다. 랜딩은 규모가 작아서 매번 다양한 UI 라이브러리를 써보고 있다. tailwindcss, chakra-ui를 거쳐 이번엔 panda css와 framer-motion의 조합으로 진행했다. 보통 Next.js를 기본으로 사용했는데 한번은 Svelt를 썼다가 팀원들의 항의에 다시 Next.js로 돌아왔다. 소기업에서 괜히 기술 스택 늘리지 맙시다.   개발이 끝났다면 이제 KP..
다형성: Polymorphism
·
Programming/Java
다형성 다형성이라는 말은 이번에 처음 들어봤지만 생각보다 이해하기 쉬웠다. 짧게 말하면 어떤 객체를 다른 객체로 선언할 수 있다는 것이다. Student bonbon = new Student(); Person bonbon = new Student(); 위처럼 객체를 Person 타입으로 선언했지만 Student로 초기화할 수 있다. 대박~ 그런데 다 되는 것은 아니다. ㄱ- 위키백과의 다형성 정의는 이렇다. 프로그램 언어의 다형성(多形性, polymorphism; 폴리모피즘)은 그 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 프로그램 언어의 각 요소들(상수, 변수, 식, 오브젝트, 함수, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다. 반댓말은 단형성(mono..
[OpenCV] 채널 별 배열 구조 + 이미지 투명화
·
Programming/Python
계기 무작정 OpenCV 박치기를 해보니 openCV의 이미지파일이 numpy 배열이라는 것을 알게 되었다. 하지만 알아봤자 대체 rgba가 어떤 식으로 펼쳐져 있는지, 파이썬에서 어떻게 배열을 다뤄야하는지 몰라 난항을 겪고 있다. 일단 뭘 하는지 알아내기 위해 각 채널 별 배열부터 알아보자. OpenCV의 채널 openCV에서 이미지 파일을 읽을 때 cv2.imread() 함수를 사용한다. 첫 번째 인자는 파일의 주소이고 두 번째 인자는 flag다. flag에 따라 이미지를 불러 올 때 채널 값이 바뀐다. 채널은 불러온 이미지에.shape를 하여 얻은 배열의 3번 째 값이다. cv2.IMREAD_COLOR 혹은 1 : 이미지를 Color로 읽음. 투명 무시. Default. cv2.IMREAD_GRAY..
[troubleshooting] yarn berry와 깃헙 액션 사용시 주의점 (Error: Cannot find module '.yarn/releases/yarn-3.6.4.cjs')
·
Programming/FE
최근 개발 중이던 Next.js 프로젝트에서 핵심 로직을 떼서 패키지화 하기로 했다. 아직 패키지 제작 경험이 없기도 해서 Next.js보다 그냥 React.js를 사용해 클라이언트 컴포넌트, 훅 정도로 제공할 생각이다. 그 중에서도 핵심 로직은 서버에서 돌리고 싶긴 하지만 d3와 함께 사용하면서 클라이언트에서만 돌릴 수 있는 로직과 서버로 숨기고 싶은 로직이 끈적끈적하게 섞여 있는 상태라 차차 고민할 문제로 미뤄 놓았다. 나중엔 만들어둔 패키지를 또 서버 패키지와 클라이언트 패키지로 분리할 같기도.. 몇 개월 동안 몇 개 프로젝트를 하면서 새로운 프론트 프레임워크나 라이브러리 도입이 없었기 때문에 이번엔 좀 핫하다는 vite와 yarn berry(pnp), chakra.ui를 사용하기로 했다. 기존에는..
[백준 1655] 가운데를 말해요, 우선순위 큐: Priority Queue, Heap. feat.JAVA
·
Programming/Algorithm
문제소개[문제]정수를 입력할 때마다 그때까지 입력된 정수 중 중앙값을 출력하는 문제다.우선순위 큐(Priority Queue)를 활용하여 풀어야 한다. 자료구조에 대한 이해가 덜 된 상태에서 문제를 푸느라 뻘짓을 많이 했지만 그만큼 배운게 많다. 자료구조 간단 정리자료구조반환데이터스택(Stack)제일 나중에 넣은 데이터(LIFO)큐(Queue)제일 처음 넣은 데이터(FIFO)우선순위 큐(Priority Queue)가장 우선순위가 높은 데이터 스택과 큐는 입력과 출력을 다루는 것이 간단해보이지만 우선순위 큐는 그렇지 않다. 우선순위와 관계없이 값을 입력하지만 우선순위가 가장 높은 값을 출력해야 한다. 따라서 값을 입력할 때 기존의 값들과 우선순위를 비교하는 연산이 필요하다. 이때 힙을 이용한다. 힙은 트..
[백준 12865] 평범한 배낭, 동적 계획법:Dynamic Programming
·
Programming/Algorithm
문제 소개[문제]동적 계획법(Dynamic Programming) 문제다. 무게와 가치가 있는 물건을 한도가 있는 배낭(knapsack)에 넣는 것은 대표적인 동적 계획법 알고리즘 문제이다. 사실 문제 풀이법을 찾아보기 전까지는 동적 계획법을 몰라서 아래처럼 무게 별 가치로 정렬 후 더하는 방식으로 짰다가 바로 틀렸다. (ㅜㅜ) 그리디 알고리즘은 이 경우에 알맞지 않다.더보기import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;class Stuff { int weight = 0; int..