From 76e258520edb50e8bb897ba15aa9467579e70a6a Mon Sep 17 00:00:00 2001
From: AlexeyAB <alexeyab84@gmail.com>
Date: Wed, 20 Jun 2018 10:28:25 +0000
Subject: [PATCH] Minor fix

---
 src/http_stream.cpp |   73 +++++++++++++++++++++++++++++-------
 1 files changed, 59 insertions(+), 14 deletions(-)

diff --git a/src/http_stream.cpp b/src/http_stream.cpp
index 5ae8f78..b122f5b 100644
--- a/src/http_stream.cpp
+++ b/src/http_stream.cpp
@@ -44,6 +44,12 @@
 using std::endl;
 
 #include "opencv2/opencv.hpp"
+#include "opencv2/highgui/highgui.hpp"
+#include "opencv2/highgui/highgui_c.h"
+#include "opencv2/imgproc/imgproc_c.h"
+#ifndef CV_VERSION_EPOCH
+#include "opencv2/videoio/videoio.hpp"
+#endif
 using namespace cv;
 
 #include "http_stream.h"
@@ -196,6 +202,18 @@
 }
 // ----------------------------------------
 
+CvCapture* get_capture_video_stream(char *path) {
+	CvCapture* cap = NULL;
+	try {
+		cap = (CvCapture*)new cv::VideoCapture(path);
+	}
+	catch (...) {
+		std::cout << " Error: video-stream " << path << " can't be opened! \n";
+	}
+	return cap;
+}
+// ----------------------------------------
+
 CvCapture* get_capture_webcam(int index) {
 	CvCapture* cap = NULL;
 	try {
@@ -215,17 +233,37 @@
 	try {
 		cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
 		cv::Mat frame;
-		if (cpp_cap.isOpened()) {
+		if (cpp_cap.isOpened()) 
+		{
 			cpp_cap >> frame;
-			src = cvCreateImage(cvSize(frame.cols, frame.rows), 8, frame.channels());
-			*src = frame;
+			IplImage tmp = frame;
+			src = cvCloneImage(&tmp);
+		}
+		else {
+			std::cout << " Video-stream stoped! \n";
 		}
 	}
 	catch (...) {
-		std::cout << " Web-camera stoped! \n";
+		std::cout << " Video-stream stoped! \n";
 	}
 	return src;
 }
+
+int get_stream_fps_cpp(CvCapture *cap) {
+	int fps = 25;
+	try {
+		cv::VideoCapture &cpp_cap = *(cv::VideoCapture *)cap;
+#ifndef CV_VERSION_EPOCH	// OpenCV 3.x
+		fps = cpp_cap.get(CAP_PROP_FPS);
+#else						// OpenCV 2.x
+		fps = cpp_cap.get(CV_CAP_PROP_FPS);
+#endif		
+	}
+	catch (...) {
+		std::cout << " Can't get FPS of source videofile. For output video FPS = 25 by default. \n";
+	}
+	return fps;
+}
 // ----------------------------------------
 extern "C" {
 	image ipl_to_image(IplImage* src);	// image.c
@@ -261,19 +299,26 @@
 
 	// HSV augmentation
 	// CV_BGR2HSV, CV_RGB2HSV, CV_HSV2BGR, CV_HSV2RGB
-	cv::Mat hsv_src;
-	cvtColor(sized, hsv_src, CV_BGR2HSV);	// also BGR -> RGB
+	if (ipl->nChannels >= 3)
+	{
+		cv::Mat hsv_src;
+		cvtColor(sized, hsv_src, CV_BGR2HSV);	// also BGR -> RGB
 	
-	std::vector<cv::Mat> hsv;
-	cv::split(hsv_src, hsv);
+		std::vector<cv::Mat> hsv;
+		cv::split(hsv_src, hsv);
 
-	hsv[1] *= dsat;
-	hsv[2] *= dexp;
-	hsv[0] += 179 * dhue;
+		hsv[1] *= dsat;
+		hsv[2] *= dexp;
+		hsv[0] += 179 * dhue;
 
-	cv::merge(hsv, hsv_src);
+		cv::merge(hsv, hsv_src);
 
-	cvtColor(hsv_src, sized, CV_HSV2RGB);	// now RGB instead of BGR
+		cvtColor(hsv_src, sized, CV_HSV2RGB);	// now RGB instead of BGR
+	}
+	else
+	{
+		sized *= dexp;
+	}
 
 	// Mat -> IplImage -> image
 	IplImage src = sized;
@@ -283,4 +328,4 @@
 }
 
 
-#endif	// OPENCV
\ No newline at end of file
+#endif	// OPENCV

--
Gitblit v1.10.0