본문 바로가기

프로그래밍 강좌

(70)
[OpenCV][파이썬] 영상 처리 기초 - image 읽기 쓰기 저장 imread VSCode 화소 접근 imshow numpy 리스트 list 튜플 tuple 제 블로그를 보시면 알겠지만, 저는 c++ 기반의 프로그램을 계속 해 왔습니다. 왜냐하면 회사에서는 파이썬 보다는 c++을 많이 사용하기 때문입니다. 그래도 교육용이나 실시간성이 많이 필요하지 않은 분야에는 파이썬이 많이 적용되고 있기 때문에 저도 파이썬을 이용하여 OpenCV를 한번 강의를 연재해 보려고 합니다. 지난 시간에 우리는 Visual Studio Code를 설치하고 OpenCV를 연동해보는 것까지 해 봤습니다. https://blog.naver.com/dorergiverny/223169168476 [OpenCV][파이썬] VSCode 설치 및 anaconda 연동하기 - Visual Studio Code 세팅 IDE 아나콘다 python 최신버전 환 지난번에는 anaconda를 설치하고 Ju..
[OpenCV][C++] 영상 회전(image rotation)하는 방법 - getRotationMatrix2D(), warpAffine() 이번에는 영상을 특정 각도로 회전시키는 방법에 대해 알아보겠습니다. 2D 회전 행렬은 아래와 같습니다. ​ OpenCV에서는 회전 중심을 선택하고 영상의 크기를 조절할 수 있는 함수를 제공합니다. OpenCV에서 제공하는 함수의 수식은 아래와 같습니다. ​ Cx와 Cy는 영상 회전 중심 좌표를 의미하며, s는 scale 값을 의미합니다. 위의 행렬을 계산해주는 함수가 바로 getRotationMatrix2D() 함수 입니다. 함수의 원형은 아래와 같습니다. center 회전 중심 좌표 angle 회전 각도, degree 단위, (양수: 반시계 방향, 음수: 시계 방향) scale 영상 스케일 조정 값 반환값 회전 행렬 이 행렬을 이용해서 영상을 회전시키기 위해서는 warpAffine() 함수를 사용합니다..
[OpenCV][C++] 영상 분할 ( image segmentation ) 총정리(3) - GrabCut graphcut setmousecallback 지난번에는 워터쉐드 (watershed) 알고리즘에 대해 알아봤습니다. https://blog.naver.com/dorergiverny/223099559423 [OpenCV][C++] 영상 분할 image segmentation 총정리 (1) - 워터쉐드 watershed 알고리즘 rainfall inpaint 워터셰드 이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 ... blog.naver.com 이번에는 GrabCut 알고리즘에 대해 간단히 알아보도록 하겠습니다. Grabcut 알고리즘이란? GrabCut 알고리즘은 영상에서 배경과 전경을 구분하여 전경을 추출하는 알고리즘으로 그래프 컷(graph cut) 기반의 영역 분할 알고리즘 입니다. 그..
[OpenCV][C++] 영상 분할 (image segmentation) 총정리(2) - 워터쉐드 (watershed) 알고리즘, cv::distanceTransform 이전에는 마우스 이벤트를 활용하여 markers 영상을 만들고 이를 기반으로 watershed 알고리즘을 수행하는 방법을 알아보았습니다. https://blog.naver.com/dorergiverny/223099559423 [OpenCV][C++] 영상 분할 image segmentation 총정리 (1) - 워터쉐드 watershed 알고리즘 rainfall inpaint 워터셰드 이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 ... blog.naver.com (1) Watershed Segmentation watershed segmentation을 수행하는 방법을 알아보겠습니다. 이번에는 거리변환(distance Transform) 함수에 대..
[OpenCV][C++] 영상 분할(image segmentation) 총정리 (1) - 워터쉐드 (watershed) 알고리즘 rainfall 이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 보도록 하겠습니다. watershed 알고리즘 watershed 알고리즘은 영역 기반 분할(region-based segmentation) 의 한 방법으로 영상의 밝기 값의 유사성에 근거하여 영역을 분할하는 방법입니다. 다시 말하면, 영상의 픽셀 값을 높이로 생각하고 영상을 2차원 지형으로 가정할 때 물을 채우고 물 웅덩이로 분할된 영역으로 분할하는 알고리즘 입니다. watershed는 크게 Rainfall, Flooding 의 두가지 방법으로 나눌 수 있습니다. Rainfall: 지형의 고도가 높은 지점에서 물방울을 떨어뜨려 고도가 낮은 물 웅덩이를 만드는 방법 Flooding: 물을 고도가 낮은 골..
[OpenCV][C++] 훼손된 영상 복원하기 - cv::inpaint() 사진속 그림 지우기 제거 image restore 회복 되돌리기 이번에는 좀 재미있는 함수를 알아보려고 합니다. 훼손된 영상을 주변 픽셀 정보를 이용하여 채워넣는 방법입니다. 이 함수를 알아보기 위해 이전에 알아보았던 마우스 이벤트를 사용해볼께요. https://m.blog.naver.com/dorergiverny/223084092098 [OpenCV][C++] 마우스 이벤트 처리 총정리 - onMouse setMouseCallback EVENT_MOUSEMOVE LBUTTONDOWN 이전에는 윈도우 생성 방법과 키보드 입력을 받아 이벤트를 처리하는 방법에 대해 알아보았습니다. https:/... blog.naver.com inpaint()의 원형은 아래와 같습니다. src 입력 영상 inpaintMask inpaint 할 마스크 영상 dst 출력 영상 inpaint..
[소프트웨어] SW 개발 방법론(2) - 폭포수 모델 프로세스 나선형 통합 애자일 agile waterfall model process spiral unified 선언문 협업 UP 지난 시간에 소프트웨어 개발 방법론에 대해 기초를 알아봤습니다. https://m.blog.naver.com/dorergiverny/223030851029 소프트웨어 개발 방법론(1) - 프로그래밍 차이 구조적 절차적 객체지향 모호성 명사 동사 모듈화 우리는 지난 시간에 기술 부채 techincal debts 에 대해 알아봤습니다. https://blog.naver.com/dorergiver... blog.naver.com 오늘은 소프트웨어 개발 프로세스에 대해 알아 보겠습니다. 1. 소프트웨어 개발 프로세스란? 2. 폭포수 모델 3. 나선형 모델 4. 통합 모델 5. 애자일 모델 소프트웨어 개발 프로세스란? 소프트웨어 개발 프로세스란 무엇일까요? 소프트웨어를 개발할 때 해야 하는 일의 순서를 정의하는 ..
[소프트웨어] SW 개발 방법론(1) - 프로그래밍 차이 구조적 절차적 객체지향 모호성 명사 동사 모듈화 상속 추상화 프로그래머 우리는 지난 시간에 기술 부채 techincal debts 에 대해 알아봤습니다. https://blog.naver.com/dorergiverny/223030520258 [C/C++] Technical Debt 란? 기술 부채 debts 정의 발생 원인 필요성 SW 개발 소프트웨어 이율이 높아지는 요즘 같은 시대에 빚이란 걸 생각하기도 싫다. 어려운 길과 쉬운 길이 있다면 누구나 쉬운... blog.naver.com 오늘 알아볼 내용은 아래와 같습니다. 1. 소프트 웨어와 프로그래밍의 차이 2. 소프트웨어는 언어다? 3. 구조적(절차적) 개발 방법론 4. 객체지향 개발 방법론 소프트웨어 vs. 프로그래밍 소프트웨어 개발 방법론을 논하기에 앞서, 소프트웨어가 무엇인가? 생각해 봅시다. 예를 들어, "1부터..