include "stdafx.h"
include <stdio.h>
include <highgui.h>
include <cv.h>
include <cxcore.h>
void main(){ //Sobel edge detection for a video
CvCapture* capture = cvCreateCameraCapture(0); //The video is loaded into a pointer of type CvCapture
IplImage* frame; IplImage*gscale_res; IplImage* edgeframe; //Declaration of structure variables to store frames
char *win = "video"; char *winEdge = "edges"; //Declaration of character pointers to store window names
cvNamedWindow(win, CV_WINDOW_AUTOSIZE); //Window is created for original image
cvNamedWindow(winEdge, CV_WINDOW_AUTOSIZE); //Window is created for resultant image
while (1)
{
frame = cvQueryFrame(capture); //Image under consideration is captured as a shot of the video
if (!frame)
{
printf("cam not found");
break;
}
gscale_res = cvCreateImage(cvSize(frame->width, frame->height), IPL_DEPTH_8U, 1);//Creation of the image variable to store both the grayscale intermediate and final result
edgeframe = cvCreateImage(cvSize(frame->width, frame->height), IPL_DEPTH_16S, 1); //The 16-bit signed image for the result of the Sobel Edge detection
cvCvtColor(frame, gscale_res, CV_BGR2GRAY); //Gray-scale intermediate created
cvSobel(gscale_res, edgeframe, 1, 0, 3);// Sobel edge detection function is applied on the grayscale image and the result is put in the other variable
cvConvertScaleAbs(edgeframe, gscale_res, 1, 0); //The 16-bit signed image is converted to an 8-bit unsigned version so it can be displayed
cvShowImage(win, frame); //Original image is shown
cvShowImage(winEdge, gscale_res); //Resultant image with edges detected, is shown
char c = cvWaitKey(33); //This is to account for the frame speed of the loaded video
cvReleaseImage(&gscale_res);
cvReleaseImage(&edgeframe);
if (c == 27) //If the character of code 27 or the ESCAPE character is entered, the loop will break
break;
}
cvReleaseCapture(&capture); //Video is released from memory
cvReleaseImage(&frame); //Images released from memory
cvDestroyWindow(win);
cvDestroyWindow(winEdge); //Windows closed
}
i have tried different arguments, cvCreateCameraCapture,cvCaptureFromCAM but still not working