int main( int argc, char** argv ) { // CAPTURE VIDEO CvCapture* capture; capture = cvCreateFileCapture("trafficDay.avi"); if( capture == NULL ) { fprintf (stderr, "cannot open file\n"); exit(1); } // ALLOCATE SPACE FOR IplImage STRUCTURES. // DEFAULT ONE FROM VIDEO. IplImage *big_frame = cvQueryFrame(capture); IplImage *frame = cvCreateImage (cvSize(DEFAULT_SIZE(0), DEFAULT_SIZE(1)), big_frame->depth, big_frame->nChannels); IplImage *last_frame = cvCreateImage (cvSize(DEFAULT_SIZE(0), DEFAULT_SIZE(1)), big_frame->depth, big_frame->nChannels); IplImage *diff = cvCreateImage (cvSize(DEFAULT_SIZE(0), DEFAULT_SIZE(1)), big_frame->depth, big_frame->nChannels); cvResize (big_frame, last_frame, CV_INTER_LINEAR ); // CREATE WINDOWS AND LOCATE THEM TO TOP LEFT OF THE SCREEN cvNamedWindow( "Video", CV_WINDOW_AUTOSIZE); cvNamedWindow( "Difference", CV_WINDOW_AUTOSIZE); cvMoveWindow ("Video", 100, 0); cvMoveWindow ("Difference", 100, 500); // MAIN LOOP while((big_frame = cvQueryFrame (capture)) != NULL) { // RESIZE IMAGE FROM VIDEO cvResize (big_frame, frame, CV_INTER_LINEAR ); // SHOW CAPTURED AND RESIZED IMAGE cvShowImage("Video", frame); // COMPUTE AND SWOW DIFFERENCE cvSub (frame, last_frame, diff, NULL); cvShowImage("Difference", diff); // WAIT FOR BREAK AND TO ADJUST FPS char c = cvWaitKey(50); if(c == 27) break; // UPDATE LAST FRAME cvCopy (frame, last_frame, NULL); } //RELEASE IMAGE STRUCTURES cvReleaseImage (&last_frame); cvReleaseImage (&frame); cvReleaseImage (&diff); // RELEASE CAPTURE cvReleaseCapture(&capture); // DESTROY WINDOWS cvDestroyWindow("Video"); cvDestroyWindow("Difference"); return 0; }
void *ocl_setParameterValue (struct ld_kernel_s *ldKernel, struct ld_kern_param_s *ldParam, void *buffer, size_t size) { cl_mem mem_obj = (void *) -1; cl_int errcode_ret; if (ldParam->is_pointer) { DEFAULT_SIZE(size) mem_obj = real_clCreateBuffer(ldOclEnv.context, CL_MEM_READ_WRITE, size, NULL, clck_(&errcode_ret)); clCheck(real_clEnqueueWriteBuffer(ldOclEnv.command_queue, (cl_mem) mem_obj, CL_TRUE, 0, size, buffer, 0, NULL, NULL)); buffer = &mem_obj; size = sizeof(cl_mem); } if (size == 0 && strstr(ldParam->name, "_tex")) { cl_image_format format = {CL_R, CL_UNSIGNED_INT32}; #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wdeprecated-declarations" mem_obj = clCreateImage2D (ldOclEnv.context, CL_MEM_READ_ONLY, &format, 100, 1, 0, &format, clck_(&errcode_ret)); #pragma GCC diagnostic pop buffer = &mem_obj; size = sizeof(cl_mem); } clCheck(real_clSetKernelArg ((cl_kernel) ldKernel->handle, ldParam->index, size, buffer)); return mem_obj; }