본문 바로가기

분류 전체보기195

C언어 기초 - printf 로 숫자 출력하기 본문 목표 어떤 언어로든 코딩을 할 때, 잘 진행되고 있는지 확인이 필요하다. 그런 상황에서 중간에 변수들의 값 또는 진행 상황을 확인하기 위해서 화면에 값을 출력해줄 필요가 있다. 그 때, 사용하는 함수가 C언어에서는 printf( ) 라는 함수이다. printf( ) 함수를 이용해서 변수들의 값을 출력하여야 한다. 이 때, 변수마다 출력하는 방법이 다르므로 사용법을 이해한다. 개념 정리 printf( ) 라는 기본 함수를 이용해서 문장을 출력하는 것을 저번에 다뤄봤었다. 이번에는 변수들을 출력해봐야 하는데, 아직 변수들을 다루지 않았으므로, 출력방식에 대해서만 다뤄보겠다. 1. 정수 - -3, -2, -1, 0, 1, 2, 3 ...... - 정수형을 출력할 때에는 %d 를 사용한다. 2. 실수 - .. 2020. 7. 5.
C언어 기초 - printf 로 문장 출력하기 본문 목표 어떤 언어로든 코딩을 할 때, 잘 진행되고 있는지 확인이 필요하다. 그런 상황에서 중간에 변수들의 값 또는 진행 상황을 확인하기 위해서 화면에 값을 출력해줄 필요가 있다. 그 때, 사용하는 함수가 C언어에서는 printf( ) 라는 함수이다. printf( ) 함수를 이용해서 변수들의 값을 출력하거나, 진행 상황을 확인하기 위해 문자열을 출력하는 것을 할 수 있어야 한다. 개념 정리 printf( ) 는 괄호 안의 값을 출력하는 C언어 기본 함수이다. 괄호 안에 변수를 입력해도 되고, 문자열을 입력해도 된다. 아직 변수를 다루지 않았으므로 문장 출력만 다루고 넘어가도록 한다. printf( "출력하려는 문장" ); 사용 방법은 위와 같이 단순하다. 저렇게 하면 출력하려는 문장이 cmd창에 뜨게.. 2020. 7. 5.
C언어 기초 - C언어란? 본문 목표 코딩에 있어서 오래된 역사를 갖고 있고, 현재까지도 많이 사용하고 있는 C언어를 알아본다. 개념 정리 C언어는 B언어 이후에 나온 언어로 고급 언어 중 하나이다. 1971년 즈음에 개발되었고, 현재까지 사용 중인 언어이다. 다른 언어들의 기초가 되기도 한다. 비전문가들을 위해서 C언어를 간략하게 소개하자면 컴퓨터는 사실 0 과 1로만 데이터를 처리한다. 그러니깐 컴퓨터의 언어는 0과 1로만 이루어져있다고 하자. 그런데 사람의 언어는 0과 1로 이루어져 있지 않다. 사람의 언어를 고급언어를 사용하여 컴퓨터에 전달하는 것이다. 고급언어는 C, C++, JAVA 등이 포함되어 있는데, C와 C++, JAVA 모두 0 과 1로 이루어져있지 않아서 컴퓨터에서 바로 이해하지 못한다. 그래서 고급언어를 0.. 2020. 7. 5.
이영자 맛집! 돈까스잔치 별내점 솔직 후기 Today 친구가 이영자 맛집이라고 돈까스잔치 먹으러가자고 그래서 찾게되었다. 별내쪽에 새로 생겼다나 뭐래나~ 차타고 이동하면 나름 가까워서 흔쾌히 따라 나섰다. Exterior 찾아보니깐 전국적으로 여러곳에 있던데 외관은 비슷비슷하다. 돈까스랑 단팥빵을 같이 파는것도 신기하고, 돈까스 잔치에서 잔치는 잔치국수를 말하는듯하다ㅎㅎ Interior 내부는 그냥 깔끔하다... 특별할 건 없어보인다. 눈에 띄던건 1인석이 있고, 넓은 테이블은 옆 테이블 사람들과 의자를 같이 써야한다는 정도? 음식 나오는 것 빼고는 죄다 셀프로 이용해야한다. Menu 일단 내가 시킨 메뉴는 '돈비국수' 이다. 대학교 다닐 때 학식에 이거처럼 비슷한 메뉴가 있었는데, 학식에 출시된 시기를 보면 아마 TV프로그램에서 유행해가지고 새.. 2020. 7. 4.
인천 장기동 다겐닭스 블랙 페퍼 - 치킨 존맛 Today 치킨은 사실 매일 먹어도 괜찮은 음식이다. 비싸서 그렇지... 특별한 이유는 없고 그냥 더운데 치맥하고 싶어서 사무실 근처 다겐닭스를 찾았다. Exterior 이미 한번 리뷰한적이 있어서 사진은 재탕으로... Interior 인테리어도 괜찮은 편! 실제로는 사진보다 좀 어둡다. 딱 치맥하기 좋은 분위기라 생각하면 좋다. 카메라가 좀 밝게 찍은 듯. 마치 일반 카페같네... Menu 신메뉴가 나왔다. 블랙페퍼 순살~ 뼈치킨도 있지만, 순살도 맛있고 편해서 계속 순살만 먹게된다. 매콤하면서 맛있다. 우리가 생각하는 그 후추맛이 아니고, 아무튼 맛있으니깐 이 글 보시는 분들은 꼭 잡숴보시길~!!! 1순위 맛으로 사무실 직원끼리 인정했다. 아 뭐로 시켰었는지 기억이 안난다. 양념이었었나? 청양갈릭치킨.. 2020. 7. 4.
포천 넓고 분위기 좋은 카페 숨 [cafe 숨] Today 친구들이랑 밥먹고 후식먹을 장소를 찾다가 들린 카페 글쓰는 시점은 7월이지만, 카페를 들렀을 때는 5월 말 지금 보면 5월 말이 글쓰는 때보다 더 더웠었다.ㅋㅋ... Exterior 야외 테라스가 있고, 전체적으로 넓은 규모를 자랑한다. 자유롭게 돌아다니면서 쉬어도 좋고, 음료를 마셔도 좋다. Interior 사람이 많아서 내부를 찍기가 좀 그랬다... 사람 없는곳만 찍어왔다... 실내는 목재 인테리어로 되어있고, 따뜻한 느낌의 실내공간이었다. Menu 내가 시킨 메뉴는 카페 숨의 시그니처 음료... 가격이 좀 많이 비싸긴 하다... 카페 숨은 전용 텀블러에 음료를 담아서 준다. 코로나 때문에 이게 더 위생적인 것 같다. 일회용 플라스틱은 버려야 하고 환경 파괴의 원인이 되지만, 이 텀블러는 .. 2020. 7. 4.
[C++ opencv] 이미지에서 경계선 검출하기, Edge detection 본문 목표 Color 이미지의 Grayscale 로의 변환, 노이즈 제거와 이진화, 이 모든 과정은 오늘 다룰 경계선 검출을 위해서 선행되었어야 할 필수 과정이었다. 영상인식에서 경계선 검출이 되어야 컴퓨터가 물체를 인식하고 처리할 수 있다. 전문 용어로는 Edge detection 이라고 한다. 오늘은 이 경계선 검출 방법에 대해서 알아보고, OpenCV에서 어떻게 사용하는지 다뤄보도록 하겠다. 키워드 : Edge detection, Canny, 경계선 검출 알아볼 함수 원형 - 경계선 검출, 캐니 알고리즘 ( Edge_detection, Canny algorithm ) ... Mat img = imread("Lenna.png", 0);//이미지를 grayscale로 불러옴 Mat img_edge; C.. 2020. 7. 4.
[C++ opencv] opening, closing 기법 사용하여 경계 확실히 하기 본문 목표 저번시간에 침식연산(Erosion) 과 팽창연산(Dilation) 에 대해서 알아보았었다. https://diyver.tistory.com/61 [C++ opencv] erode, dilate 사용하여 물체 명확하게 하기 본문 목표 이 전까지 grayscale 과 threshold 에 대해서 배웠었다. 이제 노이즈를 제거함에 있어서 획기적인 방법 중 하나인 erode 또는 dilate 기법에 대해서 알아보도록 하자. Erode 와 Dilate 연산을 모폴�� diyver.tistory.com 이번에는 그 두가지 연산을 혼합하는 새로운 기법을 알아보도록 한다. opening 과 closing 기법인데, 말 그대로 열어주고 닫아주는 작업이다. 무슨 소리인지 이해 안되는 것이 당연하다. openin.. 2020. 7. 3.
[C++ opencv] erode, dilate 사용하여 물체 명확하게 하기 본문 목표 이 전까지 grayscale 과 threshold 에 대해서 배웠었다. 이제 노이즈를 제거함에 있어서 획기적인 방법 중 하나인 erode 또는 dilate 기법에 대해서 알아보도록 하자. Erode 와 Dilate 연산을 모폴로지 기법이라고도 한다. erode 를 해석하면 "침식시키다" 또는 "약화시키다" 라는 뜻을 가지고 있다. erosion 이라고도 한다. 그저 erode 의 명사일 뿐이다. dilate 를 해석하면 "확장하다" 또는 "키우다" 라는 뜻을 가지고 있다. dilation 이라고도 한다. 역시 명사형일 뿐이다. 이진화 된 영상에서 사용자가 중요하게 취급하는 것이 object 인데, object를 1 (white) 로 취급할 것인지, 0 (black) 으로 취급할 것인지에 따라서.. 2020. 7. 1.
[C++ opencv] 이중 임계값 처리, double thresholding, inRange() 본문 목표 저번 포스트에서 Thresholding 에 대해서 알아봤다. Thresholding을 하는 이유는 내가 명확하게 보고 싶은 것만 보면서 이미지의 크기를 작게하고, 데이터를 단순화해서 연산처리 속도에서 이득을 얻기 위함이었다. 하지만 저번 포스트에서 배우기로는 살짝 아쉬운 부분은 하나의 임계값을 기준으로 잡아서 극과 극으로 데이터를 처리했었던 것이라 아쉬움이 있을 수 있다. 왜냐하면 야외에서 카메라를 사용해 인물을 찍었다 했을 때, 바닥은 비교적 어둡고, 하늘이 찍혔으면 그 부분은 밝을 것이다. 근데 내가 원하는 것은 그 중간에 있는 object 의 데이터일 경우에는 어떻게 해야 좋을지 고민이 될 것이다. 이런 애매한 상황에서 사용할 수 있는 것이 double thresholding 이다. op.. 2020. 7. 1.
[C++ opencv] Thresholding 임계값 처리로 binary 이미지 만들기 본문 목표 영상처리에 있어서 제일 중요한 건 처리 속도이다. 여태 언급했던 노이즈 제거 및 grayscale 사용은 다 처리 속도 때문이었다. 처리속도가 빨라야 여러장을 처리할 수 있고, 여러장을 처리해야 정확도가 올라간다. grayscale은 0~255 까지 값을 저장하는 8 bit 크기를 가지고 있는데, 이제 여기서 더 속도를 빠르게 하기 위해서는 2 bit 크기를 다뤄야 한다. 그게 바로 binary 이미지 이다. 회색의 이미지에 0~255 사이의 값을 기준으로해서 기준 값(임계 값) 이상은 1(white), 이하는 0 (black) 으로 처리하는 방법을 사용한다. 이렇게 binary 이미지로 만드는 작업을 '이진화' 라고 한다. 연산 처리를 빠르게 하고 정확하게 하기위해 사용하므로, 꼭 알아야 하.. 2020. 6. 30.
[C++ opencv] 가우시안 필터 vs 평균 필터, 노이즈제거 승자는? 본 블로그에서 가우시안 필터와 평균 필터 사용법을 전부 다루었다. 그러면서 사용하는 목적이 다르다고 했었고, 분명 둘 사이에 시간차이가 있다고 했었다. 오늘은 그 차이를 확인해보는 시간을 가져보도록 하겠다. https://diyver.tistory.com/60 [C++ opencv] 평균필터 적용하여 노이즈 제거하기 average filter, filter2d() 본문 목표 영상처리에 있어서 제일 중요한 것들 중 하나는 당연 '노이즈 제거' 이다. 노이즈 제거 방법에는 정말 여러가지가 있지만, 제일 쉬운 방법은 blur 처리를 하는 것이다. blur 처리란 영상�� diyver.tistory.com [평균 필터 포스트 보러가기] https://diyver.tistory.com/67 [C++ opencv].. 2020. 6. 30.
[C++ opencv] 가우시안 필터로 노이즈 제거하기 gaussian filter, gaussian blur() 본문 목표 영상처리에서 '노이즈 제거'의 중요성은 80%를 차지한다고해도 과언이 아니다. 노이즈 제거의 방법에는 여러가지가 있겠지만, 가장 쉽게 하는 방법은 영상을 흐리게 하는 것이다. 그 중에서 오늘은 '가우시안 필터' 또는 '가우시안 블러'를 알아보도록 한다. 이 방법은 중앙값에 가중치를 더 주고 주변은 더 흐리게 한다고 보면된다. 키워드 : 가우시안 필터, 가우시안 블러, Gaussian blur 알아볼 함수 원형 - 가우시안 필터 적용한 블러처리 ( Gaussian Blur ) ... Mat img = imread("Lenna.png", 0);//이미지를 grayscale로 불러옴 Mat img_blur; GaussianBlur(img, img_blur, Size(7, 7), 0); ... Gau.. 2020. 6. 30.
[C++ opencv] 평균필터 적용하여 노이즈 제거하기 average filter, filter2d() 본문 목표 영상처리에 있어서 제일 중요한 것들 중 하나는 당연 '노이즈 제거' 이다. 노이즈 제거 방법에는 정말 여러가지가 있지만, 제일 쉬운 방법은 blur 처리를 하는 것이다. blur 처리란 영상을 흐리게하는 방법이다. OpenCV에서는 filter2D( ) 라는 함수가 있다. 이번에는 filter2D( ) 함수를 이용해서 영상을 blur 처리하는 방법을 알아본다. 키워드 : average filter, filter2d(), 평균필터, zero padding, mirror padding 평균필터 - 원리 이해 필터는 말 그대로 걸러주는 또는 처리를 해주는 것이다. 그러니 평균필터란 말 그대로 평균값을 이용한 필터링 방식이다. 여기에는 커널 또는 마스크 크기가 필요하다. (커널은 마스크 크기에 계산 .. 2020. 6. 26.
ender 3로 나만의 컵받침 제작하기~, DIY Coaster by ender 3 Ender 3 가 있고, 모델링 프로그램을 다룰 줄 안다면 자신이 만들고 싶은 것은 거의 다 만들 수 있다. 오늘은 Ender 3를 통해서 컵받침을 만들어 보았다. Thingiverse 에도 컵받침이 많긴 하지만 뭔가 나만의 컵받침을 만들고 싶었다. 모델링 프로그램을 이용해서 우리 회사 로고를 입혀봤다. (DIYVER 와 LABIS는 주인이 같아요) Ender 3를 통해서 PLA로 출력하였다. 어디 하나 들뜬곳 없이 잘 나왔다. 표면은 다림질 안해서 결이 살짝 보인다. 그런데 다림질 했으면 중앙에 로고 때문에 더 이상하게 되었을 수 있다. 아무튼 다행인 것은 로고 글자가 0.3mm 도 안되는 너비였는데 음각으로 제대로 표현되었다. 컵받침은 이렇게 컵 아래에 놓고 쓰는 것인데 일반적인 공대생들은 이런거 쓸.. 2020. 6. 26.