유에스베드 일산점에 방문하였습니다.

 

침대 혼수를 하기 위해 결정한 것은 단단함 정도와 사이즈였습니다.

 

단단함 정도는 저희 예비 부부 모두 단단한 침대를 좋아하였고 사이즈는 라지킹LK(180cm)이였습니다.

 

생각하고 방문한 브랜드는 유에스베드, 브랜드리스, 베스트슬립, 금성침대 등 여러 브랜드를 방문하였습니다.

 

우선 제일 처음 유에스베드를 방문하였는데 운명의 침대를 만났습니다.

 

그것은 바로 epeda의 도핀 매트리스였습니다. 같이 DP된 침대프레임도 이뻐서 산건 비밀(프레임도 공들여 몇일 돌아다녔는데 이보다 가성비가 좋지 않음)

 

시작부터 너무좋았고 저희 예비 부부는 더 합리적인 소비를 위해 더 보긴하겠지만 바뀌지 않을 것임을 예상했습니다.

 

방문하여 설명해주신 점장님도 세상 친절 하였으며, 브랜드에대한 자부심이 있어 더 돌아도 다시 돌아올 것임을 확신하였습니다. (확신이 통함)

 

혼수침대를 하신다면 유에스베드 일산점 방문 추천드립니다.

 

 

 

 

 

 

 

 

선언

CString str;

time_t Itime;

struct tm *cur;

time(&Itime);

cur = localtime(&Itime);  // 현재시간을 얻음


사용

str.Format(_T("[%04d/%02d/%02d %02d:%02d:%02d]"),

                     cur->tm_year+1900, cur->tm_mon + 1, cur->tm_mday, cur->tm_hour, cur->tm_min, cur->tm_sec);

                  


출력

2017/04/21 06:21:33

'Study Note > Programming' 카테고리의 다른 글

[MFC] 정적인 그래프 그리기.  (0) 2017.02.07
[OpenCV]OpenCV를 이용해 영상 출력  (2) 2017.01.09
[OpenCV] 이미지 출력하기.  (0) 2017.01.06
[OpenCV] 설치 및 설정 (VS)  (0) 2017.01.06
[MFC] assert() 함수  (1) 2016.11.22

서버 컴퓨터를 따로두고 쿼리박스를 이용해 접속하고자 하니


"'192.168.0.*' is not allowed to connect to this MySQL server ~ " 와 같은 에러가 발생 했다.


처음엔 방화벽 혹은 단순 네트워크 문제라 생각했지만 구글링해보니 문제는 간단하였다.


계정에 IP 권한을 막는 기능이 존재 한다고 한다.


아래와 같은 쿼리를 해당 서버컴에 날려주면 쉽게 해결된다.


mysql> GRANT ALL PRIVILEGES ON *.* TO 'username' @'%' identified by 'passwd';



'Study Note > Database' 카테고리의 다른 글

Oracle 11g Release 2 installation on Windows  (0) 2016.03.01
Log Miner 활용과 Redo log 장애  (0) 2016.02.26
Offline 백업 본을 이용한 DB 복구  (0) 2016.02.26
Control File 장애 복구  (0) 2016.02.26
Hot Backup  (0) 2016.02.26

네이버 자율주행차 '진짜 도로' 달려요

국내 IT업계 최초 시험주행
내달 서울모터쇼2017도 참가

네이버 자율주행차 '진짜 도로' 달려요

네이버가 국내 정보기술(IT) 업계에서는 처음으로 일반 도로에서 자율주행차 시험 주행에 나선다.

네이버는 네이버랩스가 국토부가 부여하는 자율 주행차 임시운행 허가를 받았다고 20일 밝혔다. 네이버랩스는 지난달 네이버에서 별도 법인으로 독립한 자회사다.

현재까지 네이버랩스를 포함해 일부 자동차 관련 업체와 대학 및 연구소 등 8개 기관·기업에서만 허가를 받았다. 

업계에서는 이번 임시 운행으로 국내 IT업계의 기술이 자율주행차에 접목돼 관련 산업 발전을 가속화할 것으로 기대하고 있다. 

현재 네이버랩스는 모빌리티(Mobility) 팀을 구성해 미래 이동성 개선과 도로 환경의 정보화를 목표로 자율 주행과 첨단운전자지원시스템(ADAS)과 관련된 다양한 기술 분야를 연구하고 있으며, 내달 열리는 ‘서울모터쇼 2017’ 에도 참가해 자사의 자율 주행 기술을 선보일 예정이다.

송창현 네이버랩스 대표는 “지난해 개발자 컨퍼런스 데뷰(Deview) 2016를 통해 공개했던 네이버랩스의 자율 주행 기술이 실제 도로 상에서 시험이 가능한 수준임을 인정받은 것”이라며 “실제 도로 주행을 통해 자율 주행 기술 개발에 가속이 붙을 것으로 예상한다”고 말했다. 


(URL : http://www.sedaily.com/NewsView/1OC6HRPBWE)


통신사에서 제일빠르게 나올 줄 알았던 자율주행차 네이버에서 제일먼저 나왔는데 이에 대한 행보가 궁금하네요~

정적 그래프를 처음해보기때문에 차근차근 진행해보도록 하겠다.


직접그려볼까 객체들을 찾아보다가 인터넷에 제공되는 API를 발견하였다.


 http://blog.tcltk.co.kr/?p=962 사이트에서

Chart Director를 알게되었다.


ChartDirector 홈페이지

  http://www.advsofteng.com/index.html


해당 홈페이지로 접속하셔서 Chart Demo 및 문서를 다운 받을 수 있다.

32bit 자료를 다운 받았다.


다운 받은 파일을 압축해제하면 아래와 같이 폴더 구성을 하고 있다.

 [cppdemo] : c++로 제작 된 chart 예제

 [doc] : 라이브러리 사용법이 들어있는 설명서

 [include] : Chart를 사용하기 위한 라이브러리 소스코드

 [lib] : 컴파일을 하기 위한 lib 파일과 실행을 위한 chartdir60.dll 파일이 포함되어 있습니다.

 [mfcdemo] : mfc로 제작 된 chart 예제

 [qtdemo] :  qt로 제작 된 chart 예제


여기서 사용하기위한 [include] 와 [lib] 폴더를 사용할 프로젝트 폴더에 복사한다.

또 mfcdemo/mfcdemo/폴더에 있는 ChartViewer의 .cpp .h 파일도 프로젝트 폴더에 복사한다.


[프로젝트 속성] - C/C++ 에서 라이브러리 폴더를 추가해주고

Link 탭에서 chairtdir60.lib 를 추가해준다.


PicControl을 추가해주고 type을 Bitmap으로 변경해 준다.

이후 변수 추가는 CChartViewer m_ChartView로 추가 해주었다.


dlg.h 에 ChartViewer.h를 Include해주고

dlg.cpp 에 아래 코드를 추가 해준다.

//OnInitDialog() 에 추가해야할 소스코드

// TODO: Add extra initialization here

// 차트에 필요한 데이터

    double data0[] = {42, 49, 33, 38, 51, 46, 29, 41, 44, 57, 59, 52, 37, 34, 51, 56,

        56, 60, 70, 76, 63, 67, 75, 64, 51};

    double data1[] = {50, 55, 47, 34, 42, 49, 63, 62, 73, 59, 56, 50, 64, 60, 67, 67,

        58, 59, 73, 77, 84, 82, 80, 84, 89};

    double data2[] = {87, 89, 85, 66, 53, 39, 24, 21, 37, 56, 37, 22, 21, 33, 13, 17,

        4, 23, 16, 25, 9, 10, 5, 7, 6};

    const char *labels[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

        "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23",

        "24"};


    // Create a XYChart object of size 350 x 230 pixels

    XYChart *c = new XYChart(350, 230); //차트의 전체 크기를 정한다


    // Set the plotarea at (50, 30) and of size 250 x 150 pixels.

    c->setPlotArea(50, 30, 250, 150); //차트위 위치와 높이 넓이를 정한다.


    // Add a legend box at (55, 0) (top of the chart) using 8 pts Arial Font. Set

    // background and border to Transparent.

    c->addLegend(55, 0, false, "", 8)->setBackground(Chart::Transparent);


    // Add a title to the x axis

    c->xAxis()->setTitle("Network Load for Jun 12");


    // Add a title to the y axis

    c->yAxis()->setTitle("MBytes");


    // Set the labels on the x axis.

    c->xAxis()->setLabels(StringArray(labels, (int)(sizeof(labels) / sizeof(labels[0]))));


    // Display 1 out of 2 labels on the x-axis. Show minor ticks for remaining

    // labels.

    c->xAxis()->setLabelStep(2, 1);


    // Add three area layers, each representing one data set. The areas are drawn in

    // semi-transparent colors.

    c->addAreaLayer(DoubleArray(data2, (int)(sizeof(data2) / sizeof(data2[0]))),

        0x808080ff, "Server #1", 3);

    c->addAreaLayer(DoubleArray(data0, (int)(sizeof(data0) / sizeof(data0[0]))),

        0x80ff0000, "Server #2", 3);

    c->addAreaLayer(DoubleArray(data1, (int)(sizeof(data1) / sizeof(data1[0]))),

        0x8000ff00, "Server #3", 3);

m_chartView.setChart(c);  //m_chartView에 Chart를 보여주기 위한 코드



하... vs2013에 버그가 존재한다. 

Visual Studio 2013 버그 - error RC2108: expected numerical dialog constant ) 구글링을 해보니

 

첫 번째로, 임시 조치 방법으로는 아래와 같이 수동으로 코드를 바꿀 수 있습니다.

 

변경 전 (오류 발생)

 CONTROL IDB_BITMAP1,IDC_STATIC,2,2,89,82,NOT WS_GROUP

변경 후

CONTROL IDB_BITMAP1, IDC_STATIC, "Static", SS_BITMAP, 2, 2, 89, 82, NOT WS_GROUP

 

두 번째로, Visual Studio 2013 Update 버전을 설치하면 됩니다.

라고 한다. 번거롭다.. 다시 이런 버그를 만나지 않기위해 차 후 업데이트를 해야겠다.



결과적으로


성공할 수 있다.


'Study Note > Programming' 카테고리의 다른 글

[C++] time함수와 tm구조체 사용법  (0) 2017.04.21
[OpenCV]OpenCV를 이용해 영상 출력  (2) 2017.01.09
[OpenCV] 이미지 출력하기.  (0) 2017.01.06
[OpenCV] 설치 및 설정 (VS)  (0) 2017.01.06
[MFC] assert() 함수  (1) 2016.11.22

OpenCV를 이용하여 동영상 파일 출력하기.

작업환경 – OS : window8.1K , Tool : VisualStudio 2010 , OpenCV Ver : 2.4.11 )

 

(앞서 했던 설정을 기본으로한다.)

 

테스트에 앞서 프로젝트 폴더 내 테스트할 영상을 이동시켜둔다.

 

영상 출력이라고해서 어려워보이지만 OpenCV에서 기본 함수를 제공하므로 비교적 간단하다.

이미지 출력과 차이점은 이미지는 한장의 사진이라면 동영상은 여러장의 사진을 연속적으로 출력하는 것이라 볼 수 있다.

 

#include <opencv\highgui.h>

 

int main()

{

        IplImage *frame;

        CvCapture *capture = cvCaptureFromAVI("test.MOV"); // 영상파일을 로드

        cvNamedWindow("Test",0); // Window창을 생성

 

        while(capture) { // capture 영상이 로드 되었다면 출력

               frame = cvQueryFrame(capture); // 영상을 프레임에 넣음  

               cvShowImage("Test",frame);     // 영상을 띄움

 

               if(cvWaitKey(1)==27){          // ESC(27)  누르면 탈출

                       cvReleaseCapture(&capture);

                       break;

               }

        }

        cvDestroyWindow("Test");

        return 0;

}

 

 

 

CvCapture형식의 capture에 영상을 저장한다.

동영상 파일을 불러올 때는

cvCaptureFromFile() 이나

cvCreateFileCapture() 또는  

cvCaptureFromAVI()중 하나를 선택하여 사용한다.

(인자로는 파일이름파일형식을 넣어준다).

파일 형식은 avi, wmv, mp4, 3gp, mkv, mov 등등이 사용 가능하다.


* PC에 달린 캠 영상을 출력하기위해서는

- cvCreateFromCAM(int index) 를 사용하면 된다.

Index 값으론 사용할 카메라를 지정한다. 카메라가 1개인 경우 혹은 여러 개 중에서 특정한 카메라를 지정하지 않을 경우는 -1을 사용한다. 만약 2개인 경우 index값이 0이면 카메라를 선택할 수 있는 창이 나타난다.


 

cvQueryFrame()함수는 동영상 혹은 카메라로부터 프레임을 읽고 반환하는 함수이다.

 IplImage* cvQueryFrame( CvCaptuer* capture );

 

결과


사진으로 보이지만 영상파일이고 제대로 동작함을 확인할 수 있다.

'Study Note > Programming' 카테고리의 다른 글

[C++] time함수와 tm구조체 사용법  (0) 2017.04.21
[MFC] 정적인 그래프 그리기.  (0) 2017.02.07
[OpenCV] 이미지 출력하기.  (0) 2017.01.06
[OpenCV] 설치 및 설정 (VS)  (0) 2017.01.06
[MFC] assert() 함수  (1) 2016.11.22

(환경 - OS : Window8.1K, Tool : Visual Studio 2010, OpenCV ver : 2.4.11)


OpenCV를 이용하여 이미지 출력하기.

앞서 했던 설정을 기본으로한다.

 

먼저 이미지를 준비한 뒤, 저장하고 프로젝트 폴더로 이동시킨다.

 

아래와 같은 코드를 작성을 하면

#include <opencv2\core\core.hpp>

#include <opencv2\highgui\highgui.hpp>

using namespace cv;

 

void main() {

 

        Mat image = imread("Lenna.png"); // disk에서 그림을 불러온다

        if(!image.data) exit(1); // 이미지가 있는지 확인하고 없으면 종료

 

        imshow("Lenna",image); // 이미지를 보여주는 함수. Par(1) 이름

       

        waitKey(0); //Wait for keystroke

}

 

아래와 같은 결과물이 도출된다.




* OpenCV 함수를 참고하여 만들어 보았다.

#include <opencv\highgui.h>


int main() {

IplImage *capture = cvLoadImage("Lenna.png");

cvNamedWindow("Lenna",1);

cvShowImage("Lenna",capture);

cvWaitKey(0);


// cvReleaseImage(&capture);

// cvDestroyWindow("Lenna");


return 0;

}

 


cvLoadImage()함수는 영상 데이터의 구조체 포인터를 반환한다. 인자 값으로 파일명과 형식을 넣어준다.

구조체의 이름은 IplImage이며, 단일 채널, 다중 채널, 정수형, 실수형 등 모든 형태의 영상 데이터를 IplImage로 표현할 수 있다. 또한 BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF 등의 영상 포맷을 지원한다.

*출력할 영상은 프로젝트 폴더내에 존재하여야 한다.


cvNamedWindow()는 영상을 표시할 윈도우를 하나 만드는 일을 한다.

- 첫 번째 인자는 윈도우의 이름으로 등록된다.

- 두 번째 인자는 윈도우의 속성을 지정한다. 여기에는 0(기본값) 또는 1이 들어갈 수가 있다.

인자값이 0으로 지정되면 불러오는 영상의 크기에 상관없이 윈도우 크기는 일정하게 고정이 되고, 영상이 윈도우의 크기에 맞게 확대 또는 축소되어 나타난다. 만약 1(CV_WINDOW_AUTOSIZE)이면 불러오는 영상의 실제 크기에 맞게 윈도우의 크기가 자동으로 조절된다.


cvShowImage()함수는 IplImage* 타입으로 생성된 영상을 해당 제목을 갖은 윈도우에 영상을 출력한다.

- 첫번째 인자는 윈도우의 이름이고,

- 두번째 인자는 IplImage이다.


cvWaitKey()함수는 프로그램의 동작을 잠시 멈추고 사용자로부터 키 입력을 기다린다.

양의 정수일 경우 밀리초(millisecond) 단위로 지정한 시간동안 대기한다.

인자값이 0이나 음수일 경우 키가 눌려질 때 까지 무한정 기다린다.


cvReleaseImage()함수는 할당된 메모리 공간을 해제한다. 

인자로 IplImage*의 주소값을 전달해준다. 이 함수가 실행된 후 해당 IplImage는 NULL로 설정된다.


cvDestroyWindow()함수는 윈도우를 닫고, 윈도우를 위해 동적할당된 메모리 공간을 모두 해제한다. 


cvDestroyAllWindows()함수를 이용하여 한번에 모든 창을 닫을 수도 있다.


***** 간단한 프로그램의 경우 프로그램이 종료할 때 운영체제에 의해 할당된 모든 리소스들이 자동으로 반환되지만 cvReleaseImage()함수와 cvDestroyWindow()함수를 직접 호출하여 리소스를 반환하는것이 좋다.



'Study Note > Programming' 카테고리의 다른 글

[MFC] 정적인 그래프 그리기.  (0) 2017.02.07
[OpenCV]OpenCV를 이용해 영상 출력  (2) 2017.01.09
[OpenCV] 설치 및 설정 (VS)  (0) 2017.01.06
[MFC] assert() 함수  (1) 2016.11.22
메모리 관리 문제  (1) 2016.11.22

(환경 - OS : Window 8.1K , Tool : Visual Studio 2010, OpenCV Ver : 2.4.11)


OpenCV 입문

 

1. OpenCV 설치

- OpenCV 홈페이지(http://opencv.org/download.html)에서 OpenCV 최신 버전을 다운로드한다.

 

- 제어판 - 시스템(윈도우키 + Pause)에서 환경변수 설정을 한다. 시스템 변수에서 새로 만들기를 클릭한다.


 


 

2. Visual Studio 설정

l  C/C++ 목록이 없다면 아무거나 컴파일 하면 생성됨





 

솔루션 플랫폼을 x64로 변경해주는데 없다면 구성관리자 탭에 들어간 후,


새로만들기로 추가해주면 된다.


opencv_calib3d2411d.lib

opencv_contrib2411d.lib

opencv_core2411d.lib

opencv_features2d2411d.lib

opencv_flann2411d.lib

opencv_gpu2411d.lib

opencv_highgui2411d.lib

opencv_imgproc2411d.lib

opencv_legacy2411d.lib

opencv_ml2411d.lib

opencv_nonfree2411d.lib

opencv_objdetect2411d.lib

opencv_ocl2411d.lib

opencv_photo2411d.lib

opencv_stitching2411d.lib

opencv_superres2411d.lib

opencv_ts2411d.lib

opencv_video2411d.lib

opencv_videostab2411d.lib



프로젝트 폴더 안에 jpg파일을 넣고 실행하면

#include <opencv\cv.h>

#include <opencv\highgui.h>

 

int main()

{

        IplImage *image = cvLoadImage("opencv.jpg");

        cvShowImage("Test Image", image);

        cvWaitKey(0);

        cvReleaseImage(&image);

        return 0;

}

 

 

 

이와 같은 결과를 얻을 수 있다.

'Study Note > Programming' 카테고리의 다른 글

[OpenCV]OpenCV를 이용해 영상 출력  (2) 2017.01.09
[OpenCV] 이미지 출력하기.  (0) 2017.01.06
[MFC] assert() 함수  (1) 2016.11.22
메모리 관리 문제  (1) 2016.11.22
[MFC] 대화상자 Domodal, Modaless  (0) 2016.11.19

아래 방화벽문제는 아닌거 같아서 우분투를 다시 설치 하고 해보았다.

(설정 또한 안바꿔도됨)

역시 예상대로 패키지 설치만하니까 간단히 연결되었다 .

================================================

Ubuntu 설치를 할때 기본 설치로 진행하였다.


별 다른 설정을 하지 않았기에 기본 상태로 깔린거 같다.


평소와 같이 Xshell이나 putty로 원격으로 붙으려하니 붙지를 않아 방화벽 문제일거라 생각하여


$ sudo ufw disable  // 방화벽 해제

을 해줬다.


결과는 Fail.


22번포트를 열어주어야하나싶어


$ sudo ufw allow 22 // 22번 포트 허용

결과는 역시 fail


맨땅에 헤딩하기가 이렇게 힘들던가...

결국 다른 블로거의 힘을 빌리기로 했다.


/etc/network/interfaces 의 내용을 수정하라고한다


auto lo

iface lo ..... 이런식으로 작성되어있는데


lo -> eth0 으로 수정하였다.


그리고


# sudo apt-get install openssh-server


이 패키지가 안깔려있는데 이놈이 큰 문제였던거 같다. (물론 방화벽 문제도 있었겠지만)


네트워크를 재시작 해주어야한다.

# sudo /etc/init.d/ssh restart

혹은

# service restart

혹은

# service ssh restart 



성공이다.


앞으로 이런 문제는 가볍게 넘기도록해야겠다.

RasberryPiTerabee 사용

 

( 환경 : Raspbian(Linux환경) , RasberryPi 2 B+ )

 

 

모형


구성

                             

                        TOF Sensor                                                                                             USB Adopter




면적

핀 구성

PIN

Function

1

+5V out

(use only to provide voltage levels to programming devices, max. 10mA!)

2

+5V out

(use only to provide voltage levels to programming devices, max. 10mA!)

3

SCLK (for SPI or flashing)

4

MISO

5

MOSI

6

Reset in

(pull to GND to reset)

7

Arduino compatible reset in

(to DTR)

8

User I/O 2

9

User I/O 1

10

SCL

11

SDA

12

RX(5V Lev)

13

TX(5V Lev)

14

Vcc(10V-20V)

15

GND



드라이버 구성



윈도우에서 사용 할 때는 드라이버를 직접 깔아서 사용했지만 Ubuntu 기반인 라즈비안은 인식되어있다.

보통은 /dev/ttyUSB0 혹은 1,2 .... 로 되어있다.



screen 명령어를 통해서 Access하게 되면



이런식으로 결과 값이 주르륵 나온다.

무슨소릴까... Binary 모드이기 때문이다.

모드를 바꿔봐야겠다.



사용 Mode

(Shift + Key)

Key

Mode

Function

P

정밀모드

정확한 값을 내기위해 내부 파라미터를 적용한다.

이 기능은 반복율과 반응속도를 줄여준다

F

속도모드

빠른 반복율과 반응속도가 보장되지만 판독의 정확성이 줄어든다.

B

바이너리 모드

출력상태를 Binary형태로 출력

T

텍스트 모드

출력상태를 Text형태로 출력

 


Shift + T (Text 모드로 변경해보면...)

우리가 원하든 mm 단위로 출력된다!


 

+ Recent posts