2012-03-30 5 views
0

처리하기 전에 웹캠에서 CVD images을 생성하는 기존 코드베이스로 작업하고 있습니다. 내 목표는 처리의 나머지 부분이 발생하기 전에 증강 현실에 대한이 이미지에서 마커 감지를 실행하는 것이며 ArUco을 사용하여이를 수행 할 계획입니다. 문제는 Aruko가 마커를 감지하기 위해 OpenCV 이미지를 가져 오는 것입니다.CVD 이미지를 Color OpenCV 이미지로 변환

저는 CVD 이미지의 각 픽셀을 수동으로 액세스하고 RGB 값을 새로운 OpenCV 이미지에 고정함으로써 CVD 이미지에서이 OpenCV 이미지를 수동으로 생성하려고 생각합니다. C++로 작업하는 것에 너무 익숙하지 않지만 확실하게이 작업을 수행하는 더 좋은 방법이 있습니까?

답변

2

다음과 같이 사용합니다. myImage의 유형은 이미지의 각 픽셀에 대한 3 바이트를 메모리의 연속 바이트에 저장하는 (사용자 정의) 이미지 유형이고 myImage.data()는 해당 메모리의 시작에 대한 포인터입니다. 당신의 CVD 이미지 (익숙하지 않은)가 비슷한 방법으로 배치되면, 당신도 똑같이 할 수 있습니다.

cv::Mat image(rows, cols, CV_8UC3, myImage.data()); 
+1

가능합니다. 가능하다면 복사하지 않고도 이미지를 래핑하고 싶을 것입니다. – aardvarkk

+0

이것은 내가하고 싶은 것과 똑같은 것 같습니다. CVD 이미지 문서에 따르면 [] 연산자를 사용하여 각 픽셀의 값을 역 참조 할 수 있지만 이미지의 메모리 블록을 시작하는 방법을 찾을 수없는 것 같습니다. 위의 코드에서 행 = 이미지 너비, cols = 높이 및 CV_8UC3 이미지 형식을 추측하고 있습니까? 위의 함수에 대한 문서가 있으므로 사용할 수있는 이미지 형식을 알아낼 수 있습니까? – Jkh2

+1

docs에 대해 opencv.itseez.com을보고 & image [0,0]을 사용하여 첫 번째 요소의 주소를 찾으십시오. CV_8UC3는 부호없는 8 비트 (uchar은 표준 이미지 유형 임), 3 채널 (RGB)을 나타냅니다. – Sam

관련 문제