본문 바로가기

프로그래밍

GoPro 타임랩스 이미지를 비디오로 변환 파이선을 이용해서 GoPro 타임랩스 이미지로 비디오 만들기 GoPro 카메라로 촬영한 타임랩스는 멋진 순간들을 연속적으로 담아내는 데 탁월합니다. GoPro 의 타입랩스 기능을 사용하면 정해진 간격으로 이미지를 생성합니다. 하지만, 이 많은 이미지들을 관리하고 비디오로 만드는 것은 쉬운 일이 아닙니다. 이 블로그에서는 Python 스크립트 두 개를 사용하여 GoPro 타임랩스 이미지들을 쉽게 정리하고, 이를 사용해 비디오를 만드는 과정을 안내합니다. GoPro 타임랩스 이미지 정리하기 GoPro 의 타입랩스 기능을 사용하면 정해진 간격으로 이미지를 생성합니다. 예를 들면 Gopro 의 이미지를 가져오면 다음과 같습니다. group_files.py 스크립트 group_files.py는 이미지 파일들을 수.. 더보기
안드로이드 Camera2 간단한 카메라 애플리케이션 만들기 안드로이드 Camera2 간단한 카메라 애플리케이션 만들기 Camera2 API는 안드로이드 5.0 (롤리팝)에서 처음 소개되었습니다. 이전 버전의 안드로이드에서는 Camera API (현재는 Camera1 API로 불림)를 사용했었는데, 이는 사용하기 쉽지만 기능이 제한적이었습니다. Camera2 API는 이러한 제한을 극복하고 더욱 강력하고 유연한 카메라 기능을 제공하기 위해 개발되었습니다. Camera2 API는 프로 카메라 애플리케이션과 같이 더 세부적인 카메라 제어가 필요한 경우에 적합합니다. 이 API를 통해 개발자들은 노출, 초점, 프레임 속도 등 카메라의 다양한 설정을 정밀하게 제어할 수 있습니다. Camera2 프레임워크의 특징 고급 카메라 제어: 사용자는 ISO, 셔터 속도, 노출 등을.. 더보기
안드로이드 PCM data 녹음하고 재생하기 안드로이드 마이크 녹음 및 재생 애플리케이션 안드로이드 플랫폼에서 마이크를 사용하여 오디오를 녹음하고 재생하는 애플리케이션을 개발하는 과정을 공유 합니다. 이 애플리케이션은 Java 언어와 Android SDK를 사용하여 개발되었습니다. 오디오 처리를 위해 Android의 AudioRecord와 AudioTrack 클래스를 활용하며, 사용자 인터페이스는 Android의 표준 뷰와 위젯을 사용하여 구현되었습니다.이 프로젝트의 전체 코도를 makepluscode github 에서 보실 수 있습니다. 이 프로젝트의 전체 코도를 makepluscode github 에서 보실 수 있습니다. https://github.com/makepluscode/android-mic-recoder-example2makeplusc.. 더보기
Android 음성 녹음 애플리케이션 만들기 Android에서 MediaStore를 활용한 오디오 녹음 기능 구현하기 Android 애플리케이션에서 MediaStore를 활용하여 오디오 녹음 기능을 구현하는 방법에 대해 알아보겠습니다. 이 포스팅에서는 MediaRecorder를 사용해 오디오를 녹음하고, MediaStore를 통해 녹음 파일을 저장하는 방법을 단계별로 설명합니다. 1. 기본 설정과 권한 먼저, Android 앱에서 오디오 녹음과 파일 저장을 위한 기본적인 권한 설정이 필요합니다. AndroidManifest.xml에 다음 권한을 추가해야 합니다: 2. MediaRecorder 설정 오디오 녹음을 위해 MediaRecorder 클래스를 사용합니다. MediaRecorder는 오디오 소스, 출력 형식, 오디오 인코더 등을 설정할 수 있.. 더보기
AndroidManifest와 build.gradle 의 API 버전 정보 AndroidManifest와 build.gradle 의 버전 정보 애플리케이션 개발에 있어서 필수적인 버전 설정에 대해 알아보겠습니다. 특히 AndroidManifest.xml의 targetApi와 build.gradle.kts (또는 build.gradle에서 Groovy 문법을 사용하는 경우)의 compileSdk, minSdk, targetSdk 설정들이 어떤 의미를 가지며, 왜 중요한지에 대해 정리합니다. targetApi AndroidManifest.xml 파일 내 targetApi 속성은 개발자가 특정 안드로이드 API 레벨을 대상으로 앱을 개발할 때 사용합니다. 이 속성은 안드로이드 린트(Android Lint)와 같은 개발 도구에서 API 레벨에 따른 경고를 관리하는 데 주로 사용됩니다... 더보기
FreeRTOS 빌드해서 QEMU 에서 실행하기 FreeRTOS 빌드해서 QEMU 에서 실행하기 FreeRTOS는 실시간 임베디드 시스템 개발을 위한 무료 및 오픈 소스 실시간 운영체제(OS)로, 작고 경량한 커널을 제공합니다. 이 커널은 다양한 아키텍처와 마이크로컨트롤러에서 동작 가능하며, 태스크 스케줄링, 세마포어, 큐 등의 기능을 제공하여 복잡한 임베디드 애플리케이션을 개발할 때 유용합니다. FreeRTOS는 커뮤니티와 널리 사용되는 도구와 통합되어 있어서 확장성과 지속적인 개발을 지원합니다. 이번 포스팅에서는 FreeRTOS를 빌드하고 ARM Cortex-M 시뮬레이터인 QEMU에서 실행하는 간단한 예제를 설명합니다. 아래 명령어로 FreeRTOS GitHub 저장소에서 소스 코드를 복제(clone)하고, 하위 모듈(submodules)도 함께.. 더보기
우분투 22.04 gcc-arm-none-eabi-gdb 설치 방법 우분투 22.04 에서 gcc-arm-none-eabi-gdb 설치 방법 ARM 아키텍처는 현대의 스마트폰부터 IoT 디바이스, 임베디드 시스템에 이르기까지 다양한 기기에서 널리 사용되고 있습니다. 이러한 기기들에 소프트웨어를 개발하려면, 대부분의 개발자는 자신의 PC에서 코드를 작성하고 해당 코드를 ARM 기반의 타겟 하드웨어에서 실행할 수 있는 형태로 변환해야 합니다. 이 과정에서 필수적인 도구가 바로 '크로스 컴파일러'입니다. gcc-arm-none-eabi는 ARM Cortex-M 및 Cortex-R 프로세서용 코드를 컴파일하기 위한 GNU 툴체인의 일부입니다. 이 툴체인은 개발자가 PC 환경에서 코드를 작성하고, 그 코드를 ARM 기반의 하드웨어에서 실행할 수 있는 바이너리로 변환하는 데 필요한.. 더보기
Ninja 빌드 시스템의 소개와 hello 예제 Ninja 빌드 시스템 빠르고 효율적인 빌드 시스템인 Ninja에 대해 알아보고, 우분투에서 어떻게 설치하는지 알아보겠습니다. Ninja 빌드 시스템: 소개 및 우분투에서의 설치 Ninja는 빠른 빌드를 목표로 설계된 작고 초점을 맞춘 빌드 시스템입니다. 주로 다른 빌드 시스템 (예: CMake, Meson)에서 중간 표현으로 사용되며, 주어진 빌드 규칙을 효율적으로 실행하여 소프트웨어를 빌드하는 데 사용됩니다. 우분투에서 Ninja 설치하기 우분투에서 Ninja를 설치하는 과정은 매우 간단합니다. 아래의 단계를 따라 설치를 진행할 수 있습니다. 우선, 최신 패키지 정보를 가져오기 위해 다음 명령을 실행합니다 sudo apt update Ninja 설치: 다음 명령을 사용하여 Ninja를 설치합니다: s.. 더보기
안드로이드 앱 개발을 쉽게 시작해보기 2 안드로이드 앱 개발을 쉽게 시작해보기 2 저는 예전에 안드로이드 스마트폰의 BSP와 Framework 개발했던 경험이 있습니다. 최근에 스마트폰 앱 개발에 관심이 생겨, 새롭게 공부하며 최신 트렌드를 반영한 앱 개발 과정을 포스팅으로 정리하려고 합니다. 이 포스팅이 앱 개발을 처음 시작하는 분들에게 도움이 되길 바랍니다. 이전 포스팅에서는 개발 환경을 구축하는 방법을 다루었습니다. 이번 포스팅에서는 그 환경을 활용하여 간단한 앱을 만들어 보겠습니다. 스플래시 화면 안드로이드 어플리케이션의 인트로 화면을 만들어보자! "스마트폰에서 앱을 처음 실행하면 대게 보이는 것은 인트로 화면입니다. 안드로이드에서는 이 화면을 '스플래시 액티비티'라고 부릅니다. 앱이 시작될 때 잠깐 번쩍이는 화면 특성 때문에 이렇게 불.. 더보기
안드로이드 앱 개발을 쉽게 시작해보기 1 안드로이드 앱 개발을 쉽게 시작해보기 저는 예전에 안드로이드 스마트폰의 BSP와 Framework 개발했던 경험이 있습니다. 최근에 스마트폰 앱 개발에 관심이 생겨, 새롭게 공부하며 최신 트렌드를 반영한 앱 개발 과정을 포스팅으로 정리하려고 합니다. 이 포스팅이 앱 개발을 처음 시작하는 분들에게 도움이 되길 바랍니다. 앱 개발, 어디서 부터 시작할까? 만약 우리가 앱을 개발한다면 어떤 순서로 진행해야 할까요? '앱'이라고만 하면 너무 광범위하니, 주소록 앱처럼 데이터가 저장되고, 리스트 형태로 조회되며, 데이터를 추가하거나 삭제할 수 있는 애플리케이션을 예로 들겠습니다. 이러한 앱을 만들기 위해서라면, 저는 다음과 같은 순서로 진행할 것입니다. 개발을 시작하기 전에는 필요한 도구와 환경을 설정해야 합니다.. 더보기
morden C++ 바인드, std::bind morden C++ std::bind 바인드 std::bind 는 C++ 11 에서 추가 되었다. bind는 함수를 변수처럼 사용하거나, 함수의 특정 파라미터를 고정시킨 새로운 함수를 만드는데 사용된다. 간단한 std::bind 코드 예제 std::bind 예제 코드 #include #include void plus(int a, int b) { std::cout 더보기
파이선 pycairo 에서 context 읽지 못하는 오류 파이선 pycairo 에서 context 읽지 못하는 오류 Cairo 는 오픈소스 2D 그래픽 라이브러리 이다. python 환경을 위해 pycairo 라는 패키지를 제공한다. cairo.Context 객체를 통해 간단한 그림을 그리거나, 글자를 작성할 수 있다. 테스트버전 Python 3.8.10 pycairo 1.23.0 libcairo-gobject2 1.16.0-4 Context 참조오류 cairo.Context 를 사용하기 위해서는 python3-gi-cairo 를 반드시 설치해야한다. 만약 python3-gi-cairo 가 설치되어 있지 않으면 다음과 같은 에러가 발생한다. File "main.py", line 57, in on_draw context.rectangle(900, 500, 120.. 더보기
Gstreamer Python : Appsink 구현하기 Gstreamer Python 으로 Appsink 구현하기 Gstreamer 응용프로그램 개발 시, Python 언어를 사용할 수 있도록 라이브러리를 제공해준다. makepluscode 의 이전 글에서 mp4 file 을 읽어서 pipeline 을 구현하는 코드를 정리하였다. 2023.02.02 - [프로그래밍/GLibㆍGTKㆍGstreamer] - Gstreamer Python : mp4 filesrc 예제 구현하기 Gstreamer Python : mp4 filesrc 예제 구현하기 Python 으로 mp4 filesrc 예제 구현하기 Gstreamer 응용프로그램을 개발할때 Python 언어를 사용할 수 있도록 PYTHON 바인딩을 제공한다. 많이 사용하는 기능인 mp4 file 을 읽어서 pipe.. 더보기
Gstreamer Python : videorate FPS 변경 하기 videorate FPS 변경 하기 Gstreamer 응용프로그램을 개발할때 Python 언어를 사용할 수 있도록 PYTHON 바인딩을 제공한다. makepluscode 의 이전 글에서 mp4 file 을 읽어서 pipeline 을 구성하는 예제를 정리하였다. 2023.02.02 - [프로그래밍/GLibㆍGTKㆍGstreamer] - Gstreamer Python : mp4 filesrc 예제 구현하기 Gstreamer Python : mp4 filesrc 예제 구현하기 Python 으로 mp4 filesrc 예제 구현하기 Gstreamer 응용프로그램을 개발할때 Python 언어를 사용할 수 있도록 PYTHON 바인딩을 제공한다. 많이 사용하는 기능인 mp4 file 을 읽어서 pipeline 을 구성.. 더보기
Gstreamer Python : mp4 filesrc 예제 구현하기 Python 으로 mp4 filesrc 예제 구현하기 Gstreamer 응용프로그램을 개발할때 Python 언어를 사용할 수 있도록 PYTHON 바인딩을 제공한다. 많이 사용하는 기능인 mp4 file 을 읽어서 pipeline 을 구성하는 예제를 구현하는 코드를 정리한다. gstreamer factory 파이프라인 예제 테스트 환경 Gstreamer 1.16.4 Python 3.8.10 gstreamer filesrc 구현하기 Gstreamer 의 ElementFactory 는 programming 을 통해 Gstreamer 플러그인을 load 하는 함수 이다. 아래의 코드는 filesrc, qtdemux, avdec_h264, h264parse, videoconvert, autovideosink 를 .. 더보기
Gstreamer Python : factory 파이프라인 구현하기 Python 으로 구현한 gstreamer factory 파이프라인 예제 Gstreamer 프레임워크에서 응용프로그램 개발 시, Python 언어를 사용할 수 있도록 Gstreamer -PYTHON binding 을 제공한다. plug-in 을 로드해서 파이프라인을 구성하는 예제 코드를 정리한다. gstreamer factory 파이프라인 예제 테스트 환경 Gstreamer 1.16.4 Python 3.8.10 gstreamer factory 파이프라인 프로그래밍 Gstreamer 의 ElementFactory 는 programming 을 통해 Gstreamer 플러그인을 load 하는 함수 이다. 아래의 코드는 videotestsrc 와 autovideosink 를 load 하고 하나의 pipeline.. 더보기