NeoMulti

블로그 이미지
by 사힐
  • Total hit
  • Today hit
  • Yesterday hit

'What/C++'에 해당되는 글 9건

  1. 2019.05.06
    VTK 알아보기
  2. 2013.09.05
    수학
  3. 2013.09.05
    네트워크 프로그래밍
  4. 2012.07.09
    VFW 캡쳐 클래스
  5. 2011.12.02
    인공지능 알고리즘 관련 사이트 1
  6. 2011.12.02
    Windows API MSDN 2
  7. 2011.07.24
    오픈 MP방법
  8. 2011.07.15
    컴파일러 버전별 매크로 상수값(_MSC_VER)
  9. 2011.07.15
    유니코드에서 CString to char* 로 바꾸는 방법

http://blog.naver.com/hextrial/60149851282

 

[VTK] VTK 알아보기

VTK에 대한 설명 - 참고 사이트 : http://cafe.naver.com/myvision2/116 VTK 패키지 빌드정리(VS20...

blog.naver.com

VTK에 대한 설명 - 참고 사이트 : http://cafe.naver.com/myvision2/116

 

VTK 패키지 빌드정리(VS2005 기준) : http://tcltk.co.kr/node/1098

VTK를 VC의 MFC에서 이용하기 : http://blog.naver.com/hchakim/30028210281

VTK 위키 : http://www.vtk.org/Wiki/VTK

VTK 홈페이지 : http://www.vtk.org

VTK 다운로드 : http://www.vtk.org/VTK/resources/software.html

 

VTK 한글 강좌 (파이썬): http://blog.naver.com/futuredm/30001774750

VTK 예제(VTK 위키) : http://www.vtk.org/Wiki/VTK/Examples/Cxx

VTK 강좌 (Tutorial) : http://www.vtk.org/Wiki/VTK/Tutorials

 

VTK source ref.  http://www.vtk.org/doc/nightly/html/index.html

 

 

 

[좌표공간]

VTK는 일반적으로 right-hand coordinate를 따른다

[출처] [VTK] VTK 알아보기|작성자 FocalL

 

AND

http://blog.daum.net/w-ko/128

 

 

AND

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/Network_Programing

 

http://www.synch3d.com/winsock/

 

http://killins.egloos.com/1567996



*이기탁님의 데브피아 강좌 파일

iocp1.doc



AND

영상 VFW Capture Class

 
- 일반적인 영상 보드는 TV수신 카드이다. 제작 회사에서는 개발 API를 제공하지 않으므로 윈도우에서 영상 Capture를 위하여 속도는 느리지만 Video For Windows(VFW)를 이용한다. VFW를 이용하게 되면 다른 TV수신카드 뿐만아니라 VFW를 지원하는 전문 Image Grabber, USB카메라에 이르기까지 동영상 또는 정지화상을 Capture를 할수 있으므로 소스를 수정하지 않더라도 좋은 호환성을 지니게 된다.

- C++을 위한 Capture Class의 설계
LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);//캡쳐후에 호출되는 콜백함수
LPBYTE m_lpDib; //콜백 함수내에서 이미지 포인터를 넘겨받아 저장하는 포인터
unsigned long m_BufferLength; // 콜백 함수내에서 저장되는 버퍼의 길이를 저장하는 변수

class CVFWCapture
{
public:
CVFWCapture(); // 생성자
void Scale(BOOL onoff); // 스케일 조정 함수
BOOL Connect(HWND hWnd,int left=0,int top=0,int right=320,int bottom=240);
BOOL Disconnect();
void VideoSource(); //Source설정 대화창
void VideoFormat(); //Format설정 대화창
void VideoDisplay(); //Display설정 대화창
HWND m_CaptureWnd;//캡쳐된 윈도우의 핸들
int m_Connect; // 연결되었는경우 TRUE 연결되지 않은경우 FALSE
int m_ImgYsize; //영상의 X크기를 저장
int m_ImgXsize; //영상의 Y크기를 저장
~CVFWCapture(); //소멸자
};

- CVFWCapture의 사용순서

시작시 : Connect함수를 호출한다 이때 화면이 출력될 윈도우의 핸들과 윈도의 오프셋을 조정할 수 있는 인자를 넘겨준다. 호출후에 성공이면 TRUE, 실패면 FALSE를 넘겨주며 m_Connect에 그 값이 저장된다.
연결후 : VideoSource(),VideoFormat(),VideoDisplay,Scale() 함수를 호출하여 영상의 입력 속성 등을 바꿀 수 있다.
종료시 : Disconnect()함수를 호출 함으로서 연결을 닫는다. 물론 소멸자가 호출 될때 자동으로 Disconnect가 호출 된다.

- CallBack함수의 사용
영상에 캡쳐되어 메모리 버퍼에 저장되면 CallBack함수가 실행되게 된다. Callback함수는 CVFWCapture클래스 안에 들어 있지 않으며, 모든 영상처리를 가능하면 Callback함수 안에서 처리하는편이 안전하다. 만약 비디오 버퍼의 내용이 일반적인 타이머 안에서 처리하게 되면 처리도중 영상 캡쳐로 인해 내용이 바뀔 수 있으며 캡쳐된 영상을 다른 곳으로 한부 더 복사하는것도 시간낭비, 메모리 낭비가 되기 때문이다.
LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
m_lpDib = lpVHdr->lpData;//프레임 이미지 저장
m_BufferLength = lpVHdr->dwBufferLength;//이미지 버퍼의 크기

//실제 영상처리 작업을 이곳에 넣는다.

return TRUE;
}


//---------------------------- VFWCapture.h
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include
// VFWCapture.h : header file
//

// 전역변수와 함수들
LRESULT FAR PASCAL FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
extern LPBYTE m_lpDib;
extern LONG m_nFrameTime;
extern unsigned long m_BufferLength;

/////////////////////////////////////////////////////////////////////////////
// CVFWCapture window

class CVFWCapture
{
// Construction
public:
CVFWCapture();

// Attributes
public:

// Operations
public:

// Implementation
public:
void Scale(BOOL onoff);
BOOL Connect(HWND hWnd,int left=0,int top=0,int right=320,int bottom=240);
BOOL Disconnect();
void VideoSource();
void VideoFormat();
void VideoDisplay();
HWND m_CaptureWnd;
int m_Connect;
int m_ImgYsize;
int m_ImgXsize;
~CVFWCapture();

};




//---------------------------- VFWCapture.cpp: implementation file

#include "stdafx.h"
#include "BGPRJ.h"
#include "VFWCapture.h"
#include
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


LPBYTE m_lpDib;
LONG m_nFrameTime;
unsigned long m_BufferLength;


/////////////////////////////////////////////////////////////////////////////
// CVFWCapture

CVFWCapture::CVFWCapture()
{
    m_Connect = false;
}

CVFWCapture::~CVFWCapture()
{
if(m_Connect == TRUE){
Disconnect();
}
}


/////////////////////////////////////////////////////////////////////////////
// CVFWCapture message handlers

void CVFWCapture::VideoDisplay()
{
    capDlgVideoDisplay(m_CaptureWnd);
    CAPSTATUS s;
    capGetStatus(m_CaptureWnd,&s,sizeof(s));
    m_ImgXsize=s.uiImageWidth;
    m_ImgYsize=s.uiImageHeight;
}

void CVFWCapture::VideoFormat()
{
    capDlgVideoFormat(m_CaptureWnd);
    CAPSTATUS s;
    capGetStatus(m_CaptureWnd,&s,sizeof(s));
    m_ImgXsize=s.uiImageWidth;
    m_ImgYsize=s.uiImageHeight;
}

void CVFWCapture::VideoSource()
{
    capDlgVideoSource(m_CaptureWnd);
    CAPSTATUS s;
    capGetStatus(m_CaptureWnd,&s,sizeof(s));
    m_ImgXsize=s.uiImageWidth;
    m_ImgYsize=s.uiImageHeight;
}

BOOL CVFWCapture::Disconnect()
{
if(m_Connect==FALSE) return FALSE;
if (capDriverDisconnect(m_CaptureWnd) == TRUE) return TRUE;
m_Connect=FALSE;
return FALSE;
}

BOOL CVFWCapture::Connect(HWND hWnd,int left,int top,int right,int bottom)
{
int nID = 0;
if(m_Connect==TRUE) return FALSE;
DWORD dwStyle = WS_CHILD | WS_VISIBLE;
m_CaptureWnd = capCreateCaptureWindow("Capture Window", dwStyle, left, top, right, bottom, hWnd, nID);
BOOL bConnect = FALSE;
bConnect = capDriverConnect(m_CaptureWnd, 0);
if(bConnect == FALSE){
        ::DestroyWindow(m_CaptureWnd);
AfxMessageBox("Capture Driver Connect Fail..");
return FALSE;
}

    CAPSTATUS s;
    capGetStatus(m_CaptureWnd,&s,sizeof(s));
    m_ImgXsize=s.uiImageWidth;
    m_ImgYsize=s.uiImageHeight;

capSetCallbackOnFrame(m_CaptureWnd, (LPVOID)FrameCallbackProc);
capPreview(m_CaptureWnd, TRUE);
capPreviewRate(m_CaptureWnd, 33);
// capOverlay(m_CaptureWnd, TRUE);
capGrabFrameNoStop(m_CaptureWnd);
   capPreviewScale(m_CaptureWnd, TRUE);

    m_Connect=true;
    return TRUE;
}

void CVFWCapture::Scale(BOOL onoff)
{
   capPreviewScale(m_CaptureWnd, onoff);
}

 

출처 : http://sigi1404.tistory.com/entry/VFW-%EC%BA%A1%EC%B3%90-%ED%81%B4%EB%9E%98%EC%8A%A4

AND

http://gameai.net/

http://occam.n4gate.com/occam.php/OccamsRazorMain

http://www.gpgstudy.com/forum/index.php

[게임 인공지능 관련]


http://www.gameai.com/

- 게임 인공지능에 대하여 폭넓게 다루고 있는 영문 사이트


http://www.gpgstudy.com/gpgiki/AiLove

- 게임 인공지능 관련 블로그. 번역문서들이 많음


http://www.gamesync.com.ne.kr/gamedev.net/prog_ai.html

- GameDev.net 한글문서 프로젝트. 게임 인공지능 관련문서들의 번역이 진행중


http://gpgstudy.com/forum/viewforum.php?f=10

- Gpgstudy의 인공지능 관련 포럼. 여러 가지 게임 인공지능에 대한 토론들이 이루어짐


http://www-903.ibm.com/developerworks/kr/robocode/robocode.html

- IBM의 로보코드 관련 사이트



[일반 인공지능 관련]


http://www.gurugail.com/

- 국내 최대의 인공지능 관련 커뮤니티


http://www.aistudy.co.kr/

- 인공지능에 대한 방대한 자료를 제공하는 사이트


[인공생명 관련]


http://myhome.naver.com/altoz/

- 인공생명에 대한 프로젝트를 진행하던 사이트. 지금은 활동 정지


http://chaos.inje.ac.kr/Alife/

- 인공생명 관련 주제들이 잘 정리되어 있는 조용현님의 사이트


http://www.red3d.com/cwr/

- 플로킹의 창시자, 크레이그 레이놀즈의 사이트


http://www.sodaplay.com/

- 몇 가지 파라미터를 사용하여 실제 생명체와 같은 움직임을 시뮬레이션하는 사이트


http://www.navgen.com/3d_boids/

- 플로킹을 3D로 시뮬레이션한 프로그램을 소개


http://brando.farky.net/565/

- 플로킹을 사용하여 물고기떼를 구현한 DirectX 기반의 프로그램을 소개


http://www.codepuppies.com/~steve/aqua.html

- 플로킹을 사용하여 물고기떼를 구현한 자바 애플릿 프로그램



[게임제작 관련]


http://kgda.org/

- 한국 게임 개발자 협회. 게임제작 관련한 국내 최대의 사이트


http://www.spirit3d.net/

- 3D 게임 그래픽 프로그래밍 관련 문서들이 잘 정리되어 있는 사이트


http://www.gpgstudy.com/

- Game Programming Gems의 번역자인 류광님이 운영하시는 사이트. 번역된 좋은 문서들이 많음


http://occam.n4gate.com/

- 게임관련 책 번역가로 유명하신 류광님의 홈페이지


http://www.g-matrix.pe.kr/

- 김성완님이 운영하시는 사이트. 게임제작과 관련된 문서들이 잘 정리되 있음


http://www.gamedesignerz.net/

- 게임 기획 및 디자인 관련 사이트.


http://www.gamecode.org/

- 게임 프로그래밍 관련 기술들의 공유와 포럼을 위한 사이트


[기타]

http://www.deepseas.co.kr/

- 운영자의 개인 홈페이지(^_^;)

AND
AND

OpenMP 에 대한 글을 검색 중에 아주 좋은 글 발견.

노하우 1 :http://sunyzero.egloos.com/4227785

노하우 2 :http://sunyzero.egloos.com/4229235

3 HOWTO :http://sunyzero.egloos.com/4234766

노하우 4 :http://sunyzero.egloos.com/4258873

 

 다음 서적도 좋다.

사실 이 외에는 읽은 서적이 없다...-_-

 

OpenMP를 사용하여 - Protable 공유 메모리 병렬 프로그래밍

출처 : http://blog.naver.com/electrlose/110094230256

AND
vs4.0 : 1000
vs5.0 : 1100
vs6.0 : 1200
vs7.0(2003) : 1300
vs8.0(2005) : 1400
vs9.0(2008) : 1500
vs10.0(2010) : 1600

AND

CString -> char*

CString str = _T("권오철");
char *buffer = new char[str.GetLength()];

strcpy(buffer,CT2A(str));
buffer;

 

delete buffer;



 

String -> char*

char ch[100];

strcpy(ch,(LPSTR)(LPCTSTR)"나는 누구인가?");

 

CString -> BYTE

BYTE msgProxy.byData;

CString strText = _T("ㅇㅇㅇ");

memcpy(msgProxy.byData,T2CA(strText), nLen);

 

BYTE byBuffer[100];

CString strText = _T("DDD");

strcpy((LPSTR)byBuffer,T2CA(strText));
  m_SocketManager.WriteComm( byBuffer, nLen, INFINITE);

 

char * -> CString

CString str = (LPCTSTR)(LPSTR)char *  // 이방법은 좋지 않다 .. 글씨가 깨진다

 

char getMessage[100] = "나는 천재인가";
 CString strMessage;
 strMessage.Format(_T("%s"),CA2T(getMessage));

AND

ARTICLE CATEGORY

분류 전체보기 (26)
Imagine cup 2007 (2)
What (23)
Development Tool (7)
C++ (9)
COM (0)
영화 (1)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

ARCHIVE