최신포스트
-
OpenCV + Python 이미지 기하학적 변환
안녕하세요. 코딩산책입니다.이미지 처리와 컴퓨터 비전 분야에서 기하학적 변환(Geometric Transformation)은 가장 기본적이면서도 중요한 기술 중 하나입니다. 이미지를 이동하거나 회전시키고, 크기를 조정하거나 왜곡을 보정하는 작업은 다양한 응용 분야에서 필수적으로 사용됩니다. 예를 들어, 스마트폰으로 찍은 문서를 바로잡거나, 자율주행 차량에서 도로 이미지를 분석하는 데 기하학적 변환이 사용됩니다.OpenCV의 주요 함수인 cv2.warpAffine, cv2.getRotationMatrix2D, cv2.warpPerspective, cv2.getPerspectiveTransform을 중심으로 이미지 기하학적 변환의 기본 이론과 실제 사용법을 다룹니다. 또한, 초보자도 따라 할 수 있도록 각 ..
2025.02.25
-
[Ubuntu] IP 주소로 device name 검색하는 방법 (feat. python)
안녕하세요. 코딩산책입니다.Ubuntu를 사용하다 보면 네트워크 설정 문제를 해결하거나 특정 디바이스 정보를 확인하기 위해 자신의 IP 주소와 네트워크 디바이스 이름을 확인해야 할 때가 있습니다. IP Scanner 앱을 검색하면 설치하여 사용하는 애플리케이션이 있지만, 이 글에서는 터미널 명령어와 Python을 사용해 IP 주소와 디바이스 이름을 확인하는 방법을 알아보겠습니다.1. ip 명령어를 사용하여 확인Ubuntu에서 IP 주소와 네트워크 디바이스 이름을 확인하는 가장 일반적인 방법은 ip 명령어를 사용하는 것입니다.ip addr이 명령을 실행하면, 시스템의 네트워크 인터페이스와 관련된 정보가 출력됩니다. 주요 내용은 다음과 같습니다:인터페이스 이름: lo, eth0, wlan0 등 네트워크 디바..
2025.01.16
-
[Ubuntu] Hostname 변경하기
안녕하세요. 코딩산책입니다.Ubuntu에서 시스템의 Hostname(호스트 이름)을 변경하는 방법을 단계별로 설명합니다. Hostname은 네트워크에서 컴퓨터를 식별하는 데 사용되며, 서버 관리나 로컬 네트워크 설정 시 중요합니다. 1. 현재 Hostname 확인현재 설정된 Hostname을 확인하려면 다음 명령어를 터미널에 입력하세요:hostnamectl출력 예시: Static hostname: old-hostname Icon name: computer-vm Chassis: vm Machine ID: xxxxxxxxxxxxxxx Boot ID: xxxxxxxxxxxxxxxOperating System: Ubuntu 22.04.1 LTS K..
2025.01.16
-
2024년을 돌아보며, 2025년을 계획하다: 개발자의 여정
안녕하세요. 코딩산책입니다. 2024년이 저물어 가는 지금, 저는 지난 한 해 동안 무엇을 이뤘고, 무엇을 시도했지만 실패했으며, 어디에서 부족했는지 되돌아보게 됩니다. 2023년 10월 회사의 갑작스러운 파산이라는 도전에 직면하면서, 저는 마음을 다잡기 위해 블로그를 시작했습니다. 개발자로서 10년의 경력을 돌아보며, 제가 겪었던 경험과 배운 지식을 나누는 것이 큰 의미가 있을 것이라고 생각했습니다.처음에는 하루에 하나의 글을 쓰겠다는 야심 찬 목표를 세웠지만, 현실은 그렇게 간단하지 않았습니다. 최근에는 두 달 동안 글을 쓰지 못하기도 했습니다. 이제 2025년이 다가오며, 조금 더 현실적인 목표를 가지고 다시 도전하려고 합니다. 2024년 나의 프로젝트올해 제가 시도했던 일들은 아래와 같습니다.1..
2024.12.28
-
[OpenCV + GCP] ImportError: libGL.so.1: cannot open shared object file: No such file or directory
안녕하세요. 코딩산책입니다. GCP에서 Inference가 가능한 API서버를 만들던 도중 나타난 오류를 기억하기 위해 작성해 둔다.에러메시지ImportError: libGL.so.1: cannot open shared object file: No such file or directory개발환경클라우드 플랫폼 : Google Cloud Egine - VM Instance머신유형 : e2-smallCPU 플랫폼 : Intel Broadwell운영체제 : Ubuntu 22.04아키텍처 : x86/64메모리 : 1GB디스크 용량 : 20GB최초 디스크의 용량을 10GB로 하여 생성하였으나 pytorch, openvino 등등 여러 패키지가 설치되며 캐시의 부족과 용량의 부족으로 인해 디스크의 용량을 20GB..
2024.11.14
-
[시놀로지] 시스템 용량 부족 문제점 해결 방안
안녕하세요. 코딩산책입니다.시놀로지 나스를 사용하다보면 시스템을 구성하는 용량(root 용량)과 저장을 위한 스토리지 용량이 별개로 되어 있습니다. 저의 경우에는 시놀로지에서 클라우드 배포 전에 API 서버나 웹서버의 테스트를 구동하느라 여러 패키지를 설치하는 경우가 있습니다. 그러면서 시스템 용량이 0GB가되는 현상이 일어났고 이를 해결하기 위해 몇 가지의 확인을 거쳐 원래대로 용량을 복원시킬 수 있었습니다. 시스템 용량이 0GB가 되면 안되는 이유는 시놀로지 설치 패키지의 업데이트가 안되며 최악의 상황에서는 DSM 로그인이 안되는 현상도 나타날 수 있습니다. SSH 접속1. 나스의 SSH로 접속한다2. sudo su - 를 입력하여 root 계정으로 접속한다.3. cd / 을 입력한다.4. df -h..
2024.11.12
인기포스트
-
OpenCV + Python 이미지 기하학적 변환
안녕하세요. 코딩산책입니다.이미지 처리와 컴퓨터 비전 분야에서 기하학적 변환(Geometric Transformation)은 가장 기본적이면서도 중요한 기술 중 하나입니다. 이미지를 이동하거나 회전시키고, 크기를 조정하거나 왜곡을 보정하는 작업은 다양한 응용 분야에서 필수적으로 사용됩니다. 예를 들어, 스마트폰으로 찍은 문서를 바로잡거나, 자율주행 차량에서 도로 이미지를 분석하는 데 기하학적 변환이 사용됩니다.OpenCV의 주요 함수인 cv2.warpAffine, cv2.getRotationMatrix2D, cv2.warpPerspective, cv2.getPerspectiveTransform을 중심으로 이미지 기하학적 변환의 기본 이론과 실제 사용법을 다룹니다. 또한, 초보자도 따라 할 수 있도록 각 ..
2025.02.25
-
[Ubuntu] IP 주소로 device name 검색하는 방법 (feat. python)
안녕하세요. 코딩산책입니다.Ubuntu를 사용하다 보면 네트워크 설정 문제를 해결하거나 특정 디바이스 정보를 확인하기 위해 자신의 IP 주소와 네트워크 디바이스 이름을 확인해야 할 때가 있습니다. IP Scanner 앱을 검색하면 설치하여 사용하는 애플리케이션이 있지만, 이 글에서는 터미널 명령어와 Python을 사용해 IP 주소와 디바이스 이름을 확인하는 방법을 알아보겠습니다.1. ip 명령어를 사용하여 확인Ubuntu에서 IP 주소와 네트워크 디바이스 이름을 확인하는 가장 일반적인 방법은 ip 명령어를 사용하는 것입니다.ip addr이 명령을 실행하면, 시스템의 네트워크 인터페이스와 관련된 정보가 출력됩니다. 주요 내용은 다음과 같습니다:인터페이스 이름: lo, eth0, wlan0 등 네트워크 디바..
2025.01.16
-
[Ubuntu] Hostname 변경하기
안녕하세요. 코딩산책입니다.Ubuntu에서 시스템의 Hostname(호스트 이름)을 변경하는 방법을 단계별로 설명합니다. Hostname은 네트워크에서 컴퓨터를 식별하는 데 사용되며, 서버 관리나 로컬 네트워크 설정 시 중요합니다. 1. 현재 Hostname 확인현재 설정된 Hostname을 확인하려면 다음 명령어를 터미널에 입력하세요:hostnamectl출력 예시: Static hostname: old-hostname Icon name: computer-vm Chassis: vm Machine ID: xxxxxxxxxxxxxxx Boot ID: xxxxxxxxxxxxxxxOperating System: Ubuntu 22.04.1 LTS K..
2025.01.16
-
2024년을 돌아보며, 2025년을 계획하다: 개발자의 여정
안녕하세요. 코딩산책입니다. 2024년이 저물어 가는 지금, 저는 지난 한 해 동안 무엇을 이뤘고, 무엇을 시도했지만 실패했으며, 어디에서 부족했는지 되돌아보게 됩니다. 2023년 10월 회사의 갑작스러운 파산이라는 도전에 직면하면서, 저는 마음을 다잡기 위해 블로그를 시작했습니다. 개발자로서 10년의 경력을 돌아보며, 제가 겪었던 경험과 배운 지식을 나누는 것이 큰 의미가 있을 것이라고 생각했습니다.처음에는 하루에 하나의 글을 쓰겠다는 야심 찬 목표를 세웠지만, 현실은 그렇게 간단하지 않았습니다. 최근에는 두 달 동안 글을 쓰지 못하기도 했습니다. 이제 2025년이 다가오며, 조금 더 현실적인 목표를 가지고 다시 도전하려고 합니다. 2024년 나의 프로젝트올해 제가 시도했던 일들은 아래와 같습니다.1..
2024.12.28
OpenCV + Python 초급 강의
-
OpenCV + Python 이미지 기하학적 변환
안녕하세요. 코딩산책입니다.이미지 처리와 컴퓨터 비전 분야에서 기하학적 변환(Geometric Transformation)은 가장 기본적이면서도 중요한 기술 중 하나입니다. 이미지를 이동하거나 회전시키고, 크기를 조정하거나 왜곡을 보정하는 작업은 다양한 응용 분야에서 필수적으로 사용됩니다. 예를 들어, 스마트폰으로 찍은 문서를 바로잡거나, 자율주행 차량에서 도로 이미지를 분석하는 데 기하학적 변환이 사용됩니다.OpenCV의 주요 함수인 cv2.warpAffine, cv2.getRotationMatrix2D, cv2.warpPerspective, cv2.getPerspectiveTransform을 중심으로 이미지 기하학적 변환의 기본 이론과 실제 사용법을 다룹니다. 또한, 초보자도 따라 할 수 있도록 각 ..
2025.02.25
-
OpenCV + Python 외곽선 검출과 레이블링(labeling) - 2
안녕하세요. 코딩산책입니다.이 글에서는 지난 글에 이어서 작성 해보도록 하겠습니다. OpenCV + Python 외곽선 검출과 레이블링(labeling) - 1안녕하세요. 코딩산책입니다.컴퓨터 비전 분야에서 외곽선 검출과 레이블링은 이미지 분석과 객체 인식에 있어 핵심적인 기술입니다. 이 두 가지 기술을 사용하면 이미지에서 객체의 경계와codingwalks.com 6.외곽선 검출의 실제 응용: 객체 추적외곽선 검출 기술은 단순한 경계선 탐지에서 나아가, 다양한 실제 응용 사례에 사용됩니다. 그중에서도 대표적인 분야가 객체 추적(Object Tracking)입니다. 외곽선을 이용하여 물체를 감지하고, 해당 물체가 움직이는 동안 그 궤적을 추적하는 방식은 비전 시스템에서 흔히 쓰입니다.객체 추적의 기본 개념..
2024.10.30
-
OpenCV + Python 외곽선 검출과 레이블링(labeling) - 1
안녕하세요. 코딩산책입니다.컴퓨터 비전 분야에서 외곽선 검출과 레이블링은 이미지 분석과 객체 인식에 있어 핵심적인 기술입니다. 이 두 가지 기술을 사용하면 이미지에서 객체의 경계와 형태를 추출하고, 각 객체를 구분하여 분석할 수 있습니다. 특히, OpenCV와 Python을 활용한 외곽선 검출은 다양한 산업과 연구 분야에서 폭넓게 사용되고 있으며, 이를 통해 자동화된 시스템이 보다 정확하고 효율적으로 동작할 수 있습니다.이 글에서는 cv2.findContours, cv2.approxPolyDP, cv2.convexHull, cv2.moments 등의 OpenCV 함수들을 통해 외곽선 검출과 레이블링 기법을 자세히 설명합니다. 또한, 실제 활용 사례와 이러한 기법의 한계 및 개선점을 다루어, 외곽선 검출 ..
2024.10.30
-
OpenCV + Python 모폴로지 (Morphology)
안녕하세요. 코딩산책입니다.이미지 처리는 다양한 분야에서 중요한 역할을 하고 있으며, 그중에서도 모폴로지 연산과 워터쉐드 알고리즘은 이미지의 구조적 특성을 분석하고 객체를 분리하는 데 매우 유용한 기법입니다. 모폴로지 연산은 객체의 형상을 조정하고, 객체 간 경계를 구분하며, 이미지 노이즈를 제거하는 데 사용됩니다. 이 글에서는 침식(Erosion), 팽창(Dilation), 열기(Opening), 닫기(Closing), 그레이디언트(Gradient)와 같은 모폴로지 연산과 워터쉐드 알고리즘의 이론적 배경과 함께 Python과 OpenCV를 이용한 실제 코드 예제를 다룹니다. 이 연산들은 특히 동전 분류나 지문 융선 검출과 같은 응용 사례에서 큰 효과를 발휘합니다. 1. 모폴로지(Morphology) 란..
2024.10.25
-
OpenCV + Python 이진화 (임계처리)
안녕하세요. 코딩산책입니다.이미지 이진화(Thresholding)는 이미지 처리에서 중요한 기술 중 하나로, 픽셀 값을 흑백 두 가지 값으로 변환하여 불필요한 정보를 제거하고 핵심 부분만 추출하는 데 사용됩니다. 이진화는 노이즈 제거, 객체 검출, 경계 추출 등 다양한 문제 해결에 유용합니다. 이번 글에서는 OpenCV를 활용해 Python에서 다양한 이진화 기법을 사용하는 방법을 살펴보겠습니다. 기본적인 cv2.threshold 함수부터 Otsu 이진화, 적응형 이진화 기법까지, 실제 예제를 통해 알아보겠습니다. 1. 기본 이진화 (cv2.threshold)cv2.threshold는 이미지 이진화의 기본 함수로, 고정된 임계값을 사용해 픽셀 값을 흑백으로 변환합니다. 이 함수는 다양한 파라미터와 이진화..
2024.10.22
-
OpenCV + Python 엣지(Edge) 검출과 허프(Hough) 변환
안녕하세요. 코딩산책입니다.객체의 경계를 정확히 검출하는 작업은 다양한 응용 분야에서 활용되며, 이미지 이해의 핵심 과정 중 하나입니다. 이때 경계를 감지하는 기술 중 대표적인 방법이 엣지 검출이며, 이후 감지된 경계를 통해 기하학적 모양을 찾는 데 사용되는 기법이 허프 변환입니다. 엣지 검출은 이미지의 픽셀 강도의 급격한 변화, 즉 객체와 배경 사이의 경계나 내부 구조의 변화를 찾아내는 과정입니다. Sobel, Laplacian, Canny와 같은 다양한 엣지 검출 기법들이 사용되며, 각각의 방법은 이미지의 특성에 따라 적합한 결과를 제공합니다. 엣지 검출을 통해 검출된 경계는 이후의 분석을 위한 중요한 기반이 됩니다. 허프 변환(Hough Transform)은 이러한 엣지 정보를 바탕으로 직선이나 원..
2024.10.21
-
OpenCV + Python 필터와 컨볼루션
안녕하세요. 코딩산책입니다.이번 글에서는 OpenCV와 Python을 사용하여 다양한 이미지 필터링 기법에 대해 알아보겠습니다. 필터링의 기본적인 이론, 수학적 표현, 그리고 실제 코드를 통해 필터링 기법을 이해하고 구현해 보겠습니다. 특히 샤프닝과 언샤프 마스킹에 대해서도 다룰 예정입니다. 1. 이미지 필터링이미지 필터링은 이미지의 픽셀 값을 조작하여 특징을 강조하거나 노이즈를 줄이는 작업입니다. 필터는 이미지를 부드럽게 하거나, 더 선명하게 만들거나, 특정 특징을 추출하는 데 사용됩니다. 아래는 필터링 연산에서 중요한 컨볼루션의 원리를 설명합니다. 컨볼루션은 작은 필터(커널)를 사용하여 이미지의 각 픽셀을 변환하는 연산입니다.이미지 필터링은 이미지를 수정하거나 향상시키는 이미지 처리의 기본 연산입니다..
2024.10.14
-
OpenCV + Python 웹캠을 활용한 색상 인식 및 그리기 (실습)
안녕하세요. 코딩산책입니다.다음은 웹캠을 활용한 색상 인식 및 그리기 실습입니다. 해당 미니프로젝트는 OpenCV와 Python을 사용하여 색상을 감지하고, 해당 색상이 감지된 위치에 포인트를 그려 그림을 생성하는 간단한 프로그램을 만드는 과정입니다. 이론적인 설명과 Python 코드를 통해 단계별로 프로젝트를 진행해 보겠습니다. 1. 프로젝트 개요우리가 만들 프로젝트는 웹캠을 통해 특정 색상을 감지하고, 해당 색상의 위치에 점을 찍어 그림을 그리는 프로그램입니다. 이를 위해 다음과 같은 작업이 필요합니다.웹캠을 통해 실시간 영상 수집: 웹캠에서 실시간으로 프레임을 받아오는 작업.색상 감지: 이미지에서 특정 색상을 감지하고 해당 위치를 추적.점 그리기: 감지된 색상의 위치에 점을 그려 그림을 그리는 작업..
2024.10.11
-
OpenCV + Python 색 공간 변환과 색상 검출
안녕하세요. 코딩산책입니다.이번 글에서는 색 공간(Color Space)에 대해서, 특히 많이 사용되는 RGB, CMYK, HSV, YUV, CIELab 색 공간을 알아보도록 하겠습니다. 추가적으로 OpenCV 라이브러리를 활용하여 이미지에서 특정 색상을 검출하는 방법을 소개하겠습니다. 그리고 각각의 색 공간이 색상 검출에 적합한 이유와 그 적용 분야를 설명하고, 실제 사용 사례도 함께 다뤄보겠습니다. 이를 위해 이미지 파일을 특정 색 공간으로 변환하고, 트랙바를 사용해 실시간으로 색상 범위를 조정하여 원하는 색상을 검출해 보겠습니다. 또한 Python 코드를 통해 쉽게 구현할 수 있는 예제를 단계별로 설명하겠습니다. 1. 색 공간(Color Space)과 변환색 공간은 색을 수학적으로 표현하고, 색상..
2024.10.10
-
OpenCV + Python 이미지 자르기 및 크기 조정
안녕하세요. 코딩산책입니다.이미지 크기 조정과 자르기는 이미지 처리에서 가장 기본적이면서도 중요한 작업 중 하나입니다. 웹 개발, 디자인, 데이터 분석, 인공지능 등 다양한 분야에서 이미지의 크기를 조절하거나 특정 부분만을 사용해야 하는 경우가 많습니다. 특히, 컴퓨터 비전 작업에서는 이미지를 분석하기 전 크기를 최적화하거나, 필요 없는 부분을 제거하는 작업이 필수적입니다. OpenCV는 이러한 작업을 손쉽게 수행할 수 있는 강력한 도구를 제공합니다. 이 글에서는 OpenCV를 사용해 이미지를 원하는 크기로 변경하거나, 이미지에서 필요한 영역만을 선택해 자르는 방법을 소개합니다. 간단한 함수와 직관적인 사용법을 통해 이미지 처리 작업을 보다 효과적으로 수행할 수 있습니다. 이제 이미지 크기 조정과 자르기..
2024.10.09
-
OpenCV + Python 산술 연산과 논리 연산
안녕하세요. 코딩산책입니다. 이미지 처리에서 산술 및 논리 연산은 두 개 이상의 이미지를 결합하거나, 이미지의 특정 부분을 수정하는 데 매우 유용하게 사용됩니다. 이 글에서는 OpenCV와 Python을 사용하여 이미지 간의 산술 및 논리 연산을 적용하는 방법을 다루어 보겠습니다. 이를 통해 이미지 합성, 밝기 및 대비 조정, 이미지 마스킹 등의 작업을 수행할 수 있습니다. 1. 산술 연산 (Arithmetic Operations)OpenCV는 두 이미지 간의 덧셈, 뺄셈, 곱셈, 나눗셈 등의 산술 연산을 쉽게 수행할 수 있도록 다양한 함수를 제공합니다. 산술 연산을 통해 두 이미지를 결합하거나, 이미지의 밝기를 조정하는 등의 작업을 할 수 있습니다. 두 이미지 간의 곱셈이나 나눗셈은 이미지의 대비를 조..
2024.10.08
-
OpenCV + Python 히스토그램 분석
안녕하세요. 코딩산책입니다.히스토그램 분석은 이미지 처리에서 매우 중요한 역할을 합니다. 히스토그램은 이미지의 픽셀 값 분포를 나타내며, 밝기, 명암 대비, 이미지의 동적 범위 등을 분석하는 데 유용합니다. 이 블로그에서는 OpenCV와 Python을 활용해 다양한 히스토그램 처리 기법을 설명하고, 이를 구현하는 코드를 제시하겠습니다. 주요 개념으로는 기본 히스토그램 구하는 방법, 히스토그램 스트레칭, 히스토그램 평활화(Histogram Equalization), CLAHE(Contrast Limited Adaptive Histogram Equalization) 등을 다룹니다. 추가적으로 히스토그램 분석에서 중요한 개념 중 하나는 PDF (Probability Density Function)와 CDF (..
2024.10.07