본문 바로가기

분류 전체보기

error C2661: 'pcl::PointCloud<PointT>::operator new' : no overloaded function takes 3 arguments PCL 라이브러리를 사용하다보니 아래와 같은 오류가 발생하였다.error C2661: 'pcl::PointCloud::operator new' : no overloaded function takes 3 arguments PCL 라이브러리에서 제시한 방법으로 선언을 했지만 어이가 없게도 new 연산자에서 오류가 난다....PointCloud::Ptr cloud(new PointCloud);// x, y, z, r, g, b 구글링을 해보니 잘 나오지 않았는데 www.pcl-user.org 에서 heap을 늘려보라는 생각치도 못한 답변이.... 프로젝트의 속성 > C/C++ > 명령줄의 추가 옵션 부분에 /Zm1000를 입력하고 확인 버튼을 누르니 놀랍게도 오류가 사라졌다....factor의 값메모리 할당 .. 더보기
C++ 표준 라이브러리 헤더 파일 출처 : http://ko.cppreference.com/w/cpp/header C++ 표준 라이브러리 헤더 파일 C++ Standard Library header files C++ 표준 라이브러리의 인터페이스는 아래의 헤더 파일들 내에 정의되어 있습니다.유틸리티 라이브러리범용 유틸리티: 프로그램 통제, 동적 메모리 할당, 난수, 정렬 및 탐색시그널 관리를 위한 함수와 매크로 상수Macro (and function) that saves (and jumps) to an execution context가변 길이 인수 목록의 처리런타임 자료형 정보 유틸리티 (since C++11)std::type_index (since C++11)컴파일 시간 자료형 정보std::bitset 클래스 템플릿표준 알고리즘과 함께 .. 더보기
error C3859: PCH에 대한 가상 메모리 범위를 초과했습니다.에러 출처 : http://blog.naver.com/PostView.nhn?blogId=jinlee25&logNo=40088677597 error C3859: PCH에 대한 가상 메모리 범위를 초과했습니다. 명령줄 옵션을 '-Zm값' 이상으로 지정하여 다시 컴파일하십시오.fatal error C1076: 컴파일러 한계 : 내부 힙 한계에 도달했습니다. /Zm을 사용하여 한계를 더 높게 지정하십시오.툴만들려고 하니 날 당황스럽게 한 에러.위에러는 미리컴파일한 헤더 결과 용량이.. 미리 컴파일한 헤더 이용할때 생기는 PCH파일 할당용량이 보다 더 크게 될때 발생한다고 한다.(이렇게 쓰니 좀 이상해지네 아무튼 PCH 용량부족하다고VS가 츤츤데는것다)(미리 컴파일해 놓은 결과인 PCH 파일을 사용한다.)당황하지말고.. 더보기
error C2589 에 대한 고찰과 문제 해결방법 출처 : http://tommyhsm.tistory.com/100 MFC에서 PCL을 사용하려고 작업하는 중에, 다음과 같은 에러가 떴다. ...Warning C4003: 'max' 매크로의 실제 매개 변수가 부족합니다.error C2589: '(' : '::' 오른쪽에 잘못된 토큰이 있습니다.error C2988: 템플릿 선언/정의를 인식할 수 없습니다.error C2059: 구문 오류 : '::'... 도대체 뭐가 문제일까.. 하면서 고민 하던 중, 공통점은 max 매크로의 실제 매개 변수가 부족하다 라는 공통된 경고를 깨닫게 되었고, error C2589로 검색을 하던중, 한 블로그에 들어가서 문제점과 해결방법을 알게 되었다. 참조 블로그 링크 : http://blog.naver.com/smurfe.. 더보기
[OpenCV] RGB Color를 Grayscale로 변환하기 출처 : http://cinema4dr12.tistory.com/entry/OpenCV-RGB-Color%EB%A5%BC-Grayscale%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0 이번 글에서는 OpenCV에서 RGB 컬러를 Grayscale로 변환하는 방법에 대하여 알아보도록 하겠다. 우선 이론적으로 살펴보면, 가장 널리 사용되는 방법 중 하나가 Luma Coding(https://en.wikipedia.org/wiki/Grayscale)을 이용한 방법인데, 수식은 다음과 같다: 여기서, R', G', B'은 Red, Green, Blue 채널에 대한 비디오 시스템의 Gamma-compressed 값이다. 이들로부터 계산된 Y'은 비선형 Luma 컴포넌트(Non.. 더보기
이클립스 실행시 JVM 지정 이클립스를 실행할 때 환경변수에 JAVA_HOME을 넣지 않는 경우 이클립스 시작시 다음과 같은 메세지를 출력한다.(필자는 자바 업데이트를 수행하였는데 갑자기 이런 문제가 발생하였다...) 이는 이클립스가 구동될 때 JVM을 못찾아서 그런 것이다. JAVA_HOME 환경변수를 잡으면 해결이 되긴 하지만, 그렇게 되면 다른 어플리케이션에도 환경변수가 영향을 미칠 수 있기 때문에 이클립스에만 jvm 위치를 지정하는 경우가 좋을 수도 있다. 방법은 eclipse.ini 파일을 편집하여 다음과 같이 빨간 부분을 추가 해주면 해결된다. -startupplugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar--launcher.libraryplugins/org.eclips.. 더보기
MFC에서 Web Browser Control을 사용했을 때 IE버전이 다를 경우 Script Error가 발생할 때가 있는데 PC는 64bit일 때 출처 : http://www.cnblogs.com/philzhou/archive/2012/12/02/2798204.html 위의 사이트에 들어가보면 영어로 쏼라쏼라 돼있다....구글링해서 많은 한글 사이트를 뒤져보다보면 아래와 같은 레지스트리 경로에 "자신의 어플리케이션.exe" 형태로 DWORD를 등록하라고 나온다.등록했지만 해결이 되지 않았다.... 끈질긴 구글링 끝에 해결책을 찾았다... 나는 현재 64bit 환경에서 개발을 하고 있기때문에 아래의 64bit 일 때의 경로에 "자신의 어플리케이션.exe" 형태로 DWORD를 등록하고 값(Value)은 자신의 Internet Explorer 버전 x 1000을 써주면 된다(물론 10진수 형태로... IE 11을 사용할 경우 11000) There ar.. 더보기
cout 출력 포맷 설정하기 출처 : http://repilria.tistory.com/243 cout은 ostream의 메서드이며, ostream 클래스는 ios 클래스로부터 상속되고, ios 클래스는 ios_base 클래스로부터 상속된다. ios_base 클래스는 출력 상태를 서술하는 정보를 가지고 있다. 1. 진법 변경 Manipulator를 사용하여 화면에 정수를 출력할 때 사용되는 진법을 제어하며, ios_base의 멤버 함수를 사용하여 필드 폭과 소수점 아래 자릿수를 제어할 수 있다. 즉, hex(cout)과 같은 함수 호출은 cout 객체의 수치 출력을 16진수로 설정하며, 다른 진법으로 다시 설정될 때 까지 모든 정수들을 16진법으로 출력한다. 또한 cout 더보기
MFC에서 콘솔(console) 출력하기 출처 : http://stupidmb.tistory.com/41 MFC 프로젝트에 보면 stdafx.cpp 있잖아요? 거기에... #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") 추가하면 실행시 콘솔창이 뜨고 거기에 printf 등의 결과가 출력됨~~ 끄읏~ 더보기
[JSP] HTTP 에러코드 정리 출처 : http://hyeonstorage.tistory.com/97 HTTP 에러코드 정리 - HTTP 에서 에러가 발생하면 해당 에러와 관련 에러 코드를 발생한다. - 이 많은 에러들을 다 알고 있을 필요는 없지만 이번에는 이 에러 코드를 정리해 해보겠다. - 주로 많이 발생하는 에러는 404, 500 에러 이다. HTTP 에러코드 에러 메시지 100 Continue 101 Switching Protocols200 OK, 에러 없이 전송 성공 202 Accepted, 서버가 클라이언트의 명령을 받음 203 Non-authoritative Information, 서버가 클라이언트 요구 중 일부만 전송함 204 Non Content, 클라이언트 요구를 처리했으나 전송할 데이터가 없음 205 Reset .. 더보기
[CUDA] nVidia GPU의 CUDA 관련상세 Specification 정보 알아보기 출처 : http://icysword.blog.me/140202060932 nVidia GPU의 CUDA 관련상세 Specification 정보 알아보기 CUDA 학습을 하기 위하여 nVidia 그래픽 카드 장착후 해당 GPU의 상세 스펙을 알고 싶은데, 사이트에서 찾을 수가 없다. (내가 영어가 약해서 잘 찾지를 못하는 건가 ??? ㅠㅠ) 간단한 예제 프로그램으로 해당 정보를 알 수가 있다. [-] Collapse 위의 Code로 cu 파일을 만들어서 실행하면 화면에 CUDA 관련 상세한 Spec이 출력된다. cudaDeviceProp 의 각 Property의 의미는 아래와 같다. [-] Collapse 위의 방법 말고도 CUDA 설치 파일 중에 deviceQuery.exe 파일을 실행해도 된다. de.. 더보기
[CUDA] 용어 정리 출처 : http://icysword.blog.me/140202059108 SP (Streaming Processor) : GPU 에서 연산을 하는 코어 유닛. 연산을 위한 레지스터, 실수연산용FPU (FP), 정수연산용 ALU (Int), 데이터 로드/스토어용 LSU (move, cmp) . CUDA에서 4개의 Thread를 동작 SFU (Special Function Unit) : Sin, Cos, 역수, 제곱근, Graphic Interpolation 등 특수연산 SM (Streaming Multiprocessor) : 8개 SP, 2개의 SFU, 공유메모리, 캐시로 구성. CUDA에서 워프와 블록을 실행 GTX 770 같은 경우는 8 SM x 192 Core = 1536 CUDA Core 이다. .. 더보기
[CUDA] Visual Studio 2013에서 CUDA 개발 환경 구축 출처 : http://bwoh.tistory.com/79 VS2013에서 CUDA 개발 환경 구축 CUDA설치방법(VS2013).pdf 위의 pdf 파일을 열 수 없으신 분들은 다음의 그림들을 참조하십시오. Microsoft Dream Spark : http://www.dreamspark.comCUDA-Zone : http://developer.nvidia.com/cuda-zoneCUDA 6.5 다운로드: http://developer.nvidia.com/cuda-downloads (아래 그림 링크는 안 열리니 위의 링크를 사용하세요~) 더보기
[CUDA] CUDA C 프로그래밍 예제 출처 : http://blog.naver.com/lsh00124/220648533555 CUDA C 프로그래밍 예제 Standard C Code C with CUDA extensions 호스트, 디바이스 메모리 할당 및 초기화 호스트에서 디바이스로 메모리 카피 커널 실행 디바이스에서 호스트로 메모리 카피(결과값 전달) 호스트, 디바이스 메모리 할당 예제 더보기
프론트엔드 개발자에 대한 고찰 개발 이야기 출처 : http://enarastudent.tistory.com/entry/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EC%B0%B0 누구나 알다시피 최근 웹 기술의 경향은 단연 클라이언트 쪽에 집중되어 있다. 수 년전을 비교해 보면 엄청난 변화이다. 웹 개발은 크게 프론트엔드와 백엔드로 나누어져 있지만, 국내에서는 프론트엔드 보다 백엔드 개발자 흔히 '웹 프로그래머' 혹은 '웹 개발자'라고 부르는 사람들의 가치가 더 높았다. 다시 말해서 몸값이 더 비쌌다는 이야기다. 하지만, 웹 프론트엔드가 더 복잡해지고 다양한 기술이 쏟아지면서, 프론트엔드 개.. 더보기
[Drone] 용어 사전 드론 스타팅! 용어 사전http://www.dronestarting.com/glossary/ 더보기
FFMPEG 디코딩 API 사용법 영상을 다루는 사람들은 FFMPEG 라이브러리를 모르는 사람을 없을 것이다. 그래.. 많다. 안 쓰이는 곳이 없으니 웬만한 동영상 플레이어도 FFMPEG 라이브러리를 사용해서 재생한다. 물론 Directshow 를 이용해서 하기도 하지만 Directshow의 ffdshow도 FFMPEG 라이브러를 사용하니…이 라이브러리는 방대하다. 웬만한 코덱은 다 지원하다 보니 덩치가 겁나 크다. 그런데 한동안 libav 라고 해서 잠시 분리되어 프로젝트가 진행되기도 하다 보니 API 인터페이스가 다른(?) 상황도 있었다. 뭐 지금은 다시 통합되었지만… 구글에서 ffmpeg 관련에서 문의 하다 보면 관련 샘플 코드가 어떤건 libav , 어떤건 ffmpeg 으로 작성되어 있는 경우도 있었다. 뭐 그다지 크게 다르진 않.. 더보기
LNK2019 외부 기호 참조 위치 함수 에서 확인 하지 못했습니다 출처 : http://sanglog.blogspot.kr/2015/02/opencv-249-visual-studio-2013.html 더보기
영상처리 : Visual Studio 2013에서 OpenCV 3.1 설치하기 출처 : http://andrew0409.tistory.com/154http://freeprog.tistory.com/91 더보기
[NEON] 수학, 이항, 스칼라 연산 1. 수학연산NEON에서는 수학 함수로 역수와 역수 제곱근에 관련된 함수를 제공한다. (제곱근 함수는 지원하지 않는다.) 1.1 역수 함수벡터의 각 레인에 대해서 역수를 계산한다. float32x4_t r = vrecpeq_f32(float32x4_t a) 1을 레인의 값으로 나누고 그 결과를 저장한다. 1.2 역수 제곱근 함수벡터의 각 레인에 대해서 제곱근의 역수 값을 계산한다.float32x4_t r = vrsqrteq_f32(float32x4_t a)레인의 제곱근 값으로 나누고 그 결과를 저장한다. 수식으로 풀면 r = 1/sqrt(a) 1.3 역수 확장 함수2에서 두 벡터의 레인 사이의 곱하기 연산 결과를 뺀다. 이를 식으로 나타내면 r = 2 - (a * b)와 같다. float32x2_t vr.. 더보기
[NEON] 변환 연산 1. NEON 변환 연산벡터의 변환은 NEON의 모든 연산에서 유용하게 사용되며, 필요에 따라서 여러 방법으로 사용할 수 있다.벡터의 변환은 더블 워드 벡터를 연산하여 쿼드 워드 벡터에 저장하거나, 그 반대의 경우 포화 연산을지원하지 않는 연산에서 오버플로를 방지하기 위해서 사용된다. 1.1 벡터 결합 함수벡터를 두 배 크기로 확장할 때 벡터 결합을 사용한다.벡터 결합 함수는 레인의 수는 변경되고, 레인의 크기는 변경되지 않는다. int16x8_t r = vcombine_s16(int16x4_t a, int16x4_t b)16bit 레인 더블 워드 벡터 2개를 결합하여 16bit 레인 쿼드 워드 벡터를 생성한다. 1.2 벡터 분할 함수벡터 변수의 분할은 high분할과 low 분할로 나뉜다.결합과 마찬가지.. 더보기
[NEON] 비교 연산과 절대값 1. 비교 연산1.1 같음(==) 비교 함수벡터 사이에 레인 값이 같은지 비교한다. uint16x8_t r = vceqq_s16(int16x8_t a, int16x8_t b)벡터 a와 b의 레인이 같은 값인지 비교하여 벡터 r의 각 레인에 결과가 참이면 16진수로0xffff, 거짓이면 16진수로 0x0000을 저장한다. 1.2 크거나 같음(>=) 비교 함수벡터 사이에 레인 값이 크거나 같은지 비교한다. uint16x8_t r = vcgqe_s16(int16x8_t a, int16x8_t b)벡터 a가 b보다 크거나 같은지 비교하여 벡터 r의 각 레인에 그 결과가 참이면0xffff, 거짓이면 0x0000을 저장한다. 1.3 작거나 같음() 비교 함수벡터 사이에 레인 값이 큰지를 비교한다. uint16x8_.. 더보기
[NEON] 비트와 시프트 연산 1. 비트 연산1.1 NOT(~)연산uint8x8_t r = vmvn_u8(uint8x8_t a)벡터의 모든 레인에 NOT 연산을 실행 1.2 AND(&) 연산uint8x8_t r = vand_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 AND(&)연산을 실행 1.3 OR(|) 연산uint8x8_t r = vorr_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 OR(|) 연산을 실행 1.4 XOR(^) 연산uint8x8_t r = veor_u8(uint8x8_t a, uint8x8_t b)두 벡터의 레인 사이에 XOR(^) 연산을 실행 1.5 AND NOT(&~) 연산uint8x8_t ar = vbic_u8(uint8x8_t a, uint8x8_t .. 더보기
[NEON] 레인 설정과 조회 NEON 에서는 벡터 안의 레인에 다양한 값을 저장하거나, 레인의 값을 확인할 수 있다. 또한, 하나의 벡터 안에서 레인 사이의 교환(swap)도 가능하다. 레인 설정함수 중 몇 개는 벡터 저장 함수 중에서 브로드캐스트 함수나 레인 저장함수와 결과가 같은데, 이는 어셈블러 명령어 차이에 따른 것으로 성능의 차이는 없다. 1. NEON 레인 설정NEON 에서는 벡터의 특정 레인의 값을 불러오거나 변경 할수 있다. 단 레인 설정에 관련된 모든 함수는 복수 벡터에 지원하지 않는다. 1.1 레인 추출 함수지정된 레인의 값 하나를 일반 변수에 저장한다.uint16_t r = vgetq_lane_u16(uint16x8_t a, __constrange(0, 7) int lane)예) lane이 2일때 변수 r에 벡터.. 더보기
[NEON 산술 연산과 확장 NEON 에서는 벡터 변수 사이의 기본 산술 연산을 지원하고, 포화 더하기와 인접 레인 더하기 등 NEON만의 독특한 산술 연산도 지원한다. 또한 최댓값 및 최솟값 연산과 Long, Wide, Narrow, 포화와 관련된 산술 연산을 지원한다. NEON에서는 나누기와 제곱근 연산은 지원하지 않아서 Shift 연산이나 역수를 이용해야 한다. 1. NEON 기본 산술 연산 (더하기, 빼기, 곱하기, 레인 최댓값, 최솟값, 인접 레인 더하기 함수)(1) 더하기 함수uint16x8_t r = vaddq_u16(uint16x8_t a, uint16x8_t b) a + b 를 r벡터에 저장 (2) 빼기 함수uint16x8_t r = vsubq_u16(uint16x8_t a, uint16x8_t b) a - b 를 .. 더보기
[NEON] 함수 정리 (로드 함수, 저장 함수) 단일 로드 함수일반 로드 함수uint16x8_t = r = vld1q_u16(__transfersize(8) uint16_t const *ptr)메모리 배열에서 벡터로 데이터를 가져온다. (메모리 배열 요소와 벡터의 레인 크기가 같아야 한다) 레인 로드 함수uint16x8_t r = vld1q_lane_u16(__transfersize(1) uint16_t const *ptr, uint16x8_t a, __constrange(0, 7) int nlane)메모리의 값을 벡터의 특정 레인으로 가져온다.(ptr 메모리 변수에서 nlane번쨰 값을 a로 변환) 브로드캐스트 로드 함수uint16x8_t q = vld1q_dup_u16(__transfersize(1) uint16_t const *ptr)벡터의 모든.. 더보기
[NEON] 벡터 자료형 벡터 데이터형 : 1차원 배열 형태를 갖는 데이터형벡터 데이터 : 공간 정보의 기본 단위인 점, 선, 면을 사용하여 실세계의 위치를 2차원 또는 3차원의 좌표값으로 표현한 자료. 래스터 자료(raster data)와 더불어 공간 정보 저장 방식의 두 축을 이루고 있다. NEON에서의 벡터 데이터 유형벡터를 나타내기 위해 다음 유형을 정의합니다. NEON 벡터 데이터 유형은 다음 패턴에 따라 명명됩니다. x_t예를 들어 int16x4_t는 각각 부호 있는 16비트 정수를 포함하는 4개의 레인이 있는 벡터입니다. Table E.1에서는 벡터 데이터 유형을 나열합니다. Table E.1. 벡터 데이터 유형int8x8_tint8x16_tint16x4_tint16x8_tint32x2_tint32x4_tint64x.. 더보기
[NEON] 기본 개념 출처 : http://vision0814.tistory.com/57NEON의 자료형{0,1}을 통한 다항식 산술이란 숫자 0과 1을 이용하여 bool 산술 규칙을 이용하는 것을 말한다. NEON 벡터의 크기NEON 벡터(변수) 는 레지스터와 연결되어 있고, NEON 함수는 레지스터를 제어하기 위해서 사용된다. 더블워드(64bit) NEON벡터(D 레지스터) 0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 1, 0 * 0 = 0 * 1 = 1 * 0 = 0, 1 * 1 = 1 - 8개의 8비트 요소- 4개의 16비트 요소- 2개의 64비트 요소- 1개의 64 비트 요소 쿼드워드(128bit) NEON벡터(Q 레지스터)- 16개의 8비트 요소- 8개의 16비트 요소- 4개의 32비트 요소- 2.. 더보기
리눅스의 종류와 선택 출처 : http://crampstory.tistory.com/40 리눅스를 처음 설치하시려는 분들께서 제일 많이 고민하시는 것이 "어떤 리눅스를 깔아야 할까?" 입니다. 저 역시도 마찬가지로 고민을 많이 했습니다. 7년전쯤에 리눅스를 처음 쓸 당시에 오픈수세(OpenSUSE)를 사용했었습니다. 한동안 리녹스를 사용할 일이 없다가 요즘 들어 다시 깔았는데 그때 보다는 더 많은 종류의 리눅스가 존재해 적잖이 놀랐습니다. 이 포스트에서 리눅스 배포판을 전부 다룰 수는 없으므로 제가 사용해본 리눅스를 위주로 리눅스 선택에 도움이 되는 글을 써보도록 하겠습니다. 1. 우분투(Ubuntu) 우분투는 데비안(Debian) 리눅스를 기반으로 제작된 리눅스입니다. 4월과 10월에 한번식 메이져 업데이트가 이루어집니다... 더보기
CUDA C 확장 키워드(CUDA C Extension) CUDA C extension, 즉 CUDA C에서 확장된 키워드들에 대하여 소개하고자 합니다. 예제 코드를 보면 __global__과 같은 키워드들을 발견할 수 있을 것입니다. 이러한 키워드들이 어떤 의미이며 무슨 역할을 하는지 알아야 보다 효율적인 프로그래밍을 할 수 있을 것입니다. 1. 함수의 수식어 함수의 수식어들은 어디서 호출할 수 있느냐와 어디서 실행되느냐에 따라 나뉩니다. __global__, __device__, __host__, __device__ __host__ 이렇게 총 4가지의 경우가 가능합니다. __global__ 디바이스에서 실행되는 함수를 뜻합니다. 여기서 device란 이전 포스팅에서도 언급했듯이 GPU를 뜻합니다. __global__로 수식된 함수는 host에서 호출할 수는.. 더보기