dorergiverny의 등록된 링크

키자드에 등록된 총 568개의 포스트를 확인하실 수 있습니다.

Naver Blog

[데이터 분석][Python] 파이썬 pandas 패키지 총정리 (3) - 판다스 sort_values find replace astype warnings

지난번에는 판다스 패키지 중 DataFrame을 생성하고 loc[ ] 과 iloc[ ]을 이용한 데이터 접근하는 방법 등에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223146623496 [데이터 분석][Python] 파이썬 pandas 패키지 총정리 (2) - 판다스 loc iloc Series DataFrame 연산 column 추가 지우기 지난번에 pandas 패키지의 기본에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/22314620480... blog.naver.com 이번에는 좀 더 심화된 데이터 전처리 방법들에 대해 알아보도록 하겠습니다. 판다스를 사용하기 위해서는 판다스 라이브러리를 불러와야 합니다. 그리고 os 는 디렉터리를 관리하는 라이브러리 입니다. csv 파일을 읽기 위해 read_csv()를 사용해보니 아래와 같이 에러가 발생하네요 제일 아래쪽에 보면, 유니코드 디코드 에

Naver Blog

[데이터 분석][Python] 파이썬 pandas 패키지 총정리 (4) - 판다스 isnull isin str.contains fillna value_counts dropna

지난 시간까지 우리는 판다스의 데이터 다루는 방법에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223146891774 [데이터 분석][Python] 파이썬 pandas 패키지 총정리 (3) - 판다스 sort_values find replace astype warnings 지난번에는 판다스 패키지 중 DataFrame을 생성하고 loc[ ] 과 iloc[ ]을 이용한 데이터 접근하는 방법 ... blog.naver.com 이번에는 titanic 데이터를 가지고 데이터를 좀 더 다뤄보도록 하겠습니다. 판다스를 import 하시고, titanic 데이터를 읽어 옵니다. 데이터 정보를 보니 Non-Null Count 값이 다른 것들이 보입니다. 아마 정보가 다 없는 부분이 있을 것으로 보입니다. column 명 설명에 대해서는 이전에 설명을 해드렸어요. https://m.blog.naver.com/dorergiverny/223146204809

Naver Blog

[데이터 분석][Python] 파이썬 pandas 패키지 총정리 (1) - 판다스 rename set_index read_excel

지난번에는 파이썬에서 사용될 수 있는 Numpy 패키지에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223144197435 [데이터 분석][Python] 넘파이 numpy 파이썬 라이브러리 패키지 총정리 배열 난수 생성 shuffle choice 지난번 까지는 파이썬의 기본 문법들에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223136... blog.naver.com 넘파이 라이브러리는 배열(다차원 포함) 또는 난수 생성 시 주로 사용하고, 나머지의 경우는 Pandas 패키지에서 모두 커버할 수 있다고 했습니다. 판다스 라이브러리에 대해서는 좀 더 깊게 살펴볼 필요가 있어서 깊게 살펴보도록 하겠습니다. 데이터 프레임이라는 자료구조를 제공하여 테이블 구조의 데이터 처리를 편리하게 해줌 numpy의 배열에는 숫자만 들어갈 수 있으나 데이터 프레임에는 임의의 타입 데이터를 담을 수 있음 numpy

Naver Blog

[OpenCV][C++] HOG 기반 보행자 위치 사람 검출 - SVM 알고리즘 Histogram of Oriented Gradients human detection

지난번에는 얼굴 검출에 대해 간단히 알아봤습니다. https://m.blog.naver.com/dorergiverny/223141489275 [OpenCV][C++] 영상에서 얼굴 검출 총정리 (3) - DNN 모듈 기반 딥러닝 face detection SSD 알고리즘 인식 추출 지난 두번의 얼굴 검출 총정리에서 OpenCV에서 제공하는 Haar 기반 얼굴 검출기와 LBP 기반 얼굴 검... blog.naver.com 이번에는 2005년 N. Dalal 과 B. Triggs 가 발표한 HOG 알고리즘을 이용하여 보행자를 검출하는 알고리즘에 대해 함께 알아보겠습니다. HOG는 Histogram of Oriented Gradients 의 약자로 그래디언트 방향의 히스토그램을 의미합니다. 지난번 1차 미분에 대해 설명하면서 gradient에 대한 설명을 했습니다. https://m.blog.naver.com/dorergiverny/223112151404 [OpenCV] [C++] 샤프닝

Naver Blog

[데이터 분석][Python] 넘파이 numpy 파이썬 라이브러리 패키지 총정리 배열 난수 생성 shuffle choice

지난번 까지는 파이썬의 기본 문법들에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223136574637 [데이터 분석][Python] 파이썬 기초 문법 (5) - 분기문 switch case 문 구현, match-case, for-else, while-else 지난 시간에 우리는 조건문과 반복문에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223136... blog.naver.com 이번부터는 좀 더 본격적으로 파이썬 라이브러리들에 대해 알아보겠습니다. 출처: https://chdoig.github.io/ep2015-blaze/images/data-science-005.png 지난번에 데이터 분석에 대한 개요를 알아보면서 데이터 분석 단계를 한번 정리해드렸습니다. 이번에는 데이터 분석 단계별 사용가능한 파이썬 패키지에 대해 알아볼까 합니다. https://m.blog.naver.com/dorer

Naver Blog

[JK 농원] 레고스토어 강남 최초 코엑스점 위치 및 이벤트 - LEGO store 코엑스몰 coex 스타필드 자라 옆 20호

안녕하세요? 국내 레고스토어 20호점, 강남 최초 코엑스점에 다녀왔습니다. 저도 처음이라 위치를 찾는데 한참 걸렸어요. 코엑스 스타필드 내 매장 검색하는 곳에도 아직 업데이트가 되어 있지 않아서 찾아지지 않았네요. 현장에서 급하게 몇 개의 블로그를 찾아 봤는데, 이벤트 관련 내용만 있고, 정확한 위치를 안내해주는 곳이 없어서 한참을 헤맸어요. 네이버 지도에서 검색해도 봉은사역 7번 출구에서 10m 란 말밖에는 없어서.. 그래서 전 봉은사쪽으로 막 걸어갔는데, 아니었어요. 코엑스가 봉은사에서 10m(?) 라는 것일뿐!! 그래서 제가 딱~ 알려드릴께요. 자라, 다이소 옆에 있고, 별마당도서관 쪽이에요. 메가박스, 아쿠아리움 반대쪽에 있어요. 코엑스 지하 동문쪽에 주차하시는게 가까우실 듯 합니다. 오늘이 이벤트 마지막 날이라 그런지 여전히 대기 등록하고 기다리고 들어가야해요 당분간 계속 그럴지도 모르죠. ㅎㅎ 이벤트에 대해서는 다들 들으셨을테니 패스~! 이제는 이벤트 끝났겠네요.. 흥흥

Naver Blog

[OpenCV][C++] 영상에서 얼굴 검출 총정리 (3) - DNN 모듈 기반 딥러닝 face detection SSD 알고리즘 인식 추출

지난 두번의 얼굴 검출 총정리에서 OpenCV에서 제공하는 Haar 기반 얼굴 검출기와 LBP 기반 얼굴 검출기에 대해 알아봤습니다. 그리고 face 모듈에 대해서도 알아봤습니다. https://m.blog.naver.com/dorergiverny/223140543615 [OpenCV][C++] 영상에서 얼굴 검출 총정리 (2) - facemark 눈 코 입 형태 추출 LBF face 모듈 detection LBPcascade 이전에는 Haar 기반 얼굴 검출에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223139615... blog.naver.com OpenCV에서 제공하는 기본 검출기들은 정면 얼굴 또는 프로파일(측면) 얼굴 등.. 하나의 포즈에서는 얼굴 검출이 가능하지만 다양한 포즈의 얼굴을 동시에 추출하지는 못하는 아쉬움이 있었습니다. 하지만 OpenCV에서 제공하는 딥러닝 모듈을 이용하여 얼굴을 검출할 수도 있습니다. 얼굴 추

Naver Blog

[JK 농원] windows 컴퓨터 모든 파일 및 폴더 빠르고 쉽게 검색하고 찾기 - everything 프로그램 사용 방법 윈도우

오늘은 컴퓨터를 사용하면서 정말 피와 같은 꿀팁~ 을 알려드릴께요. 써 본 사람들은 정말 유용하게 사용하는 파일 검색 툴입니다. 제가 본 가장 빠른 검색 툴이에요. 우리가 컴퓨터를 사용하다보면 여러 잡다한 파일들이 쌓이면서 점차 원하는 파일을 찾기 어려워집니다. Everything은 파일 이름으로 파일과 폴더를 실시간으로 찾아주는 윈도 검색 엔진입니다. 검색 필터를 사용할 수도 있습니다. 제 PC에는 약 2백만개의 파일/폴더가 있습니다. 이 중에서 임의의 파일을 찾으려면 거짓말 안보태서 1초안에 찾아줍니다. 일단 깔아볼께요. https://www.voidtools.com/ko-kr/downloads/ 다운로드 - voidtools 다운로드 Everything 1.4.1.1024 다운로드 변경 이력 새 기능 구버전 라이선스 SHA256 지원 언어 개발 중 도움말 모든 Everything 다운로드 Everything-1.4.1.1024.x86-Setup.exe 설치파일 x86 다국어 지

Naver Blog

[OpenCV][C++] 최신 버전 4.8.0 Release 업데이트 소식 - 윈도우 Windows 설치하기 Github Cmake 이용

오늘은 기쁜 마음에 신규 버전인 4.8.0 버전 Release 소식을 전해드리고자 합니다. 바로 어제 github에 Merge가 되었습니다. https://github.com/opencv/opencv GitHub - opencv/opencv: Open Source Computer Vision Library Open Source Computer Vision Library. Contribute to opencv/opencv development by creating an account on GitHub. github.com 다운을 받으면 여전히 폴더 명은 기존과 같습니다. 제가 4월에 작성한 CMake를 이용해서 설치하는 방법으로 설치를 해보니 설치가 잘 되네요 https://m.blog.naver.com/dorergiverny/223057902921 [OpenCV][C++] 최신 OpenCV 설치하기 (CMake 사용하여 소스 빌드하기), visual studio 2019 OpenCV

Naver Blog

[OpenCV][C++] 영상에서 얼굴 검출 총정리 (2) - facemark 눈 코 입 형태 추출 LBF face 모듈 detection LBPcascade 인식

이전에는 Haar 기반 얼굴 검출에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223139615248 [OpenCV][C++] 영상에서 얼굴 검출 총정리 (1) - 캐스케이드 분류기 adaboost face detection harr like feature 이번에는 OpenCV에서 제공하는 얼굴 검출에 대해 알아보도록 하겠습니다. 2001년에 비올라(P. Viola)... blog.naver.com Haar 기반 얼굴 검출기의 기본 아이디어는 대부분의 얼굴 정면을 보면 눈이 있는 부분이 이마와 뺨 보다 어둡고 입이 있는 부분이 뺨 보다 어둡다는 것 입니다. 얼굴인지 아닌지를 결정하기 위해 일반적으로 20단계의 비교를 수행하기도 하지만 영상의 가능한 위치별로 얼굴의 가능한 크기마다 작업을 수행해야 하므로 시간이 오래 걸립니다. 이에 반해 LBP 기반 얼굴 검출기는 Haar와 유사하지만 윤곽선, 코너, 평평한 영역과 같은 픽셀 강도 비교 히

Naver Blog

[OpenCV][C++] 영상에서 얼굴 검출 총정리 (1) - 캐스케이드 분류기 adaboost face detection haar like feature

OpenCV 에서 얼굴 추출을 위해서 face 모듈이라는 것을 제공합니다. https://m.blog.naver.com/dorergiverny/223140543615 [OpenCV][C++] 영상에서 얼굴 검출 총정리 (2) - facemark 눈 코 입 형태 추출 LBF face 모듈 detection LBPcascade 인식 이전에는 Haar 기반 얼굴 검출에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223139615... blog.naver.com 이에 앞서 기본적인 얼굴 검출하는 방법에 대해 알아봐야 할 것 입니다. 이번에는 OpenCV에서 제공하는 얼굴 검출에 대해 알아보도록 하겠습니다. 2001년에 비올라(P. Viola)와 존스(M. Jones)가 "Rapid Object Detection using a boosted cascade of simple features" 라는 object detection을 위한 boostin

Naver Blog

[소프트웨어] ChatGPT 프롬프트 엔지니어링 가이드 (1) - 대화형 생성 AI 결과물을 좋게하는 방법 작성prompt 쓰는 guide engineering 챗지피티

이전에 ChatGPT에 대해 쓴 글이 있습니다. 사실 그 때까지만 해도 프롬프트를 잘 써야 좋은 결과를 얻을 수 있다는 사실은 듣긴 했으나 정확히 어떻게 써야 하는지 가이드를 몰랐습니다. 그래서 가입하는 법과 코딩 시키는 간단한 방법에 대해서만 알려드렸었는데요. https://m.blog.naver.com/dorergiverny/223059262773 [소프트웨어] 챗GPT 시작하기, 코딩시키기 - OpenAI 이번에는 요즘 핫한 챗GPT 시작하기 부터 코딩을 시켜보는 것까지 해 보겠습니다. ChatGPT(챗GPT... blog.naver.com 서점에 갔을 때에도 ChatGPT 관련 책들이 있는 것을 보았으나 사볼 생각을 하지 못하고 있던 찰나에 우리나라 Prompt Engineer로 바쁜 삶을 살아가는 유메타랩의 서승완 대표님의 강의를 듣고 프롬프트의 중요성을 깨달았습니다. http://yumeta.kr/ Yumeta Lab About Yumeta lab 꿈을 현실로 만드는 기업

Naver Blog

[JK 농원] 아프리카 식물 아데니움 오베숨 이야기 - 미니바오밥 사막의 장미 석화 미니 다육 플렌테리어

지난번에는 아프리카 식물 괴마옥에 대해 소개를 해 드렸어요. https://m.blog.naver.com/dorergiverny/223131493255 [JK 농원] 아프리카 식물 괴마옥 이야기 - 파인애플 선인장 인테리어 미니 다육이 파인애플을 쏙 닮은 앙증맞은 아프리카 식물 괴.마.옥 을 소개합니다. 요즘 아프리카 식물에 푹 빠졌답니다... blog.naver.com 이번에는 아프리카 식물 중에서 꽃이 엄청 이쁜 사.막.의. 장.미. 라고 불리우는 아데니움 오베숨 에 대해 알아보겠습니다. 석화라고도 알려진 사막의 장미의 속명은 식물 자생지인 아덴에서 유래합니다. 아라비아, 동아프리카, 나미비아에 약 15종이 있다고 합니다. 아덴만 여명작전 기억하시나요? 그 아덴입니다. 장한 청해부대 최영함이 소말리아 해적들에게 피랍된 삼호주얼리의 구조 작전이죠. 출처: http://www.haesanews.com/news/articleView.html?idxno=41253 학명: 아데니움 오베숨

Naver Blog

[데이터 분석][Python] 파일 읽기 오류 - read_csv UnicodeDecodeError 'cp949' 'utf-8' codec can't decode byte 인코딩

우리가 파이썬에서 데이터를 읽어 올 때 에러가 나는 경우를 종종 볼 수 있습니다. 아래와 같이 판다스의 read_csv() 함수로 csv 파일을 읽어왔는데, 에러가 뜹니다. 에러의 제일 아래쪽을 보니, UnicodeDecodeError: 'utf-8' codec can't decode byte 0x85 in position 3375: invalid start byte 라는 메시지가 보이네요. 원인은 read_csv() 함수가 기본적으로 encoding이 utf-8로 세팅 되어 있는데, 파일이 utf-8로 읽을 수 없다는 내용입니다. 구글링을 해 보면 많은 분들이 'cp949' 로 바꿔보면 된다 라고 하십니다. 그래서 저도 한번 encoding을 'cp949'로 바꿔봤습니다. 그래도 여전히 유사한 에러가 나옵니다. UnicodeDecodeError: 'cp949' codec can't decode byte 0x80 in position 24483: illegal multibyte se

Naver Blog

[OpenCV][C++] 영상 클러스터링 방법 총정리 (1) - k means clustering 군집화 image segmentation

지난번에는 grabcut 알고리즘 기반으로 영상을 segmentation 에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223108058366 [OpenCV][C++] 영상 분할 ( image segmentation ) 총정리(3) - GrabCut graphcut setmousecallback 지난번에는 워터쉐드 (watershed) 알고리즘에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/... blog.naver.com 이번에는 클러스터링에 대해 알아보도록 하겠습니다. Segmentation과 Clustering의 차이가 뭘까요? 클러스터링과 세그멘테이션은 컴퓨터 비전과 패턴 인식 분야에서 중요한 개념입니다. 클러스터링은 비슷한 특성을 가진 데이터 포인트들을 그룹화하는 작업입니다. 주어진 데이터를 사전에 정해진 클러스터 수로 분할하거나 유사한 특성을 가진 데이터 포인트들을 동일한 클러스터로 그

Naver Blog

[데이터 분석][Python] 파이썬 기초 문법 (1) - 숫자 자료형 연산자 bool 논리형 문자열 인덱싱 슬라이싱

파이썬 기초 문법을 시작하기에 앞서, 어떤 식으로 강의를 시작해야 할지 막막했습니다. 강의 앞부분에 학습 목표와 내용을 ppt로 정리하여 공유하고, 그 이후에 Jupyter Notebook을 이용하여 간단한 실습을 하는 방식으로 진행하겠습니다. https://m.blog.naver.com/dorergiverny/223125294039 [데이터 분석][Python] Jupyter Notebook 사용법 총정리(1) - 주피터 노트북 아나콘다 파이썬 기초 지난번에 아나콘다 설치 방법과 쥬피터 노트북 실행 방법에 대해 알아봤습니다. https://m.blog.naver.com/... blog.naver.com 실습은 문제를 가지고 풀어가는 식으로 해볼께요. ※ 제가 힘들게 정리해서 올리는 자료이오니 퍼가실 때 출처 부탁드립니다. 자료형 파이썬에서 사용되는 자료형은 아래와 같습니다. Scalar Type은 일반적으로 다른 언어에서 사용하는 것과 거의 동일하다고 보시면 되고, 자료 구조(da

Naver Blog

[데이터 분석][Python] 파이썬 기초 문법 (2) - 리스트 list 자료구조 data structure append extend 인덱싱 슬라이싱 indexing

이번에는 파이썬 기초 문법 두번째 강의로, 지난 강의 때 숫자 자료형에 대해 알아 봤고, https://m.blog.naver.com/dorergiverny/223133319038 [데이터 분석][Python] 파이썬 기초 문법 (1) - 숫자 자료형 연산자 bool 논리형 문자열 인덱싱 슬라이싱 파이썬 기초 문법을 시작하기에 앞서, 어떤 식으로 강의를 시작해야 할지 막막했습니다. 강의 앞부분에 학... blog.naver.com 이번에는 data structure 인 자료구조 중에서 list 에 대해 알아보겠습니다. Data Structure 파이썬에서 사용되는 자료 구조의 종류를 나열해봤고, 그 종류별로 특징을 비교해 봤습니다. 파이썬을 사용할 때 1차원 데이터의 경우에는 리스트 또는 딕셔너리를 가장 많이 사용합니다. 그래서 저도 리스트와 딕셔너리를 중심으로 설명을 드릴꺼에요. 튜플은 리스트와 비슷하지만 길이나 원소 변경이 불가하기(C언어에서의 const 속성과 유사함) 때문에

Naver Blog

[데이터 분석][Python] 파이썬 기초 문법 (3) - 딕셔너리 dictionary 자료구조 key value 튜플 tuple

지난 시간에는 파이썬 기본 문법 중 리스트에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223134321097 [데이터 분석][Python] 파이썬 기초 문법 (2) - 리스트 list 자료구조 data structure append extend 이번에는 파이썬 기초 문법 두번째 강의로, 지난 강의 때 숫자 자료형에 대해 알아 봤고, https://m.blog.n... blog.naver.com 이번에는 자료구조 중 딕셔너리를 알아보겠습니다. 딕셔너리 딕셔너리는 속성은 keys, 값은 values 로 이루어져 있어서 key-value 저장방식이라고도 합니다. 리스트는 대괄호를 사용하는 반면에 딕셔너리는 중괄호를 사용합니다. 중괄호 안의 데이터는 무엇이든 와도 됩니다. 숫자, 문자열, bool, 자료구조까지 가능합니다. 다만 하나의 딕셔너리에는 하나의 주제, 목적의 데이터만 넣습니다. 딕셔너리는 엑셀의 row와 같은 형태로 구성되어 있다고

Naver Blog

[데이터 분석][Python] 파이썬 기초 문법 (4) - 조건문 if elif else 반복문 while for in

지난번에는 파이썬 기초 문법 중 딕셔너리와 튜플에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223134369954 [데이터 분석][Python] 파이썬 기초 문법 (3) - 딕셔너리 dictionary 자료구조 key value 튜플 tuple 지난 시간에는 파이썬 기본 문법 중 리스트에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/... blog.naver.com 이번에는 조건문과 반복문에 대해 알아보겠습니다. 조건문(if/elif/else) 일정 조건에 맞으면 해당 코드를 수행시키는 조건문에는 if 문이 있습니다. if 문을 하나만 쓸 경우도 있고, if~else 문을 사용하거나 if~elif~else 문을 사용할 때가 있습니다. 조건의 개수에 따라 사용하시면 됩니다. if ~else 문의 예시는 아래와 같습니다. 현재 점수가 65점인데 60점 이상이면 합격, 아니면 불합격을 print 해

Naver Blog

[데이터 분석][Python] 파이썬 기초 문법 (5) - 분기문 switch case 문 구현, match-case, for-else, while-else

지난 시간에 우리는 조건문과 반복문에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223136329385 [데이터 분석][Python] 파이썬 기초 문법 (4) - 조건문 if 반복문 while for in 지난번에는 파이썬 기초 문법 중 딕셔너리와 튜플에 대해 알아보았습니다. https://m.blog.naver.com/dorer... blog.naver.com 조건문을 사용하다보면 의문이 생깁니다. if-elif~else 문을 사용하다보면 조건이 많을 때가 있습니다. if~elif~else 문은 처음부터 조건을 모두 검사하면서 순차적으로 진행하므로 최악의 case에는 모든 조건을 다 검사해야 할 수 있습니다. 하지만 다른 언어에서는 switch 문이 있어서 바로 jump를 할 수 있어 성능 측면에서 좋을 수 있습니다. (참고로 C++의 switch 문에서 break;를 써줘야 다음 case로 fall through를 안하는데, 아래 예시

Naver Blog

[데이터 분석][Python] Jupyter Notebook 사용법 총정리(1) - 주피터 노트북 아나콘다 파이썬 기초

지난번에 아나콘다 설치 방법과 쥬피터 노트북 실행 방법에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223125248536 [Python] windows 10에 아나콘다(anaconda) 파이썬 설치 및 Jupyter 노트북 사용법 이번에는 아나콘다 설치 방법 및 Jupyter 노트북 사용법에 대해 알아보도록 하겠습니다. 아나콘다(Anacon... blog.naver.com 주피터 노트북이란 웹 브라우저 안에서 실행하고 싶은 코드를 입력하고 실행할 수 있는 하나의 어플리케이션이라고 했습니다. 차트, 그래프 등은 ppt, docs 에서 바로 붙여넣기해서 사용할 수도 있고, 데이터 분석 결과물을 엑셀로 출력할 수 있습니다. python 말고도 Go, R 등 다양한 프로그래밍 언어를 지원하여 유용하게 사용됩니다. 이번에는 주피터 노트북에 대해 좀 더 깊게 알아보도록 하겠습니다. 주피터 노트북을 실행하면 처음 나오는 화면의 폴더 위치가 어디일까요

Naver Blog

[데이터 분석][Python] Data Science 란? 파이썬 사용 이유 데이터 사이언스 Scientist 사이언티스트 아나콘다 유료화 조건 데이터 정보 지식 지혜

지난 시간에 데이터 분석 첫시간으로 아나콘다를 설치하는 방법과 쥬피터 노트북에 대한 간단한 실행에 대해 알아봤습니다. 아나콘다가 200인 이상인 기업체에서도 교육 목적의 사용이라면 무료로 사용이 가능한 policy를 직접 확인해보기도 했습니다. (인터넷에 떠도는 유료화 얘기들이 반은 맞고 반은 틀린 것 같아요 항상 조건이 중요합니다.) https://m.blog.naver.com/dorergiverny/223125248536 [데이터 분석][Python] windows 10에 아나콘다(anaconda) 파이썬 설치 및 Jupyter 노트북 사용법 이번에는 아나콘다 설치 방법 및 Jupyter 노트북 사용법에 대해 알아보도록 하겠습니다. 아나콘다(Anacon... blog.naver.com 이번에는 Data 에 대해 먼저 알아보고 왜 데이터 분석에 파이썬을 사용하는지에 대해 알아보도록 하겠습니다. 데이터가 왜 중요한가? 경영학쪽에서 Data를 아래와 같이 설명을 합니다. [데이터] 데

Naver Blog

[소프트웨어] SW 라이선스 종류 및 주의사항 - 오픈소스 라이센스(License) 사용 가이드

이번에는 우리가 소프트웨어를 개발하면서 오픈소스를 사용하게 되는데(가히 요즘은 오픈소스의 시대라고 할 수 있죠), 이 때 라이선스가 있기 때문에 라이선스(license) 종류에 따라 사용 시 사용 범위와 주의사항들이 달라지게 됩니다. 이와 관련된 정확한 내용은 아래 사이트에 소개가 되어 있습니다. 오픈소스 SW 라이선스 종합정보시스템입니다. https://www.olis.or.kr/ 이 모든 라이선스 제약사항은 배포할 때 적용이 됩니다. 만약 배포하지 않고 혼자 공부 등을 위해 수정/사용할 경우 문제가 되지 않습니다.(AGPL 제외) 위 오픈소스 SW 라이선스 종합정보시스템의 표를 자주 사용하는 것만 추려 정리하면 아래와 같습니다. 오픈소스를 사용할 때 가장 중요한 것은 배포 시 소스코드 제공의무 여부입니다. 그리고 이 소스를 사용해서 다른 소스와 조합하여 2차 라이선스를 부여할 수 있는지 없는지에 따라 제약 사항의 강도가 달라집니다. 이 조건대로 라이선스를 다시 분류해보면 아래와

Naver Blog

[JK 농원] 아프리카 식물 괴마옥 이야기 - 파인애플 선인장 인테리어 미니 다육이

파인애플을 쏙 닮은 앙증맞은 아프리카 식물 괴.마.옥 을 소개합니다. 요즘 아프리카 식물에 푹 빠졌답니다. 우리 아이는 이렇게 생겼어요. 얼핏보면 파인애플을 닮았죠? 뾰족 삐죽 단단한 초록색과 아이보리색의 줄기 위에 돋아난 싱그러운 초록잎~!! 이런 생김새 때문에 영어권에서는 pine-cone cactus 라고 불리기도 한답니다. 아이보리 색으로 변한 부분을 목질화가 되었다라고 표현해요. 이 아이는 파인애플과 닮았지만 혹시라도 먹게 되면 안됩니다. 괴마옥이란? 괴마옥은 나쁜 귀신을 쫒아낸다는 뜻이 있습니다. 남아프리카 케이크 지역, 쿠아줄루나탈의 건조한 열대 초원에서 자생하고 있는 식물이에요. 잎은 좁고 긴 모양이며, 원통형의 줄기 상단에 집중되어 자랍니다. 줄기는 마치 파인애플 껍질처럼 굴곡이 있는데, 이것은 잎이 떨어져 나간 흔적인 옆흔 입니다. 두꺼운 줄기는 수분을 저장하고 있습니다. 괴마옥의 꽃은 잎이 나는 것처럼 줄기에서 꽃대가 올라오면서 핍니다. 우리 둘째에요. 어떻게 키

Naver Blog

[OpenCV][C++] 영상에서 원 찾기 - 허프 원 변환 Hough Transform Circle : HoughCircles() 휴 fitting find gradient

지난번에는 Hough Transform에 대해 기본적인 이론과 OpenCV에서 직선을 찾을 때 활용할 수 있는 방법에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223121038190 [C++] 영상에서 직선 검출하기 - 허프 변환 (Hough Transform) 이론 및 구현 이전에는 RANSAC을 이용한 직선 식 구하기(Line Fitting)을 알아봤습니다. https://m.blog.naver.c... blog.naver.com 이번에는 Hough Transform과 매우 유사한 원리로 동작되는 원 검출에 사용되는 Hough circle에 대해 알아보겠습니다. 원을 표현하는 방정식 우리가 원을 표현하는 방정식을 아래와 같이 알고 있습니다. (a, b)를 중심으로 반지름이 r인 원의 방정식은 아래와 같습니다. 위의 식을 사용해서 Hough Space에서 Circle을 찾는 경우는 아래와 같이 두가지 입니다. (1) 반지름을 알 때 반

Naver Blog

[OpenCV][C++] 허프 변환을 이용한 차선 인식 검출 - Hough Transform based Lane Detection 직선 선분 추출 차도 자율주행

이번에는 그동안 배웠던 허프 변환을 이용해서 좀 더 응용해 보도록 하겠습니다. https://m.blog.naver.com/dorergiverny/223125100475 [OpenCV][C++] 영상에서 직선 검출하기 - 허프 변환 (Hough Transform) HoughLinesP() 선분 찾기 지난 시간에 Hough Transform 에 대한 이론을 알아봤고, 이를 C++로 구현해봤습니다. C++로 구현해본 ... blog.naver.com 허프 변환이 가장 많이 사용되는 분야는 자율 주행에서 차선을 인식하는 분야가 아닐까 합니다. 예전에 소실점(Vanishing Point)에 대해 간략히 소개해 드린적이 있는데요. https://m.blog.naver.com/dorergiverny/223068116929 [C++] 직선(선분)의 방정식 표현 총정리 - line homogeneous coordinate 두 점 지나는 이번에는 직선 또는 선분을 나타내는 다양한 방법과 제가 추천하

Naver Blog

[C++] 영상에서 직선 검출하기 - 허프 변환 (Hough Transform) 이론 및 구현

이전에는 RANSAC을 이용한 직선 식 구하기(Line Fitting)을 알아봤습니다. https://m.blog.naver.com/dorergiverny/223111942356 [C++] Line Fitting 방법 총정리 (2) - RANSAC 이용 직선 라인 피팅 지난 번에 RANSAC에 대한 기본적인 설명과 Line 에 대한 구조체를 알려드렸습니다. https://m.blog.... blog.naver.com 이번에는 영상에서 직선들을 찾아내는 방법에 대해 알아보겠습니다. 그 방법은 많이 들어보신 알고리즘일꺼에요. 이름하여 허프 변환 (Hough Transform) 입니다. 허프 변환이란? 직선을 표현하는 방법에는 여러가지가 있다고 했습니다. https://m.blog.naver.com/dorergiverny/223068116929 [C++] 직선(선분)의 방정식 표현 총정리 이번에는 직선 또는 선분을 나타내는 다양한 방법과 제가 추천하는 방법에 대해 정리해볼까 합니다. 직선

Naver Blog

[JK 농원] 유럽풍 고급 정원수 에메랄드 그린을 소개합니다~ 김포 강화 조경수 전문

안녕하세요? 김포 농원에서 자라고 있는 1.0m~1.2m 정도 사이즈의 아이들을 소개하려고 합니다. 오늘 소개해드릴 아이들은 측백나무과에 속하는 에메랄드 그린이에요. 원래 덴마크에서 개발되어 스마라그드(Smaragd)라고도 불립니다. 비닐하우스 근처에서 햇빛을 풍부하게 받으며 행복하게 자라고 있는 아이들이에요. 사실 에메랄드 그린은 햇볕이 잘 들면서 부분적인 그늘에서 자라는게 좋다고 하네요. 너무 많은 직사광선은 아이들을 스트레스 받을 수 있다네요. 블루 앤젤들이 살짝 샘을 내듯 사진에 찍혔네요. 에메랄드 그린은 추위에 강해서 다 크면 4m까지 자란다고 합니다. 잎과 가지가 조밀하고 별도의 전정을 하지 않아도 스스로 원추형으로 수형을 유지하여 고급 정원수로 많이들 찾고 있는 스태디 셀러 아이들 입니다. 이번엔 반대편에 있는 에메랄드 그린들을 소개할께요. 부분적인 그늘이 보장되는 곳에서 자라고 있는 아이들입니다. 확실히 여럿이 모여 있으니까 보기가 좋네요. 최근 카페나 건물 앞 화분

Naver Blog

[OpenCV][C++] 영상에서 직선 검출하기 - 허프 변환 (Hough Transform) HoughLinesP() 선분 찾기

지난 시간에 Hough Transform 에 대한 이론을 알아봤고, 이를 C++로 구현해봤습니다. C++로 구현해본 이유는 실제로 동작 원리를 디버깅하며 알아보기 위함 이었습니다. https://m.blog.naver.com/dorergiverny/223121038190 [C++] 영상에서 직선 검출하기 - 허프 변환 (Hough Transform) 이론 및 구현 이전에는 RANSAC을 이용한 직선 식 구하기(Line Fitting)을 알아봤습니다. https://m.blog.naver.c... blog.naver.com 이번에는 OpenCV에서 제공하는 직선을 검출하는 방법에 대해 알아보겠습니다. OpenCV에서는 총 세종류의 Hough Transform을 제공합니다. 1. 표준 허프 변환 (Standard Hough Transform) 2. 멀티 스케일 허프 변환 (Multi-Scale Hough Transform) 3. 점진성 확률적 허프 변환 (Progressive Proba

Naver Blog

[JK 농원] 네이버를 이용한 검색어 트렌드 분석 방법 - naver trend datalab 구글 조경수 트랜드 google

우리가 어떠한 제품이나 시장의 트렌드를 알아보기 위해서는 어떻게 해야 할까요? 사업을 하신다면 특정 상품의 계절적 추이, 틈새 시장 등을 알고자 하려면 어떻게 해야 할까요? 우리는 그런 데이터가 없는데 어디서 구해야 할까요? 고맙게도 네이버와 구글 같은 검색 엔진 에서 검색어 트렌드 데이터를 제공하고 있습니다. 네이버 트렌드 아무래도 한국사람이 가장 많이 찾는 검색 엔진은 단연 네이버가 아닐까 합니다. 네이버 검색창에서 '네이버 트렌드'를 검색해 보면 아래와 같이 네이버에서 검색된 검색어와 검색횟수를 여러가지 기준으로 알아볼 수 있는 화면이 뜹니다. 주제어를 5개까지 입력할 수 있고, 주제어에 해당하는 검색어를 컴마로 구분하여 입력할 수 있는 칸이 있습니다. 그리고 검색 기간과 범위, 성별, 연령 등을 상세하게 설정해볼 수도 있습니다. 저는 작년에 출시된 쌍용, 아니 KG 모빌리티의 토레스(torres)에 대해 검색을 해봤습니다. 작년 6월에 출시되면서 큰 인기를 끌었던 쌍용을 살려

Naver Blog

[데이터 분석][Python] windows 10에 아나콘다(anaconda) 파이썬 설치 및 Jupyter 노트북 사용법

이번에는 아나콘다 설치 방법 및 Jupyter 노트북 사용법에 대해 알아보도록 하겠습니다. 아나콘다(Anaconda) 사용 전 확인 사항 아나콘다는 Visual Studio와 같은 프로그램 통합 개발 환경(IDE, Integrated Development Environment) 입니다. IDE란 프로그래머가 소프트웨어를 효율적으로 개발하도록 돕는 소프트웨어 어플리케이션입니다. 그럼 왜 아나콘다를 사용할까요? 아나콘다에는 파이썬이 사용하는 데이터 분석 등 라이브러리(명령어, 함수들)가 포함되어 있으며, 기타 간단한 통계 도구 등을 묶어서 한번에 다운로드 및 설치를 할 수 있기 때문에 편리합니다. 하.지.만. https://legal.anaconda.com/policies/en/?name=terms-of-service Anaconda Privacy Center Terms of Service Effective Date: April 30, 2020 Last Updated April 3, 2

Naver Blog

[JK 농원] 천안 아산 스파비스 온천 워터파크 가족 물놀이 - 6월 할인 정보 (하나 카드 이벤트)

지난 4월에 아산 스파비스에 놀러 갔을 때에는 비수기, 평일이었기 때문에 사람이 거의 없었어요. https://m.blog.naver.com/dorergiverny/223075445988 [JK 농원] 천안 아산 물놀이 워터파크 - 아산 스파비스 (2023년 리뉴얼 이후 최신 정보) 이번에는 지난주 금요일(4/14)에 다녀왔던 아산 온천 관광지 내에 있는 아.산.스.파.비.스. 정보를 알려드... blog.naver.com 그래서 아쿠아플레이/익사이팅리버/파도풀/슬라이드가 있는 야외를 갈 수가 없었는데요. 이번에는 현충일에 다녀왔는데, 공휴일이라 사람도 많았지만 익사이팅리버와 파도풀에서 실컷 놀았어요. 나머지는 이전 포스팅과 달라진 점이 없었고, 이번에는 지난번에 다루지 못한 야외풀에 집중해서 알려드릴께요. 아참. 이번에는 네이버 예약을 하고 갔는데, 마침 하나카드 이벤트를 하고 있었습니다. 네이버 예약이 23,000원이었는데, 하나카드는 18,000원이었어요. 잽싸게 네이버 취소하

Naver Blog

[OpenCV][C++] 에지 검출 방법 총정리 - 케니 (canny edge detection) 선분 직선 추출 모서리 캐니 테두리 강조 샤프닝 thinning

앞에서 우리는 1차 미분, 2차 미분을 통한 에지 검출(에지 강조, 샤프닝)에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223112151404 [OpenCV] [C++] 샤프닝 (sharpening) 필터 연산 총정리 (1) - 1차 미분 sobel 소벨 scharr 샤르 지난번에는 영상을 흐릿하게 만드는 스무딩 필터인 평균 필터에 대해 알아봤습니다. https://m.blog.naver.... blog.naver.com 이번에는 영상 처리 분야(물체감지, 차선 감지, 영상 분석, 문자 인식 등) 에서 에지 검출을 위해 가장 많이 사용되는 Canny Edge Detection 알고리즘에 대해 간단히 설명을 한 후 사용 방법을 알아보겠습니다. 일단 캐니 에지를 알기 위해서는 히스테리시스(hysteresis) 곡선에 대해 알아보겠습니다. 히스테리시스 (hysteresis) 곡선 히스테리시스 곡선은 전기 자기장 쪽에서 사용되는 용어 입니다.

Naver Blog

[C++] 특정 폴더 내 파일 목록 찾기 총정리 (1) - FindFirstFileA, FindNextFileA, FindClose 내용 읽기

우리가 프로그래밍을 하다보면 Data를 파일로 쓰고 읽어야 할 일이 많이 발생합니다. 오늘은 특정 폴더 내에서 확장자가 .csv로 끝나는 파일 list를 얻어오고, 그 파일들을 차례로 읽어서 내용을 변수에 담아보는 것까지 해보겠습니다. 데이터 생성 일단 함수에서 찾을 임의의 Data를 생성해보겠습니다. 간단한 문서들은 재미 없으니 임의의 이름을 가진 120명의 주소록을 만들어 보겠습니다. 1. 이름 생성하기 이름을 생성하는 함수입니다. first_name과 last_name을 미리 정해놓고 이들을 조합해서 만들어볼꺼에요. std::vector를 사용할꺼니까 #include <vector> 추가하는 거 잊지 마세요 std::string generate_name() { std::vector<std::string> first_names = { "James", "John", "Robert", "Michael", "William", "David", "Richard", "Joseph", "Th

Naver Blog

[C++] 특정 폴더 내 파일 목록 찾고 내용 읽기 총정리 (2) - stringstream sstream ifstream

지난 시간에는 특정 폴더에 확장자 또는 특정 문자열을 포함한 파일의 목록을 찾는 방법에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223114057345 [C++] 특정 폴더 내 파일 목록 찾기 총정리 (1) - FindFirstFileA, FindNextFileA, FindClose 내용 읽기 우리가 프로그래밍을 하다보면 Data를 파일로 쓰고 읽어야 할 일이 많이 발생합니다. 오늘은 특정 폴더 내... blog.naver.com 이번에는 파일을 찾았으면 그 파일의 내용을 읽어서 변수에 저장하는 방법까지 알아보도록 하겠습니다. 지난번 강의에 이어서 진행하는 만큼 꼭 숙지해 주시기 바랍니다. stringstream 이란? 파일의 내용을 읽기 위해서는 stringstream 에 대해 알아야 합니다. stringstream 이란 string 문자열에서 내가 원하는 데이터 타입의 정보를 추출할 때 사용합니다. 공백과 '\n'을 기준으로 다른

Naver Blog

[OpenCV][C++] 다각형 근사화 Ramer-Douglas-Peucker 알고리즘 - approxPolyDP() approximation polygon curve

지난번에 Douglas-Peucker 알고리즘 원리와 C++로 구현하고 테스트 하는 것까지 알아보았습니다. https://m.blog.naver.com/dorergiverny/223113215510 [C++] 다각형 근사화 Douglas-Peucker 알고리즘 원리 총정리 - DP Algorithm approxDP 이전에는 영상의 외곽선 (contour)를 찾는 알고리즘에 대해 알아보았습니다. https://m.blog.naver.com/dor... blog.naver.com 이번에는 OpenCV에서 제공하는 함수를 알아보겠습니다. 함수 원형은 아래와 같습니다. curve 2차원 점들의 좌표(입력 좌표) approxCurve 2차원 근사화된 점들의 좌표(근사화 결과) epsilon 근사화 임계치 closed 폐곡선 여부, true: 폐곡선, false: 폐곡선 아님 그럼 approxPolyDP 함수를 사용해 보도록 하겠습니다. 1. 영상 읽기 영상을 읽고 나중에 결과 표시를 위해 컬

Naver Blog

[C++] 다각형 근사화 Douglas-Peucker 알고리즘 원리 총정리 - DP Algorithm approxDP

이전에는 영상의 외곽선 (contour)를 찾는 알고리즘에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223077740655 [OpenCV][C++] 영상 외곽선(contour) 추출 총정리(3) - boundingRect, minAreaRect, minEnclosingCircle 이번에는 지난 시간에 이어 findContours() 함수로 얻어왔던 정보를 응용하여 추가적인 정보를 얻을 수 있... blog.naver.com 이번에는 이렇게 찾은 외곽선을 근사화 하는 알고리즘에 대해 알아보도록 하겠습니다. Ramer Douglas Peucker algorithm 또는 iterative end-point algorithm 이라고 불리는 DP 알고리즘은 line segment들로 이루어진 곡선이나 다각형을 근사화하는 알고리즘으로 많이 사용되는 알고리즘 입니다. 컨셉이 간단하고 강력하기 때문에 꼭 알아두시면 좋은 알고리즘입니다. DP 알고리즘

Naver Blog

[JK 농원] 더브라질 (the brazil) 스테이크 바베큐 전문점 슈하스코 - 오산점 운암뜰 한식거리 운암 공영주차장 연인 데이트 회식

오산에서 고급스러운 무한리필 스테이크를 맛보고 싶으시면 가봐야 하는 더브라질 스테이크 오산점 입니다. 슈하스코가 생각나면 떠 올려야 하는 곳 입니다. 오산역 근처, 오산시청 옆에 있는 오산의 핫플레이스 운암뜰 한식거리에 위치해 있어요. 주소: 경기도 오산시 운암로 13-10 3층 (원동 812-9) 운영시간: 12:00 ~ 22:00 주차: 운암 공영주차장 (최초 30분 500원, 10분당 250원씩 추가) 예약 하시면 더 좋습니다. 주소를 치지 마시고 운암 공영주차장으로 바로 찍으시고 가시면 편합니다. 주차 비용은 비싸지 않아요. 마음놓고 주차하시면 됩니다. 엘리베이터를 타고 3층으로 올라가시면 건물 외벽 대비 깔끔한 입구가 보입니다. 포토존도 있어요. 여기서 잠깐~! 슈하스코란 고기와 채소를 쇠꼬챙이에 끼워서 숯불에 굽는 잔치할 때 먹는 브라질 전통 요리를 뜻합니다. 홀은 넓어요. 브라질에 온 것 같은 느낌이 들지는 않지만 비교적 깔끔한 이국적인 듯한 느낌의 내부입니다. 셀프바도

Naver Blog

[JK 농원] 고양이미용 미오 무마취 미용 & 호텔 캣 뷰티살롱 - 용인 수지 수원 예약제 고양이전용

오늘은 지난주에 다녀온 고양이 전용 뷰티 샵 '고양이미용 미오' 에 대한 후기를 소개하려고 합니다. 주소: 경기도 용인시 기흥구 서천동로 91번길 8-11 1층(농서동 440) 주차: 가게 앞 주차 가능 영업시간: 10:00 ~ 20:00 (월요일 휴무) 전화번호: 010-7506-0789 서천고등학교 맞은편 서천 카페 거리 안에 있습니다. 예약제로 운영이 되는 곳이라 네이버 예약은 꼭 하셔야 합니다. 특히 처음 가시는 분들은 예약 페이지 가면 아래와 같은 정보를 적어 주셔야 합니다. (전화 예약도 가능합니다.) https://map.naver.com/v5/entry/place/1022078649?lng=127.0710686&lat=37.2333474&placePath=%2Fhome%3Fentry=plt&c=15,0,0,0,dh 네이버 지도 공간을 검색합니다. 생활을 연결합니다. 장소, 버스, 지하철, 도로 등 모든 공간의 정보를 하나의 검색으로 연결한 새로운 지도를 만나보세요. m

Naver Blog

[OpenCV] [C++] 샤프닝 ( sharpening ) 필터 연산 총정리 (1) - 1차 미분 sobel 소벨 scharr 샤르 filter

지난번에는 영상을 흐릿하게 만드는 스무딩 필터인 평균 필터에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223096804790 [OpenCV][C++] 평균 필터 스무딩(smoothing) 연산 블러링(blurring) 총정리 이번에는 필터링에 대해 간단히 알아 본 후에 영상 노이즈 제거하는 방법 중 가장 기본인 평균 필터에 대해... blog.naver.com 이번에는 영상을 날카롭게 하는 샤프닝 연산에 대해 알아보겠습니다. 샤프닝 연산은 픽셀 값이 급격하게 변하는 경계를 검출하여 경계에 있는 픽셀을 강조하는 연산입니다. 이를 위해서는 영상을 미분하는 방법이 있습니다. 미분은 1차 미분과 2차 미분이 있고요. 이번에는 1차 미분 필터인 Sobel, Robert, Prewitt 등이 있고 Sobel 의 단점인 커널의 중심에서 멀어질 수록 엣지 방향성의 정도가 떨어지는 현상을 개선한 필터인 Scharr 필터가 있습니다. 이번에는 이 중 가장

Naver Blog

[OpenCV][C++] 샤프닝 (sharpening) 필터 연산 총정리 (2) - 2차 미분 Laplacian LoG DoG filter 에지 종류

이전에 우리는 1차 미분인 sobel 필터, Scharr 필터에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223112151404 [OpenCV] [C++] 샤프닝 (sharpening) 필터 연산 총정리 (1) - 1차 미분 sobel 소벨 scharr 샤르 지난번에는 영상을 흐릿하게 만드는 스무딩 필터인 평균 필터에 대해 알아봤습니다. https://m.blog.naver.... blog.naver.com 이번에는 2차 미분 필터에 대해 알아보겠습니다. 에지의 종류 2차 미분 필터를 알아보기에 앞서 미분 필터의 장점은 에지를 강조할 수 있다는 것 이었습니다. 그럼 에지의 종류는 어떤 것들이 있을까요? 크게 아래와 같이 4가지 종류의 에지가 있습니다. 1. 스텝 에지(Step Edge) 경계의 기본은 뭐니뭐니해도 스텝 에지겠죠? 에지의 정의가 영상의 밝기 값이 급격히 변하는 곳이니까요. 밝기 값이 갑자기 밝아지거나 어두워지는 에지를 스

Naver Blog

[C++] Line Fitting 방법 총정리 (2) - RANSAC 이용 직선 라인 피팅

지난 번에 RANSAC에 대한 기본적인 설명과 Line 에 대한 구조체를 알려드렸습니다. https://m.blog.naver.com/dorergiverny/223111900224 [C++] Line Fitting 방법 총정리 (1) - RANSAC 의 이해 Robust Estimation 방법 이번에는 Line Fitting 을 위한 기본 원리를 알아보겠습니다. RANSAC은 Robust Parameter Estim... blog.naver.com 이번에는 RANSAC을 구현해보고, 마우스 이벤트를 받고 임의의 점들을 입력하면 그 점들에서 RANSAC을 이용한 Line Fitting을 하는 것을 구현해 보도록 하겠습니다. RANSAC의 구현 1. 두 개의 임의 점 샘플링 일단 두 개의 점을 샘플링을 해야 합니다. 이전에 알려드렸던 난수(random number) 생성하는 방법 중 fancy한 random 라이브러리를 이용한 방법으로 구현해 보겠습니다. https://m.blog.n

Naver Blog

[C++] Line Fitting 방법 총정리 (1) - RANSAC 의 이해 Robust Estimation 라인 피팅

이번에는 Line Fitting 을 위한 기본 원리를 알아보겠습니다. RANSAC은 Robust Parameter Estimator 방법들 중 하나입니다. Robust 하단 말은 데이터 중에 outlier가 있어도 처리가 가능하다는 뜻이고, M-estimator, LMedS 등이 있습니다. RANSAC(RANdom SAmple Consensus) 이란? RANSAC은 직역하면 무작위 샘플 일치 방법이란 뜻입니다. 이는 여러 데이터가 있을 때 노이즈(outlier)를 제거하고 가장 적합한 모델을 예측할 때 사용되는 알고리즘입니다. RANSAC은 임계치(threshold) 이상의 데이터를 완전히 무시하는 특성이 있어서 왜란(outlier)에 강건한 알고리즘이지만 임계치 설정이 잘못될 경우에는 이상치(outlier)를 제거하지 못할 수도 있습니다. 알고리즘의 History를 잠깐 살펴보면, RANSAC은 Fischeler와 Bolles가 1981년에 처음 제안한 Model Fitting

Naver Blog

[OpenCV][C++] 컬러 영상의 HSV 색공간 변환 및 예시 - 특정 색깔 추출(segmentation) 색상 채도 명도

이번에는 컬러 영상 처리를 할 때 가장 많이 사용되는 색공간에 대해 간략히 알아보겠습니다. 빛의 삼원색은 빨간색(R), 초록색(G), 파란색(B) 입니다. 이 세가지 색 조합으로 모니터 등 색을 표현합니다. OpenCV에서 컬러 영상은 BGR 순서로 구성되어 있습니다. https://m.blog.naver.com/dorergiverny/223042534893 [OpenCV][C++] cv::Mat 클래스 총정리(4) - 컬러(color) 원소 접근, 3채널 지난번에는 gray scale 영상에서 원소에 접근하는 방법에 대해 알아봤는데, https://blog.naver.com/dorerg... blog.naver.com 이러한 세가지 색 성분의 조합으로 색을 표현하는 방식을 BGR 색 공간 표현이라고 합니다. 컬러 영상 처리에서는 색상 구분이 용이한 HSV 색공간을 사용하거나 휘도 성분이 구분되어 있는 YCrCb, YUV 등의 색 공간을 사용하는 것이 좋습니다. OpenCV에서는 이

Naver Blog

[JK 농원] 서울 근교 광주 곤지암 글램핑 후기- 더포레스트 캠핑장, 팀업캠퍼스

지난 주말 가족과 함께 글램핑을 다녀왔어요. 오랫만에 가족끼리 간 글램핑이기에 아이들이 너무 좋아했어요. 팀업캠퍼스는 무박 캠핑도 가능합니다. 출처: https://www.tuc.co.kr/ 팀업 더포레스트 캠핑장에는 두꺼비들이 많이 사나봐요. 팀업 캠퍼스 사이트에 들어가시면 두꺼비 로드킬 안내가 있어요. 출처: 팀업캠퍼스 홈페이지 팀업 캠퍼스는 좀 커요. 야구장도 있고(시합도 많아요) 가족끼리 체험장도 있고, 캠핑장도 있어요. 출처: 팀업캠퍼스 홈페이지 저희는 Activar에 갔다가 글램핑을 했어요. 팀업캠퍼스 조감도에요. Activar는 Multiplex&Rooftop 시설이라고 써 있는 곳에 있고요. 야구장쪽으로 들어가시면 됩니다. 그리고 글램핑장은 왼쪽 상단에 The 4-Rest 캠핑장에 있습니다. 출처: 팀업캠퍼스 홈페이지 주소: 경기도 광주시 곤지암읍 경추대로 729 이용시간: 오후 3시(입실) ~ 오전 11시(퇴실) 주차: 주차장 완비(무료) 지도로 보자면, 곤지암 톨게

Naver Blog

[JK 농원] 동탄 호수공원 분위기 좋은 카페 루프탑 - 라크드미엘 (라끄드미엘) 후기 연인 데이트 가족 모임

오늘은 제2 동탄에 있는 호수 공원이 정말 한눈에 보이는 뷰 맛집 베이커리 카페 라.크.드.미.엘 후기를 공유할께요. 오늘 가봤는데, 후기를 꼭 오늘 쓰고 싶네요. 위치는 아래와 같습니다. 사실 빨간 네모칸을 친 건물에 있는데, 네이버에는 오른쪽에 있는 건물로 나오네요. bing 지도를 보니까 제대로 나왔어요. 주소: 경기도 화성시 동탄대로5길 32 루나갤러리 3층 301호 영업시간: 10:00 ~ 22:00 주차: 10,000원 1시간, 20,000원 2시간 ... 화성시 지역 화폐 결제가 가능한 곳이에요. 입구부터 으리으리한 카페~ 들어서자마자 감탄이 나오는 인테리어. 카운터와 커피 등 음료 만드는 곳이 깔끔하고 Open이 되어 있어 믿을만 했어요. 그리고 천장이 정말 높아서 가슴이 뻥 뚫리는 시원한 공간이에요. 베이커리 카페 답게 최고 수준의 베이커리들이 쫘~악 전시되어 있어요. 루프탑과 Private Room이 1개 있는데, 미리 예약을 해야 합니다. 루프탑은 전날까지 예약을

Naver Blog

[JK 농원] 동탄역 수제팥 전문점 - 팥꽃넝쿨, 팥죽, 붕어빵 국산팥

오늘은 얼마전 인상깊게 먹었던 국산 수제 팥 전문점 방문기를 써 볼께요. 제가 가본 곳은 바로~ 팥.꽃.넝.쿨. 입니다. 큰 길에서 들어가는 입구 상가 안쪽에서 들어가는 입구 주소: 경기 화성시 동탄대로 557-9, B동 122호, 우성르보아시티 영업시간: 09:00 ~ 21:00(평일, 토요일, 일요일(1,3번째 일요일은 정기 휴무) 주차: 건물 주차 가능(2시간권 제공) 국산 수제팥 전문점으로 메뉴는 아래와 같아요. 들어가시면 내부에서 드실 수 있는 테이블이 있어요. 저 벽에 걸려있는 이쁜 메뉴 소개판이 보이시나요? 팥차와 야채칩 동결건조, 식혜 등을 팔고 있었어요. 붕어빵은 아래와 같이 동그랗게 생겼어요. 일단 가격이 있지만 실내에서 위생적으로 구워낸 붕어빵이고, 특히 국산 팥이 듬뿍 들어가있다길래 구매해봤어요. 집에 포장해서 먹어봤는데, 붕어빵 내부에 있는 팥이 정말 맛있더라고요. 그런데 한가지~! 붕어빵의 바삭함이 없었어요. 그 때 그 때 다르다면 할 수 없지만 제가 먹었을

Naver Blog

[OpenCV][C++] cv::Rect 클래스 총정리 - 유용한 함수 활용법 contains 두 사각형 교차

이번에는 OpenCV의 기본 자료형이지만 생각보다 유용한 함수가 많은 사각형을 표현하는 cv::Rect 에 대해 총정리를 해 보겠습니다. 멤버 변수 cv::Rect의 멤버 변수로는 x, y, width, height 가 있습니다. 멤버 함수(method) cv::Rect의 메소드로는 tl(), br(), size(), area(), contains() 등이 있습니다. tl()은 사각형의 좌상단 좌표를, br()은 사각형의 우하단 좌표를 반환하는 함수 입니다. size()는 cv::Size 형의 width, height를 반환하는 함수이고, area()는 면적을 반환합니다. contains()는 입력된 좌표가 사각형에 포함되어 있는지 아닌지를 반환해줍니다. 사용 가능 연산자 사용 가능 연산자로는 =, +, -, *, ==, != 등이 있습니다. 멤버 함수 및 연산자를 유용하게 사용할 수 있는 꿀팁~ 을 알아보겠습니다. 먼저 사각형을 그릴 canvas를 여러개 생성해 놓습니다. cv::

Naver Blog

[OpenCV][C++] 템플릿 매칭 (template matching) 총정리(2) - 영상 회전 rotated matchTemplate

지난번에 템플릿 매칭의 기본에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223108149822 [OpenCV][C++] 템플릿 매칭 (template matching) 총정리(1) - matchTemplate() 이번에는 템플릿 매칭에 대해 알아보겠습니다. 템플릿 매칭(template matching)은 원본 영상에서 템플릿 영... blog.naver.com 이번에는 그 것을 좀 더 응용하여 좀 더 멋진 소스를 만들어 보겠습니다. 템플릿 매칭 함수 만들기 템플릿 매칭 방법에 따라 SQDIFF는 최소값을 갖는 위치가 매칭 위치이고, 나머지 CCORR 또는 CCOEFF 는 최대값을 갖는 위치가 매칭 위치입니다. 가끔 구현을 하다보면 헷갈리는 경우가 발생할 수 있어서 함수로 만들어 놓으면 좋을 것 같습니다. 지난번에 템플릿 매칭 관련 기본 이론은 간략히 살펴보았으니 오늘은 바로 실전에 들어갑니다. 일단 함수는 입력 영상과 템플릿 영상은 e

Naver Blog

[OpenCV][C++] 템플릿 매칭 (template matching) 총정리(1) - matchTemplate minMaxLoc SQDIFF CCORR CCOEFF

이번에는 템플릿 매칭에 대해 알아보겠습니다. 템플릿 매칭(template matching)은 원본 영상에서 템플릿 영상(template image)이라고 불리우는 작은 크기의 부분 영상과 동일한 또는 가장 유사한 영역의 위치를 찾아내는 방법으로 물체 인식(검출), 스테레오 영상 등의 대응점 검출 등에 사용될 수 있습니다. 매칭 방법은 상관관계(correlation), SAD(Sum of Absolute Difference) 등의 방법을 사용합니다. 템플릿 매칭의 동작 원리 템플릿 매칭의 동작은 템플릿 영상을 원본 영상 전체에 순회하면서 매칭 방법에 따라 유사도를 계산합니다. 그 이후 유사도가 가장 높은 위치를 찾으면 그 위치가 매칭 결과가 되는 원리입니다. 템플릿 매칭 함수 OpenCV에서 제공하는 템플릿 매칭 함수의 원형은 아래와 같습니다. src 입력 영상 tmpl 템플릿 영상 result 유사도 결과 영상, Float32 타입 영상 method 유사도 계산 방법 mask 마스크

Naver Blog

[JK 농원] 동탄 메디피움 종합 건강검진 후기 - 위내시경 대장내시경 깔끔하고 친절한 곳

이번에 건강검진을 받은 곳이 바로 동.탄. 메.디.피.움. 이었습니다. 오늘은 동탄 메디피움 후기를 공유해보겠습니다. 경기 남부권에서는 평이 좋은 건강검진 센터입니다. 동탄역과 가까워서 교통이 편리하고 롯데백화점 옆이어서 쇼핑도 가능한 역세권, 백세권 건강검진 맛집입니다. 홈페이지는 아래와 같아요. https://medipiumdt.co.kr/index.asp 메디피움-동탄 차별화된 의료 서비스로 건강한 삶, 행복한 삶을 설계하는 메디피움입니다. medipiumdt.co.kr 출처: 동탄 메디피움 홈페이지 건강의 비결은 정기적인 건강검진부터 시작된다는 사실!~! 주소: 경기도 화성시 동탄대로 557-9(오산동 967-3) 우성르보아시티 주차: 무료(건물 내 주차), 검진 후 1시간 추가 제공 (수면 내시경을 하실 경우 대중교통 이용을 권장합니다.) 건물 내 지하 주차장은 넓어서 주차 걱정 없습니다. 건강검진 전문 기관으로 깔끔하고 시설이 좋습니다. 곳곳에 있는 의자(대기 공간)이 마

Naver Blog

[OpenCV][C++] 영상 분할 ( image segmentation ) 총정리(3) - GrabCut graphcut setmousecallback

지난번에는 워터쉐드 (watershed) 알고리즘에 대해 알아봤습니다. https://m.blog.naver.com/dorergiverny/223099559423 [OpenCV][C++] 영상 분할(image segmentation) 총정리 (1) - 워터쉐드 (watershed) 알고리즘 이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 ... blog.naver.com 이번에는 GrabCut 알고리즘에 대해 간단히 알아보도록 하겠습니다. GrabCut 알고리즘이란? GrabCut 알고리즘은 영상에서 배경과 전경을 구분하여 전경을 추출하는 알고리즘으로 그래프 컷(graph cut) 기반의 영역 분할 알고리즘 입니다. 그래프 컷 알고리즘은은 영상을 그래프라고 생각해보면, 각 픽셀들을 정점으로 생각할 수 있고 정점간 간선을 유사도라고 생각하면 아래와 같은 그래프로 생각해볼 수 있습니다. 이 그래프에서 최대 유량 알고리즘을 이용하여

Naver Blog

[JK 농원] 조경수 화분 재배와 노지 재배의 장단점 비교

이번에는 조경수를 재배할 때 화분에 재배를 해야 하는지 노지에서 재배를 해야 하는지 고민에 대한 저의 의견을 공유할꺼에요 저 나름대로의 경험을 토대로 장단점을 비교해 볼꺼에요 지금은 운영하고 있지 않지만 예전에 세종 땅에 노지 재배를 했었습니다. 에메랄드 그린도 아래와 같이 묘목부터 심었었고, 에메랄드 골드도 심었었어요. 멀칭 비닐을 뚫고 잡초들이 자생을 해서 부직포 타입의 제초 매트를 구매해서 주변에 잡초가 자라지 못하도록 세팅해보기도 했어요. 체계도 없이 경험 삼아 이것저것 다 해보면서 종류별로 키워봤어요. 그러다가 얻은 결론은, 화분에서 재배를 해야 고객들에게 좋은 상태로 조경수를 제공할 수 있겠다 입니다. https://blog.naver.com/juniper_garden/223021605629 [나무 재테크] 2-1. 농사얘기 없는 농사방법 - 식재편 #주니퍼가든 #조경수재테크 #나무농사 #나무재테크 #직장인재테크 #직장인부업 #부업 #n잡 #추천 "유... blog.nav

Naver Blog

[OpenCV][C++] 기하학적 변환 (Geometric Transform) 총정리 - warpAffine, warpPerspective transformation

지난 번에 영상 회전에 관해 알아보면서 warpAffine() 함수 사용법에 대해 간단히 알아 보았습니다. https://m.blog.naver.com/dorergiverny/223103254105 [OpenCV][C++] 영상 회전(image rotation)하는 방법 - getRotationMatrix2D(), warpAffine() 이번에는 영상을 특정 각도로 회전시키는 방법에 대해 알아보겠습니다. 2D 회전 행렬은 아래와 같습니다. ... blog.naver.com 이번에는 좀 더 상세히 알아보도록 하겠습니다. 기하학적 변환(Geometric Transformation)이란? 기하학적 변환은 영상을 사용자가 원하는대로 확대, 축소, 위치 변경, 회전, 왜곡 등을 하는 이미지 변환하는 것을 의미합니다. 즉 영상을 구성하는 픽셀의 위치들을 재배치하고 새로운 픽셀 값을 생성하여 넣는 것(interpolation)을 포함합니다. 지난번에 동차 좌표계(homogeneous coordi

Naver Blog

[OpenCV][C++] 히스토그램 스트레칭 ( stretching ), 평활화 ( equalization ) - equalizeHist() histogram

지난번에 히스토그램에 대해서 간단하게 알아봤습니다. https://m.blog.naver.com/dorergiverny/223105068154 [OpenCV][C++] 영상에서 히스토그램 (histogram) 구하기 - cv::calcHist 이번에는 영상 분석에서 가장 중요한 히스토그램에 대해 알아보도록 하겠습니다. 통계학에서 히스토그램은 ... blog.naver.com 이번에는 히스토그램 그리는 함수를 이용하여 히스토그램을 조정하여 영상을 보기 좋게 만드는 방법에 대해 알아보겠습니다. 히스토그램 스트레칭 (Histogram Stretching) 히스토그램 스트레칭은 히스토그램이 grayscale 전 구간에서 골고루 나타나도록 변경하는 변환입니다. 아래와 같은 영상의 히스토그램이 오른쪽과 같은 분포를 가지고 있다면, 이 분포의 최소값(min)과 최대값(max)을 0과 255로 매핑 시킨 밝기 분포를 갖는 영상으로 만드는 변환입니다. 이것을 수식으로 나타내면, 아래와 같이 쓸 수

Naver Blog

[OpenCV][C++] 영상에서 히스토그램 (histogram) 구하기 - cv::calcHist graph draw

이번에는 영상 분석에서 가장 중요한 히스토그램에 대해 알아보도록 하겠습니다. 통계학에서 히스토그램은 데이터의 빈도수(frequency)를 막대그래프로 표시한 것으로 데이터의 확률밀도 함수(probability density function)를 추정할 수 있는 지표가 됩니다. 영상에서 히스토그램은 영상 화소의 분포에 대한 중요한 정보입니다. 예를 들어 아래와 같은 3x3 영상이 있다고 하면, 0의 밝기가 3개, 1의 밝기가 4개, 2의 밝기가 2개가 있습니다. 그럼 아래와 같은 히스토그램을 그릴 수 있습니다. C/C++로 직접 histogram을 계산하는 소스는 아래와 같이 구현할 수 있습니다. cv::Mat src = cv::imread("lena.bmp"); int hist[256] = {0, }; for(int j = 0; j < src.rows; ++j) { for(int i = 0; i < src.cols; ++i) { hist[src.at<uchar>(j, i)++; } }

Naver Blog

[OpenCV][C++] 영상 분할 (image segmentation) 총정리(2) - 워터쉐드 (watershed) 알고리즘, cv::distanceTransform

이전에는 마우스 이벤트를 활용하여 markers 영상을 만들고 이를 기반으로 watershed 알고리즘을 수행하는 방법을 알아보았습니다. https://m.blog.naver.com/dorergiverny/223099559423 [OpenCV][C++] 워터쉐드 (watershed) 알고리즘 기반 영상 분할(image segmentation) 총정리 (1) 이번에는 영상 분할의 기초 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 보도... blog.naver.com 이번에는 영상 분할을 좀 더 응용해서 markers 영상을 직접 만들어보고 watershed segmentation을 수행하는 방법을 알아보겠습니다. 이번에는 거리변환(distance Transform) 함수에 대해 알아볼텐데요. 거리 변환이라고 불리는 distanceTransform은 이진화 영상에서 픽셀값이 0인 배경으로부터의 거리를 나타냅니다. 즉 배경으로부터 멀리 떨어져있을수록 높은 픽셀

Naver Blog

[OpenCV][C++] 영상 회전(image rotation)하는 방법 - getRotationMatrix2D(), warpAffine()

이번에는 영상을 특정 각도로 회전시키는 방법에 대해 알아보겠습니다. 2D 회전 행렬은 아래와 같습니다. OpenCV에서는 회전 중심을 선택하고 영상의 크기를 조절할 수 있는 함수를 제공합니다. OpenCV에서 제공하는 함수의 수식은 아래와 같습니다. Cx와 Cy는 영상 회전 중심 좌표를 의미하며, s는 scale 값을 의미합니다. 위의 행렬을 계산해주는 함수가 바로 getRotationMatrix2D() 함수 입니다. 함수의 원형은 아래와 같습니다. center 회전 중심 좌표 angle 회전 각도, degree 단위, (양수: 반시계 방향, 음수: 시계 방향) scale 영상 스케일 조정 값 반환값 회전 행렬 이 행렬을 이용해서 영상을 회전시키기 위해서는 warpAffine() 함수를 사용합니다. 이는 Affine 변환을 해주는 함수로 지난번에 Affine Geometry 설명 시 잠깐 언급한 적이 있습니다. https://m.blog.naver.com/dorergiverny/22

Naver Blog

[OpenCV][C++] 영상 분할(image segmentation) 총정리 (1) - 워터쉐드 (watershed) 알고리즘 rainfall

이번에는 영상 분할의 기본적인 방법인 워터쉐드 알고리즘에 대해 간단히 알아 본 후 영상 분할 실습을 해 보도록 하겠습니다. watershed 알고리즘 watershed 알고리즘은 영역 기반 분할(region-based segmentation) 의 한 방법으로 영상의 밝기 값의 유사성에 근거하여 영역을 분할하는 방법입니다. 다시 말하면, 영상의 픽셀 값을 높이로 생각하고 영상을 2차원 지형으로 가정할 때 물을 채우고 물 웅덩이로 분할된 영역으로 분할하는 알고리즘 입니다. watershed는 크게 Rainfall, Flooding 의 두가지 방법으로 나눌 수 있습니다. Rainfall: 지형의 고도가 높은 지점에서 물방울을 떨어뜨려 고도가 낮은 물 웅덩이를 만드는 방법 Flooding: 물을 고도가 낮은 골짜기부터 채워 물 웅덩이를 만드는 방법 높이가 높은 값을 갖는 픽셀(밝은 값)을 봉우리(peak) 또는 워터쉐드 라인(watershed line)이라고 하고, 낮은 값을 갖는 픽셀을

Naver Blog

[JK 농원] 농원 배치 후기 - 나무 파렛트 위에서 화분 재배하기(1)

이번에는 김포 농원을 어떻게 꾸몄는지에 대해 설명드릴까해요. 지난번에 평탄화, 배수로 작업에 대해 후기를 적었었는데, https://blog.naver.com/dorergiverny/223075578422 [JK 농원] 김포 월곶 농원 평탄화/배수로 작업 이번에는 4주 전에 진행했던 농원 평탄화 작업에 대해 공유할까 합니다. 겨울내내 얼어있던 땅이 녹기 시작... blog.naver.com 그 이후에 진행되었던 작업에 대해 공유드립니다. 제의 본업이 SW 개발이다 보니 프로그래밍 관련 강좌에 치중하고 있어서 한달전 작업했던 내용들을 뒤늦게 올리고 있습니다. 그래도 주말마다 꾸준히 김포 농원을 가꾸고 있답니다. 저희는 모든 조경수를 화분재배로 하고 있습니다. 화분재배의 장단점은 다음에 기회되면 말씀드리기로 하고,... 그래서 화분재배를 할 경우 잡초와의 싸움이 또 가장 큰 난관이죠. 그래서 저희는 평탄화 작업 이후에 아래와 같이 제초매트를 깔았어요. 제초매트를 깐 곳에는 잡초가 올라오

Naver Blog

[JK 농원] 물탱크 피팅 후기 - 비전문가가 물탱크 피팅한 이야기

오늘은 2개월전에 진행했던 물탱크 피팅에 관한 내용을 적어보려고 합니다. 저희는 기존에 사용하던 물탱크를 개조하면서 기존 구멍을 막아보면서 이것저것 테스트 해 봤어요. 아래와 같은 스텝으로 진행을 했고, 물탱크가 새거이신 분들은 기존 부속 제거하고 수밀 테스트 부분은 생략해도 됩니다. 1. 기존 연결 부속 제거 기존에는 아래와 같이 피팅 신주와 직접 연결이 되어 있었습니다. 저희는 전문가가 아니기 때문에 연결을 해제하는 방법을 모르겠더라고요. 그리고 오래된 부속들은 결국 나사산이 빠가날 수도 있어서 재활용 생각은 금물~!! 새로 피팅 신주를 구매하신 후 구멍을 막고 피팅을 하시는 것을 추천합니다. 저희는 결국 드릴로 신주 근처에 하나씩 구멍을 낸 후에 해당 부분을 도려냈습니다. (사실 작업에 집중하느라 사진이 많이 없어요~) 2. 자재 구매 내구성을 생각해서 황동 신주로 구매를 했어요. PE관 40파이 짜리와 연결하기 위해 40A 사이즈를 구매했습니다. 황동 또는 스텐 신주는 여러가

Naver Blog

[정리]Template의 기본 개념

C++는 인자의 개수나 타입이 다른 경우 동일한 이름을 가지는 함수를 여러개 만들 수 있다. [장점] 1. square 함수는 2개가 있지만 함수 이름이 동일하므로 사용자 입장에서는 하나의 함수로 생각하고 사용할 수 있다. 2. 사용법이 쉬운 일관된 형태의 라이브러리를 만들 수 있다. [단점] 1. square 함수는 인자의 타입과 리턴 값의 타입만을 제외하고 나머지 코드는 동일하다. 2. 유사한 코드를 여러번 만드는 일이다. "코드를 자동으로 생성할 수 있는 방법" 은? C/C++에는 다음의 2가지 방법으로 함수의 틀을 만들 수 있다. 1. 매크로 사용 2. 템플릿 사용 1. 매크로 사용 ※ 매크로 작성 시 여러 줄일 경우 끝에 \를 붙여준다. 매크로를 사용하여 코드를 생성하는 것은 컴파일러가 아닌 전처리기에 의해서 생성되는 것이기 때문에 type을 추론할 수 없어서 MAKE_SQUARE(int) 식으로 생성한다. 2. 템플릿 사용 개발자가 함수(또는 클래스)의 틀(템플릿)을 제공

Naver Blog

[정리] Template Instance화(1/2)

템플릿 인스턴스화란, 함수 또는 클래스의 틀인 템플릿으로부터 실제 함수(또는 클래스)를 생성하는 과정 템플릿을 인스턴스화 하는 방법 1. 명시적 인스턴스화(Explicit Instantiation): 실제 템플릿을 사용하기 전에 명시적으로 함수/클래스 코드를 생성하라고 지시하는 것 2. 암시적 인스턴스화(Implicit Instantiation): 명시적으로 인스턴스화를 하지 않고 함수/클래스 템플릿을 사용하는 것 1. 명시적 인스턴스화 . 템플릿 함수 명시적 인스턴스화 .템플릿 클래스 명시적 인스턴스화 2. 암시적 인스턴스화 하지만 명시적으로 인스턴스화를 하지 않아도, 소스 코드 내에 템플릿을 사용하는 코드가 있으면 컴파일러에 의해 "암시적 명시화"가 발생하기 된다. 암시적 인스턴스화가 되려면 템플릿 인자 T의 타입이 결정되어야 한다. 템플릿 인자 T의 타입은 다음과 같이 결정될 수 있다. - 사용자가 템플릿 인자의 타입을 전달하는 경우 - 함수 인자를 통해서 컴파일러가 추론(ty

Naver Blog

[정리] Template Instance화(2/2)

함수 템플릿의 컴파일러에 의한 인자 추론을 막는 방법 Identity identity에 대해 살펴보자. foo(3);의 경우 컴파일러는 3을 가지고 T의 타입을 결정해야 하는데, identity는 클래스 템플릿이므로 컴파일러가 타입을 결정할 수 없다. 컴파일러에 의한 타입 추론을 사용할 수 없게 하는 까닭은? 컴파일러에 의해 결정된 타입이 문제가 될 때 함수 사용자가 직접 타입을 전달하기 위해 사용한다. 대표적인 경우가 "완벽한 전달자(perfect forwarding)"에서 사용되는 std::forward<> 함수이다.

Naver Blog

[정리] 지연된 인스턴스화

템플릿은 함수 또는 클래스를 만드는 틀일 뿐이다. 즉 사용자가 템플릿을 사용할 경우에만 비로소 실제 함수로 생성된다. 위의 코드는 에러를 발생한다. 하지만 이를 template으로 바꿔보면, 위의 코드는 에러가 나지 않는다. 이는 foo라는 함수를 인스턴스화 하지 않았기 때문에 foo라는 함수를 생성하지 않은 것이다. 그럼 좀 더 고민하여 아래와 같은 코드를 보자 비록 foo(0)는 실행시간에 절대 호출되지 않지만 foo(int a)는 생성된다. 따라서 컴파일 에러 발생하게 된다. C++17에서 if constexpr 이란 문법이 새롭게 추가되었다. 이는 컴파일 시간에 조건을 검사하므로 조건이 거짓으로 결정될 경우 아래와 같은 코드는 에러가 발생하지 않는다.

Naver Blog

[정리] Template Type Deduction

Type을 조사하는 방법 1. C++ 표준의 typeid() 연산자 사용 . const, volatile, reference를 조사할 수 없다. 2. boost의 type_index 라이브러리 사용 . const. volatile, reference를 모두 조사할 수 있다. C++표준 RTTI를 사용한 타입 조사 결과는 int, int, double, double로 조사된다. 이유는 typeid(T)는 const를 조사할 수 없기 때문이다. boost::type_index 라이브러리 사용한 타입 조사 결과는 int, int const, double, double const로 조사된다. boost 라이브러리는 const를 조사할 수 있다. Type Deduction이란, 컴파일러가 함수 인자를 통해서 T의 타입을 결정하는 과정 c의 정확한 타입은 const int 이므로 에러 발생이 예상된다. r의 정확한 타입은 int& 이므로 T가 int&로 결정되게 된다면, sum()을 실행하고나

Naver Blog

[정리] Generic Copy Constructor

템플릿은 어떤 타입도 함수도 아니다. 단지 컴파일러에 의해서 함수나 타입을 만들어 낼 때 사용될 뿐이고, 컴파일이 끝난 뒤에는 목적 코드에는 생성된 함수나 클래스만 남아 있고 템플릿 자체는 남아있지 않게 된다. 일반함수에서는 type을 지정해 주어야 하지만 멤버함수의 경우에는 지정하지 않아도 컴파일러가 Complex<T> c로, Complex<T> c2;로 해석하기 때문에 문제가 되지 않는다. Complex는 템플릿이고, Complex<T>는 타입이다. 클래스 템플릿의 기본 모양을 살펴보자. 생성자의 디폴트 파라미터는 T r = {} 식으로 쓴다. 함수 인자와 복사 생성자는 Complex<T> 형태로 쓴다. 클래스 선언부에 멤버 함수 선언하고 실제 구현을 할 때 template<typename T>를 반드시 표기해야 한다. static 변수의 경우 클래스 외부에 선언을 해야 한다. 클래스 템플릿의 멤버 함수 템플릿을 사용할 경우, template<typename T> template

Naver Blog

[정리] template 과 friend 함수

일반 함수도 있고, 함수 템플릿도 있다면 어떤 함수를 사용하게 될까? 템플릿을 사용하지 않고 일반 함수를 사용하게 된다. 그럼 foo(int) 버전 함수를 선언만 한다면? 컴파일러는 foo(int) 선언이 있으므로 foo(int)를 선택한다. 하지만 링크시에 foo(int)의 구현부를 찾을 수 없기 때문에 링크 에러가 발생한다. Point 클래스를 템플릿으로 바꿔보자. 에러가 난다. 이유와 해결책을 알아보자. friend 함수에서 Point<T>& 은 클래스 템플릿의 T로 인식한다. 일반 함수에 대한 템플릿 버전이 있지만 Point<int>를 선언하면서 클래스 템플릿의 모든 T는 int로 정해지고 따라서 friend의 함수도 const Point<int>& p라고 인식을 하기 때문에 선언은 있지만 구현부가 없다는 링크 에러를 뱉어낼 것이다. 클래스 T가 결정되면 friend 함수는 일반함수가 되는 것이다. [정리] 1. 함수 템플릿보다는 일반함수가 우선해서 선택된다. (exactly

Naver Blog

[정리] template 과 typename

1. "클래스 이름::" 으로 접근 가능한 요소들 - 값: enum 상수, static 멤버 변수 - 타입: typedef, using 2. 템플릿 의존적으로 타입의 이름에 접근할 때에는 typename 카워드를 사용한다. T::DWORD 컴파일러가 DWORD를 값으로 해석 typename T::DWORD 컴파일러가 DWORD를 타입으로 해석 3. 템플릿이 아닌 경우 typename을 붙이면 안된다. typename T::DWORD * p; //ok typename Test::DWORD * p; // error T::DWORD를 어떻게 해석할까? 1. DWORD를 값으로 해석하는 방법 . DWORD는 T 타입 안에 있는 "static 멤버 데이터 또는 enum 상수"인데 전역 변수 p와 곱하기를 하고 있다. 2. DWORD를 타입으로 해석하는 방법 . DWOR은 T 타입 안에 있는 내포 클래스 또는 typedef 인데, 타입의 포인터 변수 p를 선언하고 있다. 컴파일러는 기본적으로

Naver Blog

[정리] using

c++ 11 에 추가된 using을 사용하면 typedef처럼 기존 타입의 별칭을 만들 수 있다. typedef에 비해 using이 가지는 장점 1. typedef는 type의 별칭만 만들 수 있다. 2. using은 type 뿐만 아니라 template의 별칭도 만들 수 있다. typedef를 사용할 경우 2개의 별칭을 따로 만들어줘야 하지만, using을 사용할 경우, template의 별칭을 만들어 하나로 사용할 수 있다.

Naver Blog

[정리] template parameter

template parameter 로 타입을 받을 때는 typename 또는 class 키워드를 사용한다. template<typename T> class List{}; template<class T> class List{}; 둘 다 동일한 코드이므로 아무 표현이나 사용해도 상관없다. 함수 또는 클래스 템플릿을 만들 때 템플릿 인자로 다음과 같은 요소를 사용할 수 있다. 1. type parameter 2. non-type parameter 3. template parameter 1. type parameter 템플릿 인자로 primitive 타입 뿐만 아니라 사용자 타입도 전달할 수 있다. template<typename T> class List{}; int main() { List<int> s1; List<People> s2; List<List<People>> s3; //List의 템플릿 인자로 다시 List<People>을 사용할 수 있다. } 2. non-type(값) par

Naver Blog

[정리] template specialization

클래스 템플릿은 결국 클래스를 만드는 틀이다. 컴파일 시간에 전달된 타입을 가지고 클래스를 생성하게 된다. 이 때 특정 타입에 대해 다른 틀을 사용해서 클래스를 만드려면 특수화(Specialization) 또는 부분 특수화(Partial Specialization)을 사용한다. // primary template: 기본 템플릿 template<typename T> class Stack { T data; public: void push(T a) {cout << "T" << endl;} }; // 부분 특수화(partial specialization) // T가 포인터 타입일 경우 아래 템플릿을 사용하자 template<typename T>class Stack<T*> { T data; public: void push(T a) {cout << "T*" << endl; } }; // 특수화(Specialization) // T가 char*일때 아래 템플릿을 사용하자. T가 필요 없으니 T

Naver Blog

[정리] IfThenElse 와 tuple

비트 관리 및 보관을 위한 클래스를 생각해보자 template<size_t N> struct Bit { using data_type = unsigned int; data_type data; }; int main() { Bit<8> b1; // 8bit 관리를 위한 객체 Bit<32> b2; // 32bit 관리를 위한 객체 } 하지만 N의 크가기 1~8이면 char, 9~16이면 unsigned short, 17~32이면 unsigned int를 사용하는 것이 좋다. 이처럼 조건에 따라 다른 타입을 선택하고 싶을 때 IfThenElse 템플릿을 사용하여 해결하면 된다. template<bool b, typename T, typename U> struct IfThenElse { using type = T; } // 1번째 인자가 false 일 때 부분 전문화 template<typename T, typename U> struct IfThenElse<false, T, U> { using

Naver Blog

[정리] template meta programming

template meta programming 이란, 컴파일 시간에 어떤 연산을 수행하게 하는 기술을 말한다. 아래 예제를 보자. template<int N> struct factorial { enum { value = N * factorial<N-1>::value }; }; //재귀를 종료하기 위해 특수화를 한다. template<> struct factorial<1> { enum {value = 1}; } int main() { int n = factorial<5>::value; // 5*factorial<4>::value // 4*factorial<3>::value // 3*factorial<2>::value // 2*factorial<1>::value // 1 // 5*4*3*2*1 -> 컴파일 시간에 연산 가능하므로 컴파일을 마치면 // n = 120이 된다. } 여기서 알아두어야 할 것은, C++ 11 부터는 struct에서 enum 대신 constexpr을 사용하여 초기

Naver Blog

Thin Template

// 함수의 갯수를 생각해보자. template<typename T> class Vector { T* buff; int sz; public: int size() const {} bool empty() const {} void push_front(const T& a) {} T& front() {} }; int main() { Vector<int> v1; Vector<short> v2; Vector<double> v3; } 4개의 함수 * 3개의 타입 -> 12개 함수가 만들어짐. 함수의 개수를 줄여보자. T를 사용하지 않는 모든 멤버는 기반클래스로 만들자. class VectorBase { protected: int sz; public: int size() const {} bool empty() const {} }; template<typename T> class Vector : public VectorBase { T* buff; public: void push_front(const

Naver Blog

Visual Studio Code 에서 C/C++ 컴파일, 실행 방법

Windows 10에 설치된 Visual Studio Code 에서 C/C++ 컴파일하고 실행시키는 방법에 대해 설명한다. 1. C/C++ 컴파일러 설치 1.1 Windows 아래 링크에서 MinGW-W64 Online Installer 항목에 있는 MinGW-W64-install.exe를 다운로드 한다. MinGW-w64 - for 32 and 64 bit Windows - Browse /mingw-w64 at SourceForge.net Home Browse Development Compilers MinGW-w64 - for 32 and 64 bit Windows Files MinGW-w64 - for 32 and 64 bit Windows A complete runtime environment for gcc Brought to you by: jon_y , ktietz70 , nightstrike Summary Files Reviews Support Wiki Mailing Li

Naver Blog

[정리] Type Traits & is_pointer

type traits 개념 1. 컴파일 시간에 타입에 대한 정보를 얻거나 변형된 타입을 얻을 때 사용하는 도구(메타 함수) 2. <type_traits> 헤더로 제공됨 (C++11) template<typename T> void printv(T v) { if(T is pointer) // T가 pointer인지 아닌지 조사하고 싶을 때 { cout<< v << ":" << *v<<endl; } else { cout<<v<<endl; } int main() { int n = 3; double d = 3.4; printv(n); printv(d); printv(&d); } } C++ 표준에 is_pointer가 있으므로 충돌 날 수 있다. type query를 위한 type traits를 만드는 일반적인 방법 1. primary template 에서 false 리턴 2. partial specialization에서 true 리턴 #include <iostream> using namesp

Naver Blog

[정리]int2type

핵심개념 1. 함수 오버로딩은 인자 개수가 다르거나 인자의 타입이 다를 때 사용한다. 2. 인자의 개수와 타입이 동일할 때 인자의 값 만으로는 오버로딩을 할 수 없다. int main() { foo(3); foo(3.4); // 아래 두 함수가 다른 함수를 호출하게 할 수 없을까? foo(0); foo(1); } "int2type<>은 정수형 상수를 독립된 타입으로 만드는 도구" 즉, 77, 78은 모두 같은 타입(int)이지만 int2type<77>, int2type<78>은 각각 독립된 별개의 타입이 된다. int를 type으로 만든다는 의미로 이름이 int2type 이다. #include <iostream> using namespace std; template<int N> struct int2type { enum {value = N}; }; void foo(int n) {cout<<"int"<<endl;} void foo(int2type<0> a) {cout << "int2ty

Naver Blog

[정리] Traits 정리

C++ 표준 type traits 1. <type_traits> is_pointer, is_array, extent(배열 크기), remove_pointer, result_of/invoke_result (구현 방식이 다름) #include <iostream> #include <type_traits> using namespace std; template<typename T> void foo(T a) { typename remove_pointer<T>::type n; // type을 얻을 때 typename ...::type 이라고 써야 하는데 불편하다. 이 때 using을 사용하자. template<typename T> using remove_pointer_t = typename remove_pointer<T>::type; // 이렇게.... C++ 14부터는 제공된다. bool b = is_pointer<T>::value; } int main() { int n = 0; foo(&n

Naver Blog

[정리]Variadic Template

가변인자 템플릿 1. C++11 부터 지원되는 문법 2. 가변인자 템플릿(클래스 템플릿, 함수 템플릿)의 기본 모양 숙지 3. 가변인자 템플릿의 템플릿 인자는 "Types"는 여러개의 타입을 나타낸다. 4. 가변인자 함수 템플릿의 함수 인자는 args 안에는 여러개의 값이 들어있는 parameter pack이라고 한다. 기본 Template은 아래와 같다. template<typename T1, typename T2> class xtuple { }; int main() { xtuple<int t1; // error xtuple<int, int> t2; // ok xtuple<int, int, int> t3; // error } xtuple은 템플릿 인자가 2개이므로 반드시 타입 2개를 전달해야만 한다. 하지만 C++11에서는 가변인자 템플릿을 사용하여 제한없이 사용 가능하다. template<typename ... T> class xtuple { }; int main() { xtup

Naver Blog

[OpenCV][C++] 훼손된 영상 복원하기 - cv::inpaint() 사진속 그림 지우기 제거

이번에는 좀 재미있는 함수를 알아보려고 합니다. 훼손된 영상을 주변 픽셀 정보를 이용하여 채워넣는 방법입니다. 이 함수를 알아보기 위해 이전에 알아보았던 마우스 이벤트를 사용해볼께요. https://m.blog.naver.com/dorergiverny/223084092098 [OpenCV][C++] 마우스 이벤트 처리 총정리 이전에는 윈도우 생성 방법과 키보드 입력을 받아 이벤트를 처리하는 방법에 대해 알아보았습니다. https:/... blog.naver.com inpaint()의 원형은 아래와 같습니다. src 입력 영상 inpaintMask inpaint 할 마스크 영상 dst 출력 영상 inpaintRadius inpainting 될 화소의 이웃 결정하는 반지름 크기 flags inpainting 방법 (INPAINT_NS: Navier-Stokes 방법, INPAINT_TELEA: Alexandru Telea 방법) 1. 구조체 정의 마우스로 그려진 영상과 이 때 생성된 마

Naver Blog

[OpenCV][C++] 평균 필터 스무딩(smoothing) 연산 블러링(blurring) 총정리 - boxFilter filter2D

이번에는 필터링에 대해 간단히 알아 본 후에 영상 노이즈 제거하는 방법 중 가장 기본인 평균 필터에 대해 알아보겠습니다. 그리고 opencv에서 제공하는 평균 필터들의 속도를 측정하여 평균 필터를 적용할 때 어떠한 함수를 사용하는 것이 가장 좋은지를 확인해보겠습니다. 필터링(Filtering) 필터링은 계산하고자하는 대상 픽셀과 그 주변 픽셀들을 활용하여 새로운 픽셀 값을 얻는 방법입니다. 이 때 주변 픽셀을 어느 범위까지 어떻게 해야 할지를 결정해야 합니다. 이런 역할을 하는 것이 바로 커널(kernel) 또는 윈도우(window), 마스크(mask)라고 불리는 행렬입니다. 일반적으로 우리가 사용하는 커널은 아래와 같은 모양들이 있습니다. 사실 정사각형의 커널을 가장 많이 사용하고 있으며, 원소를 어떻게 배치하는지 어떤 값을 넣는지에 따라 다양하게 구성할 수도 있습니다. 또한 사이즈도 다양하게 설계를 할 수 있습니다. 값들을 어떻게 정의하는가에 따라 영상을 부드럽게 만들수도 있고,

Naver Blog

[OpenCV][C++] 영상 가장자리(Border) 픽셀 확장 방법 총정리 - 필터링 적용 copyMakeBorder

지난 시간에 평균 필터(Average Filter)에 대해 알아보면서 다루지 않은 부분이 있어요 https://m.blog.naver.com/dorergiverny/223096804790 [OpenCV][C++] 평균 필터 스무딩(smoothing) 블러링(blurring) 총정리 이번에는 필터링에 대해 간단히 알아 본 후에 영상 노이즈 제거하는 방법 중 가장 기본인 평균 필터에 대해... blog.naver.com 바로 가장자리 픽셀 확장 방법에 대한 내용이에요. cv::boxFilter()의 마지막 인자로 borderType이란 인자가 있었어요. base.hpp를 보면, 아래와 같이 가장자리 타입 상수값들이 있어요. 제가 직접 실험해 본 결과를 적어봤습니다. 사실 BORDER_TRANSPARENT는 동작이 잘 안되는 것 같아요. 주석 기준으로 예측해본 거라 정확하지는 않습니다. BORDER_ISOLATED도 사실 사용해본적이 없어서 잘 모르겠으나 값은 아래와 같이 나와서. 그냥

Naver Blog

[OpenCV][C++] 동일 영상 판별(체크)하는 쉽고 빠른 방법 - 같은 영상인지 확인 countNonZero convertTo

우리가 영상처리를 하다보면 어떠한 처리 결과 영상이 같은지를 확인하고 싶을 때가 있습니다. 이번에는 쉽고 빠르게 두 영상이 같은지를 확인하는 방법에 대해 알아보겠습니다. countNonZero()로 알아내기 우리가 가장 쉽게 생각할 수 있는 방법이 두 영상의 차영상을 구해서 모든 픽셀이 0인지 아닌지를 확인하는 방법입니다. 영상을 먼저 입력 받습니다. 그리고 동일한 영상을 만들기 위해 clone을 합니다. cv::Mat src = cv::imread("lena_color.bmp", cv::IMREAD_GRAYSCALE); cv::Mat src_clone = src.clone(); 그 이후 cv::subtract() 또는 cv::absdiff() 를 이용하여 두 영상의 차영상을 계산합니다. cv::Mat src_sub, src_sub_1; //cv::subtract(src, src_clone, src_sub); cv::absdiff(src, src_clone, src_sub_1); 그

Naver Blog

[JK 농원] 강남역 이자카야 심 - 조용하고 분위기 좋은 술집 연인 데이트 회식

엊그제 갔던 강남역에서 가까운 이자카야 "심" 리뷰를 해 볼께요 심 이자카야 강남역점 위치는 강남역 9번, 10번 출구에서 정말 가까워요 어제 리뷰했던 딘타이펑 바로 옆에 있어요. 안주도 다양하고 분위기도 좋은 벚꽃 맛집~!! 1년 365일 만개한 벚꽃을 보며 술을 즐길 수 있는 그 집~!! 주소: 서울 서초구 서초대로 77길 9 강남누드죤빌딩 지하 1층 영업시간: 17:00 ~ 03:00(주말) 17:00~02:00(평일) 주차: 주차는 지원되지 않음(사장님께 잘 말씀드리면 여러명 갔을 때 1대 정도 가능해요. 발렛 3,000원정도 드리면 됩니다. 이건 사장님께 잘 말씀드려야 해서 작게 쓸께요. 그리고 꼭 술을 드신 후에는 대리를 부르셔야 합니다.) 입구가 좀 찾기 어려워요. 지하로 들어가시면 됩니다. 그리고 이자가야라고 써 있어요. 간판에 오타가?? 입구에 참이슬, 맥주 광고가 있는데, 이자카야에 왔으면 사케를 먹어줘야죠. ㅋㅋ 물론 소주가 땡기시면 소주 드셔야겠지만요. 내부로

Naver Blog

[OpenCV][C++] Thresholding 이진화 영상 만들기 총정리 (3) - cv::inRange() cv::threshold()

지난번에 이진화에 관련해서 알아봤습니다. https://m.blog.naver.com/dorergiverny/223059732009 [OpenCV][C++] Thresholding 이진화 영상 만들기 총정리 (1) - cv::threshold() 이번에는 그레이 영상을 이진화 하는 방법에 대해 알아보겠습니다. 이진화는 특정 밝기 범위 또는 밝은 영... blog.naver.com 하나의 threshold를 가지고 Threshold보다 높으면 255, 낮으면 0 또는 높으면 255 아니면 원래 값 그대로.. 또는 반대로 이런 식으로 이진화 처리가 되었습니다. 그런데 이번에는 전경(foreground), 즉 내가 추출하고자 하는 물체의 밝기가 100~150 사이라면 어떻게 할까요? 일단 오늘 강의를 하기 위한 영상을 만들어보겠습니다. 일단 256 x 256 사이즈의 도화지를 만들고, 전체 픽셀을 순회하면서 y 값, 즉 가로로 같은 밝기를 가지는 gradient 한 밝기를 가지는 영상을

Naver Blog

[OpenCV][C++] cv::Mat 클래스 총정리(6) - OpenCL과 cv::UMat 사용하기

cv::Mat 클래스와 관련되어 벌써 6번째 시리즈네요. 그만큼 영상처리에 많이 사용되면서도 가장 중요한 OpenCV의 클래스지요. 지난번에 Mat 클래스에 빠르게 원소 접근하는 방법에 대해 알아 봤습니다. https://m.blog.naver.com/dorergiverny/223037431607 [OpenCV][C++] cv::Mat 클래스 총정리(3) - 원소 접근 속도 분석 오늘은 인터넷 어디에도 없는 정보를 드릴까 합니다. 그러니 귀 쫑긋 눈 활짝 떠 주시고. 이번에는 여러가... blog.naver.com 이번에는 UMat 클래스에 대해 알아보겠습니다. UMat 클래스란? UMat 클래스는 Mat 클래스와 동일한 방법으로 OpenCV의 모든 함수에서 사용 가능하며, OpenCV 함수를 사용할 때 OpenCL(Open Computing Language)이 활성화된 GPU를 사용하는 코드로 영상 처리를 가속하라고 알려주는 역할을 합니다. 만약 사용 가능한 GPU가 없다면 함수

Naver Blog

[C++] 스마트 포인터 shared_ptr, make_shared 총정리

이번에는 스마트 포인터에 대해 설명을 드리겠습니다. Java의 경우 GC(Garbage collector)를 통해 손쉽게 메모리를 관리하는데 c++에서는 new로 할당된 메모리에 대한 관리를 delete로 해제를 시켜줘야 합니다. Java의 GC 처럼 메모리 관리를 자동으로 해줘서 추후에 발생할 메모리 누수(memory leak) 등에 안전성이 보장되는 스마트 포인터를 사용하시길 권장합니다. 스마트 포인터란? 스마트 포인터란 포인터처럼 동작하는 클래스 템플릿으로 사용이 끝난 메모리를 자동으로 해제하는 클래스 입니다. C++ 11부터 C++ 표준으로 채택된 방법 ( C++11 이전에는 auto_ptr 이라는 스마트 포인터 사용했음) 메모리 누수(memory leak)에 대해 안전성 보장(메모리 자동 해제) 힙 메모리(동적 할당)에 생성됨 #include <memory> 가 필요함 이와 같은 디자인 패턴은 RAII(Resource Acquisition Is Initialization)라

Naver Blog

[JK 농원] 딘타이펑 강남점 대만 중국식 딤섬 맛집 - 강남역 연인 데이트 회식 가족 모임

엊그제 다녀온 강남역 중국 요리 맛집을 소개합니다. 평일 저녁에도 웨이팅이 기본인 중국집이에요. 대만에서도 엄청 유명하다고 하죠. 딘타이펑은 전세계 15개국에서 171개 매장이 운영되고 있는 global 체인점이에요. 우리나라에도 5개가 있어요. 출처: 딘타이펑 홈페이지 출처: 딘타이펑 홈페이지 자 이제 강남점으로 떠나볼까요? 강남역 9번, 10번 출구에서 가까워요. 정문과 후문이 있는데, 나는 한발짝이라도 덜 걷고 싶다 → 빨간색 후문쪽 나는 곧 죽어도 큰길로 정문으로 들어간다 → 보라색 정문쪽 으로 들어가시면 됩니다. 주소: 서울 서초구 서초대로 73길 12 세계빌딩 2층 운영시간: 11:00 ~ 21:00 (라스트오더 20:10) 주차: 발렛 주차 가능(정문쪽, 2시간 3,000원) 출입구를 제대로 찍지 못했네요. ㅋㅋ 딘타이펑에 올라가시려면 정문쪽 엘리베이터를 이용하시면 됩니다. 후문쪽 엘리베이터에는 아래와 같이 쓰여 있어요. 그래도 후문과 정문이 연결되어 있어서 괜찮아요.

Naver Blog

[OpenCV][C++] 윈도우 생성, 키보드 이벤트 처리 방법 총정리 - namedWindow imshow waitkey

지난번에 트랙바를 사용하는 방법에 대해 살펴보았습니다. https://m.blog.naver.com/dorergiverny/223060058845 [OpenCV][C++] 트랙바(trackbar) 사용하기 총정리 이번에는 opencv 에서 제공하는 trackbar 사용하는 방법에 대해 알아보겠습니다. trackbar 사용하기 우리가... blog.naver.com 이번에는 키보드와 마우스 이벤트를 받고 처리하는 방법에 대해 상세히 알아볼께요. 키보드와 마우스 이벤트를 받기 위해서는 윈도우가 하나 필요하겠죠? 윈도우 생성 name 이란 이름을 갖는 창을 생성하는 함수. winName 창 이름 (생성할 창의 고유 이름으로 창의 캡션(타이틀)에 사용되는 이름임) window Flag 기본값: cv::WINDOW_NORMAL (resizeWindow 함수로 윈도우 크기 조절 가능) cv::WINDOW_AUTOSIZE (영상 사이즈에 맞게 자동 조절됨, resizeWindow 사용 X) cv

Naver Blog

[OpenCV][C++] 마우스 이벤트 처리 총정리 - onMouse setMouseCallback

이전에는 윈도우 생성 방법과 키보드 입력을 받아 이벤트를 처리하는 방법에 대해 알아보았습니다. https://m.blog.naver.com/dorergiverny/223084026173 [OpenCV][C++] 윈도우 생성, 키보드 이벤트 처리 방법 총정리 지난번에 트랙바를 사용하는 방법에 대해 살펴보았습니다. https://blog.naver.com/dorergiverny/223060058... blog.naver.com 이번에는 마우스 이벤트 처리하는 방법에 대해 알아보겠습니다. 마우스 이벤트도 OpenCV에서 만들어진 창에서 마우스 클릭에 반응하거나 마우스를 드래그하여 그림을 그릴 수 있습니다. 1. 마우스 이벤트 콜백 함수 생성 마우스 콜백 함수는 아래와 같은 형태로 작성해야 합니다. 함수 명은 아무렇게나 쓰셔도 되며, 인자는 정해진대로 작성해야 합니다. flags는 마우스 이벤트가 발생했을 때 ctrl, shift, alt 등의 키가 눌렸는지를 확인하기 위해 사용됩니다. [

Naver Blog

[C++] string to char* 와 char* to string 문자열 변환 총정리

이전에 std::string 클래스에 대해 총정리를 해 보았습니다. https://m.blog.naver.com/dorergiverny/223046924132 [C++] std::string 클래스(문자열) 완벽 총정리 이번엔 문자열(string)을 다루는 클래스인 string 클래스를 파헤쳐봐요. std::string 의 모든 것을 정리해... blog.naver.com 이번에는 string 과 char* 간 변환 방법에 대한 총정리를 해 보겠습니다. 이게 어려운 내용이 아니지만 가끔 찾아보고 싶을 때가 있는 변환이에요. 그래서 정리해 드립니다. std::string 을 char*로 변환 1. c_str() 사용 c_str()은 c 스타일의 스트링으로 변환해달라는 말이에요. 하지만 이것은 내용이 변경되면 안되는 const char* 형을 리턴합니다. cc1을 변경할 수 없어요. 이것을 변경하고 싶으시다면 아래와 같이 const_cast를 이용하시면 됩니다. std::string s

Naver Blog

[JK 농원] 양재 꽃시장 화훼단지 탐방 후기 - 영업시간, 주차, 조경수 총정리

꽃시장 하면 가장 대표적인 곳이 바로 양.재.꽃.시.장. 입니다. 양재 화훼단지라고도 하지요. 지도에서는 양재동 화훼 공판장 이라고 나옵니다. 주소: 서울 서초구 강남대로 27(양재동) 대중교통: 양재시민의숲역 4번출구쪽 주차: 최초 1시간 3,000원, 이후 10분당 500원 영수증 지참시 (간이 영수증은 안됩니다) 3만원 미만 구매 시 1시간 1,500원 3만원 이상 구매시 1시간 무료 10만원 이상 구매 시 2시간 무료 출처: 양재꽃시장 화훼 공판장 F 스퀘어 홈페이지 입구는 아래와 같아요. 빨간색 입구는 AT 센터와 꽃시장 주차장 입구가 바로 옆에 있어요. 주중 낮 시간에는 공매로 인해 이 입구는 막기도 합니다. 초록색 입구가 바로 정문입니다. 주 출입구에요. 그리고 파란색 입구가 남측 출입구 입니다. 경부 고속도로 입구 쪽이에요. 후문 쪽에 나무 판매장이 있어요. 정문 쪽에는 화려한 꽃들과 실내에서 키울 수 있는 나무들이 있어요. 집들이 선물로 난 같은 것도 좋지만, 율마

Naver Blog

[JK 농원] 내곡동 대림원예종묘 탐방기 - 새매장 이사 후 방문기

과천 주암동에서 작년에 내곡동으로 이사한 대림원예종묘 탐방 후기를 공유합니다. 이제 과천은 잊어 주세요~!! 대림원예종묘는 두군데가 있는데, 내곡동 헌릉로 350 가든센터점과 내곡동 1-3005번지(헌릉로 360) 본점이 있습니다. 저는 엊그제 본점에 다녀왔습니다. 큰 도로에 인접해 있어 접근성이 좋아보입니다. 주차장은 살짝 좁은 감이 있는데 매장이 개방감이 좋고 통로도 넓고 진열대를 3층으로 만들어서 공간을 잘 활용하였더라고요. 육교 계단에서 찍은 사진이에요. 연구소도 만들고 저온창고도 있다고 합니다. 주소: 서울 서초구 내곡동 1-3005번지(서초구 헌릉로 360) 주차: 주차 공간이 있음(주차 요원이 있어 주차가 쉬우나 넓지는 않음) 진열은 1층과 2층은 가슴 높이 아래이기 때문에 묘목들이 잘 보이고, 안쪽에 있는 묘목들도 손을 뻗으면 잘 잡을 수 있게 되어있고 3층은 사람이 직접 올라갈 수도 있게 만들었더라고요. 대림원예종묘 홈페이지에 가면 상록수 란에 제일먼저 뜨는 추천상품

Naver Blog

[OpenCV][C++] 영상 외곽선(contour) 추출 총정리(2) - cv::drawContours cvtColor

지난번에 영상의 윤곽선을 추출하는 findContours()에 대해 자세히 알아 봤습니다. https://m.blog.naver.com/dorergiverny/223077650900 [OpenCV][C++] 영상 외곽선(contour) 추출 총정리(1) - cv::findContours 이번에는 물체의 경계를 이루고 있는 외곽선(윤곽선)을 검출하는 방법에 대해 알아보겠습니다. 외곽선을 추... blog.naver.com 이번에는 findContours()로 찾은 윤곽선을 영상 위에 그리는 방법에 대해 알아보겠습니다. drawContours() drawContours()의 원형은 아래와 같습니다. src 윤곽선을 그릴 영상, gray, color 영상 가능 contours 윤곽선 정보, vector<vector<Point>> 타입 contourIdx 윤곽선 인덱스, -1일 경우 전체 윤곽선을 한번에 그림 color 윤곽선 색상 thickness 윤곽선 두께, FILLED 또는 -1일

Naver Blog

[OpenCV][C++] 영상 외곽선(contour) 추출 총정리(3) - boundingRect, minAreaRect, minEnclosingCircle

이번에는 지난 시간에 이어 findContours() 함수로 얻어왔던 정보를 응용하여 추가적인 정보를 얻을 수 있는 방법에 대해 알아보겠습니다. https://m.blog.naver.com/dorergiverny/223077650900 [OpenCV][C++] 영상 외곽선(contour) 추출 총정리(1) - cv::findContours 이번에는 물체의 경계를 이루고 있는 외곽선(윤곽선)을 검출하는 방법에 대해 알아보겠습니다. 외곽선을 추... blog.naver.com 이는 객체의 모양을 판단하는데 사용될 수 있습니다. boundingRect() 윤곽선 점들을 감싸는 가장 작은 크기의 사각형을 구하는 함수 입니다. 함수 원형은 아래와 같습니다. points std::vector<cv::Point> 타입 또는 Mat 타입 반환값 points 들을 감싸는 최소 크기 사각형 정보 소스는 아래와 같습니다. RETR_TREE 모드의 0번째 contour는 좌하단에 있는 원의 외곽입니다.

Naver Blog

[JK 농원] 천안 직산 중식 맛집 - 맛가 바른중식 천안 본점

이번에는 천안 직산에 있는 중식 맛집을 소개합니다. 줄 서서 먹는 핫플이고, 근처에 이만한 맛을 내는 중식 집이 없어요. 맛.가. 바.른.중.식. 저는 바른 중식이라고 해서 이름부터 간판까지 세련된 느낌은 아니었어요. 하지만 사장님의 음식에 대한 정직함이 느껴진 후에 진면모를 알게 되었습니다. 주소: 충남 천안시 서북구 직산읍 송기길 6 1층 주차: 가게 옆 공터에 주차 가능 영업시간: 오전 11시 ~ 오후 9시 매주 수요일 정기 휴무 (정말 중요합니다. 저도 수요일에 갔다가 돌아온 적이 있어서..) 주차는 빨간 네모 친 곳 공터에 하시면 됩니다. 우리가 먹은 메뉴는 해물짬뽕에 고기 짜장면 이었습니다. 고기 짬뽕도 정말 인기가 많은 메뉴인데, 다음에 먹어보려고요. 짜장면에 고기 많은거 보이시나요? 음식에 정직함을 담은 사장님의 마음이 느껴집니다. 그리고 마지막으로 천안에서는 역시 천안 호두가 들어간 호두 탕수육~!! 바삭한 식감에 호두가 씹히는 처음 먹어보는 맛이었지만 자꾸 생각나는

Naver Blog

[OpenCV][C++] 함수 실행 시간 측정 쉬운 방법 - TickMeter 사용법 총정리

지난 번에 함수 실행 시간 측정하는 방법으로 chrono 라이브러리를 사용하는 방법에 대해 알아 보았습니다. https://m.blog.naver.com/dorergiverny/223052685676 [C++] 함수 실행 시간 측정 방법 - chrono 총정리 지난번에 현재 시간 얻는 방법에 대해 언급하면서 chrono에 대해 잠시 알아봤습니다. https://blog.naver.c... blog.naver.com 이번에는 OpenCV를 사용할 때 함수의 실행 시간을 정말 쉽게 측정할 수 있는 방법을 알려드릴께요. cv::TickMeter 클래스 이름에서 풍기는 스멜 그대로~ 함수의 연산시간을 측정할 수 있는 클래스에요. OpenCV의 utility.hpp에 있는 TickMeter 클래스를 다시 써 보면 아래와 같습니다. 멤버 변수로 startTime, sumTime, 그리고 counter가 있어요. startTime과 sumTime은 시간 계산할 때 사용되는 것이고, counter

Naver Blog

[JK 농원] 아산 스파비스 음봉면 황태구이 맛집 - 황태마을 물놀이 가족 모임

이번에 아산 스파비스에서 물놀이를 하고 근처 맛집을 찾아 왔어요. 황태구이 맛집으로 소문난 황.태.마.을. 아산 스파비스에서 나오면 바로 앞에 있어요. 황태 구이 뿐만 아니라 다양한 메뉴가 있어서 골라 먹기 좋은 곳이에요. 주소: 충남 아산시 음봉면 아산온천로 222 운영시간: 06:00~21:00 올해 들어서 대부분의 가격이 오른 것 같아요. 여기도 가격이 올랐네요. 그래도 가격이 저렴한 편이에요. 반찬은 아주 깔끔하게 나왔어요. 여기에서 무절임이 가장 맛있었어요. 저희는 감자칼국수와 메밀막국수, 그리고 황태구이를 시켜봤어요. 메인요리부터 소개시켜드릴께요. 황태구이는 1인분도 시킬 수 있어요. 아래가 1인분이에요. 두툼한 황태살이 보이시나요? 양념도 맛있지만 두툼해서 먹을게 많았어요. 감자칼국수는 진한 국물에 쫄깃한 면발이 맛있더라고요. 메밀 물 냉면은 여름에 정말 맛있을 듯 합니다. 양이 생각보다 많아서 푸짐하게 먹은 것 같습니다. 비빔 메밀국수도 맛있을 듯 했으나 먹어보지 못했

Naver Blog

[OpenCV][C++] 영상 외곽선(contour) 추출 총정리(1) - cv::findContours

이번에는 물체의 경계를 이루고 있는 외곽선(윤곽선)을 검출하는 방법에 대해 알아보겠습니다. 외곽선을 추출하는 findContours()와 외곽선을 그려주는 drawContours() 함수가 있습니다. 입력 영상은 8bit 1 채널 이진 영상(inRange(), threshold(), adaptiveThreshold(), canny() 등)을 사용하면 됩니다. OpenCV에서는 findContours()가 아래와 같이 두가지 형태로 제공됩니다. findContours 윤곽선을 검출하는 함수의 원형은 아래와 같습니다. src 이진 영상(gray-scale도 가능하나 0과 0이 아닌 픽셀(전경)로 구분하여 수행) contours 윤곽선 정보 hierarchy 윤곽선 계층 정보 mode 윤곽선 검출 모드 method 윤곽선 근사 알고리즘 offset 윤곽선 점 좌표의 offset(이동 변위) 1. src src는 8bit 1ch 영상이 가능하나 0과 0이 아닌 픽셀로 구분하여 윤곽선 검출을

1 2 3 4 5 6