Quantcast
Channel: beginners - openFrameworks
Viewing all articles
Browse latest Browse all 4929

ofxOpenCv and ofxKinectForWindows2

$
0
0

@ire.vetro wrote:

Hi everybody,
I'm studing C++ code to develop an algorithm for human and object detection (static and dinamic object).
I have acquired the depth and RGBA image, but I can not copy the RGBA array to an array OpenCV.
I do this in order to use the OpenCV functions to edit images (in order to use gaussianBlur, region growing algorithm ...). can you help me?

my code:

 void ofApp::setup(){
if (FAILED(GetDefaultKinectSensor(&sensor))) {
	ofLogError() << "Could not acquire IR!";
}
if (sensor) {
	sensor->Open();
	IDepthFrameSource* framesourceDept = NULL;
	sensor->get_DepthFrameSource(&framesourceDept);
	framesourceDept->OpenReader(&readerDept);
	if (framesourceDept) {
		framesourceDept->Release();
		framesourceDept = NULL;
	}
	IColorFrameSource* framesourceColor = NULL;
	sensor->get_ColorFrameSource(&framesourceColor);
	framesourceColor->OpenReader(&readerColor);
	if (framesourceColor) {
		framesourceColor->Release();
		framesourceColor = NULL;
	}
}

colorImage.allocate(COLOR_WIDTH, COLOR_HEIGHT, OF_IMAGE_COLOR_ALPHA);
grayImage.allocate(DEPTH_WIDTH, DEPTH_HEIGHT);



 }
 void ofApp::update(){

IDepthFrame* frame = NULL;
if (SUCCEEDED(readerDept->AcquireLatestFrame(&frame))) {
	unsigned int sz;
	unsigned short* buf;
	frame->AccessUnderlyingBuffer(&sz, &buf);

	const unsigned short* curr = (const unsigned short*)buf;



	for (int i = 0; i < DEPTH_SIZE; i++)
	{
		pixel[i] = (*curr++)*(255.0 / 2000.0);
	}

	grayImage.setFromPixels(pixel, DEPTH_WIDTH, DEPTH_HEIGHT);  // grayImage is an object of 'ofxCvImage' class
}
if (frame) frame->Release();

IColorFrame* frameC = NULL;
if (SUCCEEDED(readerColor->AcquireLatestFrame(&frameC))) {
	frameC->CopyConvertedFrameDataToArray(COLOR_WIDTH*COLOR_HEIGHT * 4, data, ColorImageFormat_Rgba);
	colorImage.setFromPixels(data, COLOR_WIDTH, COLOR_HEIGHT, OF_IMAGE_COLOR_ALPHA, true); // colorImag is an object of 'ofImage' class
	//mat = cvMemStorageAlloc(CvMemStorage, COLOR_WIDTH*COLOR_HEIGHT * 4);
}
if (frameC) frameC->Release();

}

void ofApp::draw(){
grayImage.draw(0,0);
colorImage.draw(512, 0);

}

thanks a lot!

Posts: 1

Participants: 1

Read full topic


Viewing all articles
Browse latest Browse all 4929

Trending Articles