Programming/web 관련2014. 7. 7. 23:15
node.js는 구글의 V8 자바스크립트 엔진을 기반으로 하는 플랫폼이다.
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications.

[링크 : http://nodejs.org/

내장 API중 하나인 HTTP를 이용하여 접속시 Hello World를 보여주는 예제라는데...
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

[링크 : http://nodejs.org/about/


요즘 임베디드에서 node.js로 GPIO 제어하는게 많이 보이는데
음.. 가볍게 테스트용도로 쓰기에는 좋으나 제품으로 쓰기에는 조금 사양이 높은 임베디드에서나 가능하려나?
V8 엔진은 Garbage collection  기반의 메모리 관리를 하기 때문에, GC시 CPU 사용률이 Spike를 치면서 순간적으로 서버를 멈추게할 수 있다는 문제점

[링크 : http://bcho.tistory.com/876

[링크 : http://www.slideshare.net/jeongsangbaek/nodejs-15279050]
[링크 : http://www.nodebeginner.org/index-kr.html]

'Programming > web 관련' 카테고리의 다른 글

HTML META cache  (0) 2014.10.20
aptana / eclipse  (0) 2014.08.25
부트스트랩 - 웹개발 프레임워크  (0) 2014.07.07
jsp / php 기본 문법 비교  (0) 2014.07.07
post 방식과 get 방식의 차이점(cache)  (0) 2014.05.15
Posted by 구차니
Programming/web 관련2014. 7. 7. 22:46

'Programming > web 관련' 카테고리의 다른 글

aptana / eclipse  (0) 2014.08.25
node.js  (0) 2014.07.07
jsp / php 기본 문법 비교  (0) 2014.07.07
post 방식과 get 방식의 차이점(cache)  (0) 2014.05.15
sql designer(web)  (0) 2014.05.11
Posted by 구차니
Programming/php2014. 7. 7. 13:27
php 책 펴놓고 공부하면서 찾아보는데..
객체지향은 php5 부터 지원한다고 한다.

[링크 :  http://php.net/manual/en/language.oop5.php]

'Programming > php' 카테고리의 다른 글

xcache apc  (0) 2014.09.23
lighthttpd / php / FastCGI  (0) 2014.08.28
웹소켓 (websocket)  (0) 2014.07.03
php 로그인 예제  (0) 2014.05.19
php framework / 읽을꺼리  (0) 2014.04.09
Posted by 구차니
Programming/web 관련2014. 7. 7. 12:53
귀찮아서 대충 정리..

jsp
<%@ %> 
<% %>
${variable}

php
<? ?>
$variable

'Programming > web 관련' 카테고리의 다른 글

node.js  (0) 2014.07.07
부트스트랩 - 웹개발 프레임워크  (0) 2014.07.07
post 방식과 get 방식의 차이점(cache)  (0) 2014.05.15
sql designer(web)  (0) 2014.05.11
호스팅어 / 무료 웹 호스팅  (4) 2014.04.27
Posted by 구차니
Programming/openCV2014. 7. 4. 18:13
도서관에서 빌려와서 보는 책 정리중
OpenCV2를활용한컴퓨터비전프로그래밍
카테고리 컴퓨터/IT > 프로그래밍/언어
지은이 로버트 라가니에 (에이콘출판, 2012년)
상세보기

가장 많이 쓰일 클래스는 Mat인데 Matrix 답게 이미지를 행렬로 처리하는 클래스이다.

변수
rows , cols, step 은 이미지의 수직, 수평 해상도와 step은 실제 폭(색상이나 바이트 얼라인 포함한 data width)을 나타내며
data는 순수 이미지에 대한 포인터를 돌려준다.

메소드
row() col()은 해당 행/열에 대한 새로운 Matrix를 생성하고
channels()는 몇 채널인지를 알려준다. 만약 RGB라면 3개 채널(R,G,B) 흑백이라면 1채널을 돌려준다.
ptr()은 해당 데이터에 대한 포인터를
at()은 해당 데이터를 돌려준다.

class CV_EXPORTS Mat
{
public:
    //! returns a new matrix header for the specified row
    Mat row(int y) const;
    //! returns a new matrix header for the specified column
    Mat col(int x) const;

    /*! includes several bit-fields:
         - the magic signature
         - continuity flag
         - depth
         - number of channels
     */
    int flags;
    //! the matrix dimensionality, >= 2
    int dims;
    //! the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
    int rows, cols;
    //! pointer to the data
    uchar* data;

    //! returns element type, similar to CV_MAT_TYPE(cvmat->type)
    int type() const;
    //! returns element type, similar to CV_MAT_DEPTH(cvmat->type)
    int depth() const;
    //! returns element type, similar to CV_MAT_CN(cvmat->type)
    int channels() const;

    //! returns pointer to (i0,i1) submatrix along the dimensions #0 and #1
    uchar* ptr(int i0, int i1);
    const uchar* ptr(int i0, int i1) const;

    //! template version of the above method
    template<typename _Tp> _Tp* ptr(int i0=0);

    //! the same as above, with the pointer dereferencing
    template<typename _Tp> _Tp& at(int i0=0);

    MSize size;
    MStep step;

}; 

Posted by 구차니
Programming/openCV2014. 7. 4. 13:23
openCV 2.3.1
디버그 모드로 하면 tbb_debug.dll 을 요구함
-> intel TBB 설치 하등가..
[링크 : http://stackoverflow.com/questions/7293160/c-tbb-debug-dll-missing]

크아아아앙 45MB에 2분이나 걸려 받았더니 여기에 두구둥!!!



openCV 2.4.7 / 2.4.9
라이브러리가 깨졌는지 메모리 침범하는 듯한 현상 발생
[링크 : http://stackoverflow.com/.../why-do-the-characters-iiii-get-stuck-onto-the-begining-of-my-strings]


걍 짜증나서 2.3.1에 릴리즈 모드 사용중 ㅠㅠ
일단 tbb 정도는 설치해 볼까나..

'Programming > openCV' 카테고리의 다른 글

opencv2.. VideoCapture 클래스..  (0) 2015.09.25
openCV Mat Class  (0) 2014.07.04
opencv2 highgui  (0) 2014.07.03
opencv2 VideoCapture::get() / set() - 웹캠 설정 읽어오기  (2) 2014.07.03
opencv2 채널분리하기(split)  (0) 2014.07.03
Posted by 구차니
Programming/php2014. 7. 3. 15:48
웹소켓 조만간 쓸일이 있을것 같아서 조사중

[링크 : http://yoontaesub.egloos.com/2045579]
[링크 : http://tools.ietf.org/html/rfc6455]

웹소켓 php 적용 버전
[링크 : https://code.google.com/p/phpwebsocket/ ]


+
[링크 : http://dev.w3.org/html5/websockets/ ]

'Programming > php' 카테고리의 다른 글

lighthttpd / php / FastCGI  (0) 2014.08.28
php5 class / object oriented programming  (4) 2014.07.07
php 로그인 예제  (0) 2014.05.19
php framework / 읽을꺼리  (0) 2014.04.09
php 메뉴얼  (0) 2014.03.28
Posted by 구차니
Programming/openCV2014. 7. 3. 15:02
highgui는 이미지를 불러오거나 GUI를 꾸미기 위한 기능을 지원한다.

크게는 윈도우 생성/조절/파괴 및 키 입력대기
CV_EXPORTS_W void namedWindow(const string& winname, int flags = WINDOW_AUTOSIZE);
CV_EXPORTS_W void destroyWindow(const string& winname);
CV_EXPORTS_W void destroyAllWindows();

CV_EXPORTS_W void resizeWindow(const string& winname, int width, int height);
CV_EXPORTS_W void moveWindow(const string& winname, int x, int y);

CV_EXPORTS_W int waitKey(int delay = 0);

이미지 불러오기/저장/출력
CV_EXPORTS_W void imshow(const string& winname, InputArray mat);
 
CV_EXPORTS_W Mat imread( const string& filename, int flags=1 );
CV_EXPORTS_W bool imwrite( const string& filename, InputArray img, const vector<int>& params=vector<int>());
CV_EXPORTS_W Mat imdecode( InputArray buf, int flags );
CV_EXPORTS Mat imdecode( InputArray buf, int flags, Mat* dst );
CV_EXPORTS_W bool imencode( const string& ext, InputArray img,
                            CV_OUT vector<uchar>& buf,
                            const vector<int>& params=vector<int>()); 

비디오 캡쳐(파일 및 웹캠 지원)
class CV_EXPORTS_W VideoCapture
{
public:
    CV_WRAP VideoCapture();
    CV_WRAP VideoCapture(const string& filename);
    CV_WRAP VideoCapture(int device);

    virtual ~VideoCapture();
    CV_WRAP virtual bool open(const string& filename);
    CV_WRAP virtual bool open(int device);
    CV_WRAP virtual bool isOpened() const;
    CV_WRAP virtual void release();

    CV_WRAP virtual bool grab();
    CV_WRAP virtual bool retrieve(CV_OUT Mat& image, int channel=0);
    virtual VideoCapture& operator >> (CV_OUT Mat& image);
    CV_WRAP virtual bool read(CV_OUT Mat& image);

    CV_WRAP virtual bool set(int propId, double value);
    CV_WRAP virtual double get(int propId);

protected:
    Ptr<CvCapture> cap;
};


class CV_EXPORTS_W VideoWriter
{
public:
    CV_WRAP VideoWriter();
    CV_WRAP VideoWriter(const string& filename, int fourcc, double fps,
                Size frameSize, bool isColor=true);

    virtual ~VideoWriter();
    CV_WRAP virtual bool open(const string& filename, int fourcc, double fps,
                      Size frameSize, bool isColor=true);
    CV_WRAP virtual bool isOpened() const;
    CV_WRAP virtual void release();
    virtual VideoWriter& operator << (const Mat& image);
    CV_WRAP virtual void write(const Mat& image);

protected:
    Ptr<CvVideoWriter> writer;
};  




Posted by 구차니
Programming/openCV2014. 7. 3. 14:35

v4l2의 문제인지 설정은 잘안되고
못 불러 오는 설정사항도 많다 -_-a

VideoCapture::get
C++: double VideoCapture::get(int propId)
C: double cvGetCaptureProperty(CvCapture* capture, int property_id)

propId – Property identifier. It can be one of the following:
– CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds or video capture timestamp.
– CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
– CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
– CV_CAP_PROP_FPS Frame rate.
– CV_CAP_PROP_FOURCC 4-character code of codec.
– CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
– CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
– CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
– CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
– CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
– CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
– CV_CAP_PROP_HUE Hue of the image (only for cameras).
– CV_CAP_PROP_GAIN Gain of the image (only for cameras).
– CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
– CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
– CV_CAP_PROP_WHITE_BALANCE Currently not supported
– CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently) 

웹캠 설정 덤프
주석처리한 두개는 2.3.1에서는 지원하지 않고 2.4.9 에서 지원하는 항목이다.
                VideoCapture cap(0);
 
               cout << "POS_MSEC : "           << cap.get(CV_CAP_PROP_POS_MSEC) << endl;
                cout << "POS_FRAMES : "         << cap.get(CV_CAP_PROP_POS_FRAMES) << endl;
                cout << "POS_AVI_RATIO : "      << cap.get(CV_CAP_PROP_POS_AVI_RATIO) << endl;
                cout << "POS_FRAME_WIDTH : "    << cap.get(CV_CAP_PROP_FRAME_WIDTH) << endl;
                cout << "POS_FRAME_HEIGHT : "   << cap.get(CV_CAP_PROP_FRAME_HEIGHT) << endl;
                cout << "FPS : "                << cap.get(CV_CAP_PROP_FPS) << endl;
                cout << "FOURCC : "             << cap.get(CV_CAP_PROP_FOURCC) << endl;
//              cout << "FRAME_OUT : "          << cap.get(CV_CAP_PROP_FRAME_OUT) << endl;
                cout << "FORMAT : "             << cap.get(CV_CAP_PROP_FORMAT) << endl;
                cout << "MODE : "               << cap.get(CV_CAP_PROP_MODE) << endl;
                cout << "BRIHTNESS : "          << cap.get(CV_CAP_PROP_BRIGHTNESS) << endl;
                cout << "CONTRAST : "           << cap.get(CV_CAP_PROP_CONTRAST) << endl;
                cout << "SATURATION : "         << cap.get(CV_CAP_PROP_SATURATION) << endl;
                cout << "HUE : "                << cap.get(CV_CAP_PROP_HUE) << endl;
                cout << "GAIN : "               << cap.get(CV_CAP_PROP_GAIN) << endl;
                cout << "EXPOSURE : "           << cap.get(CV_CAP_PROP_EXPOSURE) << endl;
                cout << "CONVERT_RGB : "        << cap.get(CV_CAP_PROP_CONVERT_RGB) << endl;
//              cout << "WHITE_BALANCE : "      << cap.get(CV_CAP_PROP_WHITE_BALANCE) << endl;
                cout << "RECTIFICATION : "      << cap.get(CV_CAP_PROP_RECTIFICATION) << endl; 



'Programming > openCV' 카테고리의 다른 글

openCV2 관련 꿍시렁 꿍시렁  (0) 2014.07.04
opencv2 highgui  (0) 2014.07.03
opencv2 채널분리하기(split)  (0) 2014.07.03
opencv2 rgb2hsv color space 변환하기  (0) 2014.07.02
openCV2 2.3.1 ubuntu 컴파일하기  (0) 2014.07.01
Posted by 구차니
Programming/openCV2014. 7. 3. 14:02
core.hpp에 선언되어 있는 split을 사용하면 된다.
//! makes multi-channel array out of several single-channel arrays
CV_EXPORTS void merge(const Mat* mv, size_t count, OutputArray dst);
//! makes multi-channel array out of several single-channel arrays
CV_EXPORTS_W void merge(const vector<Mat>& mv, OutputArray dst);
    
//! copies each plane of a multi-channel array to a dedicated array
CV_EXPORTS void split(const Mat& src, Mat* mvbegin);
//! copies each plane of a multi-channel array to a dedicated array
CV_EXPORTS_W void split(const Mat& m, CV_OUT vector<Mat>& mv); 

vector<Mat> 형으로 변수를 선언하여
split(src, dst); 식으로 사용하면 되며
imshow에서 channel[0] 이런식으로 하면 채널별로 출력하면 된다.

[링크 : http://opencvexamples.blogspot.com/2013/10/split-and-merge-functions.html#.U7TjMPl_vKl]
[링크 : http://compvisionlab.wordpress.com/2013/03/07/opencv-basics-splitting-rgb-channels/]
[링크 : http://denislantsman.com/?p=103]
[링크 : http://baram4815.tistory.com/entry/OpenCV-2이미지에서-RGB-채널-분리
[링크 : http://baram4815.tistory.com/entry/OpenCVsplit-and-merge]
Posted by 구차니