From 101de2b07aa2feefa74f7e73876fd5cc8fc696cf Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Tue, 20 Mar 2018 21:40:01 +0000
Subject: [PATCH] More stable web-cam

---
 src/http_stream.cpp |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/src/http_stream.cpp b/src/http_stream.cpp
index d42ecff..ca57728 100644
--- a/src/http_stream.cpp
+++ b/src/http_stream.cpp
@@ -197,16 +197,32 @@
 
 
 CvCapture* get_capture_webcam(int index) {
-	CvCapture* cap = (CvCapture*)new cv::VideoCapture(index);
+	CvCapture* cap = NULL;
+	try {
+		cap = (CvCapture*)new cv::VideoCapture(index);
+		//((cv::VideoCapture*)cap)->set(CV_CAP_PROP_FRAME_WIDTH, 1280);
+		//((cv::VideoCapture*)cap)->set(CV_CAP_PROP_FRAME_HEIGHT, 960);
+	}
+	catch (...) {
+		std::cout << " Error: Web-camera " << index << " can't be opened! \n";
+	}
 	return cap;
 }
 
 IplImage* get_webcam_frame(CvCapture *cap) {
-	cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
-	cv::Mat frame;
-	cpp_cap >> frame;
-	IplImage* src = cvCreateImage(cvSize(frame.cols, frame.rows), 8, frame.channels());
-	*src = frame;
+	IplImage* src = NULL;
+	try {
+		cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
+		cv::Mat frame;
+		if (cpp_cap.isOpened()) {
+			cpp_cap >> frame;
+			src = cvCreateImage(cvSize(frame.cols, frame.rows), 8, frame.channels());
+			*src = frame;
+		}
+	}
+	catch (...) {
+		std::cout << " Web-camera stoped! \n";
+	}
 	return src;
 }
 

--
Gitblit v1.10.0