Пример #1
0
//Input: Saturation channel from HSV image
void imageToGpu(){
	clock_t read_start = clock();
	
	// Pre load pixel data
	printf("starting pixel data filling\n");
	for(int i = 0; i < MAIN_TEXTURE_HEIGHT; i++){
		for(int j = 0; j < PIC_WIDTH; j++){
			if (j < PIC_WIDTH/2)
				pixelData[PIC_WIDTH/2*i + j] = image.at<uchar>(i, j);
			else
				pixelData2[PIC_WIDTH/2*i + (j - PIC_WIDTH/2)] = image.at<uchar>(i, j);	
		}		
	}
	printf("after pixel data\n");		

	pic_data = (void*)pixelData;
	pic_data2 = (void*)pixelData2;
	printf("time passed for reading image: %f\n", (float)(clock() - read_start)/CLOCKS_PER_SEC );


	//Pass data to texture
	const uint8_t* data = (const uint8_t*)pic_data;
	const uint8_t* data2 = (const uint8_t*)pic_data2;
	ytexture.SetPixels(data);
	ytexture2.SetPixels(data2);
}
Пример #2
0
void cam_update()
{
	
	// <------------------------------------------------ Wait for new image to appear ----------------------------------------------> 
		while(!cam->BeginReadFrame(0,frame_data,frame_sz)) {};
		
		digitalWrite(PIN_TCAP, HIGH) ;
		
		// <----------------lock the chosen frame buffer, and copy it directly into the corresponding open gl texture ----------------> 
			data = (const uint8_t*)frame_data;
			ypitch = MAIN_TEXTURE_WIDTH;
			ysize = ypitch*MAIN_TEXTURE_HEIGHT;
			uvpitch = MAIN_TEXTURE_WIDTH/2;
			uvsize = uvpitch*MAIN_TEXTURE_HEIGHT/2;
			upos = ysize;
			vpos = upos+uvsize;
			ytexture.SetPixels(data);
			utexture.SetPixels(data+upos);
			vtexture.SetPixels(data+vpos);
			cam->EndReadFrame(0);

}