使用 Opencv C 程序但 C++ 程序完美运行的网络摄像头灰度图像
Gray image from Webcam with Opencv C program but C++ program works perfectly
我正在尝试获取网络摄像头直播。这是我的 C 程序:
int main()
{
cvNamedWindow("Webcam feed", 1);
printf("Checking if camera is working\n");
CvCapture *cap = cvCaptureFromCAM(0);
if (!cap)
{
printf("Error opening camera\n");
return -1;
}
printf("yes it is in loop");
IplImage *frame = cvQueryFrame(cap);
if (!frame)
{
printf("Error in capturing frames from webcam\n");
return -1;
}
cvSaveImage("C:/Users/shru/Desktop/mee.jpg", frame);
key = cvWaitKey(10);
if (char(key) == 27)
{
return -1;
}
cvReleaseCapture(&cap);
cvDestroyWindow("Webcam Feed");
return 0;
}
这是我的 C++ 程序:
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
for (;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
//cvtColor(frame, edges, COLOR_BGR2GRAY);
//GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
//Canny(edges, edges, 0, 30, 3);
imshow("Webcam feed", frame);
if (waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
但问题是 C 输出显示灰屏,而 C++ 程序提供了肯定的结果。我做错了什么还是有不同的问题。我正在使用 Visual Studio 2013.
的 Opencv 3.0 alpha 版本
如果您使用的是 OpenCV 3.0,则不应使用 C API。它已被弃用,要么使用旧版本的 OpenCV(如果你需要 C API),要么只使用 C++。使用 3.0
时无法解决此问题
我正在尝试获取网络摄像头直播。这是我的 C 程序:
int main()
{
cvNamedWindow("Webcam feed", 1);
printf("Checking if camera is working\n");
CvCapture *cap = cvCaptureFromCAM(0);
if (!cap)
{
printf("Error opening camera\n");
return -1;
}
printf("yes it is in loop");
IplImage *frame = cvQueryFrame(cap);
if (!frame)
{
printf("Error in capturing frames from webcam\n");
return -1;
}
cvSaveImage("C:/Users/shru/Desktop/mee.jpg", frame);
key = cvWaitKey(10);
if (char(key) == 27)
{
return -1;
}
cvReleaseCapture(&cap);
cvDestroyWindow("Webcam Feed");
return 0;
}
这是我的 C++ 程序:
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
for (;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
//cvtColor(frame, edges, COLOR_BGR2GRAY);
//GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
//Canny(edges, edges, 0, 30, 3);
imshow("Webcam feed", frame);
if (waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
但问题是 C 输出显示灰屏,而 C++ 程序提供了肯定的结果。我做错了什么还是有不同的问题。我正在使用 Visual Studio 2013.
的 Opencv 3.0 alpha 版本如果您使用的是 OpenCV 3.0,则不应使用 C API。它已被弃用,要么使用旧版本的 OpenCV(如果你需要 C API),要么只使用 C++。使用 3.0
时无法解决此问题