Skip to content
Snippets Groups Projects
Commit fe2fd9fd authored by Angel Santamaria-Navarro's avatar Angel Santamaria-Navarro
Browse files

add ask user in usb_cam functions

parent eb16f9cf
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,33 @@ SensorCamera::SensorCamera(void)
{}
SensorCamera::~SensorCamera(void)
{}
{
release();
}
int askUserSource(const vision_utils::SensorCameraPtr& _sen, int argc, char** argv)
{
// parsing input params
if (argc < 2)
{
std::cout << "Please use\n\t./test_opencv <arg> "
"\nwith "
"\n\targ = <path/videoname.mp4> for video input "
"\n\targ = 0 for camera input." << std::endl;
return 0;
}
else if ( isdigit( int(*argv[1]) ) )
{
_sen->open( atoi(argv[1]) );
std::cout << "Input stream from camera " << argv[1] << std::endl;
}
else
{
_sen->open(argv[1]);
std::cout << "Input video file: " << argv[1] << std::endl;
}
return 1;
}
} /* namespace vision_utils */
......
......@@ -38,7 +38,15 @@ class SensorCamera : public SensorBase {
* Returns true if the camera is correctly opened
*
*/
bool open(const int& _cam_num);
bool open(const int& _cam_num);
bool open(const char * _filename);
/**
* \brief Release camera
*
* Closes video file or capturing device.
*/
void release(void);
/**
* \brief Get image
......@@ -91,6 +99,23 @@ inline bool SensorCamera::open(const int& _cam_num)
return true;
}
inline bool SensorCamera::open(const char * _filename)
{
cv::VideoCapture camera(_filename);
if (!camera.isOpened()) // check if we succeeded
{
std::cerr << "[" << getName() << "]: ERROR opening file " << _filename << std::endl;
return false;
}
vidcapture_ = camera;
return true;
}
inline void SensorCamera::release(void)
{
vidcapture_.release();
}
inline cv::Mat SensorCamera::getImage(void)
{
cv::Mat img;
......@@ -125,6 +150,8 @@ inline SensorBasePtr SensorCamera::create(const std::string& _unique_name, const
return sen_ptr;
}
int askUserSource(const vision_utils::SensorCameraPtr& _sen, int argc, char** argv);
} /* namespace vision_utils */
#endif /* _USB_CAM_H_ */
File added
......@@ -6,6 +6,7 @@ std::string sen_name = "USB_CAM";
std::string vu_root = _VU_ROOT_DIR;
int cam_num = 0;
std::string filename = vu_root + "/src/test/data/test_usb_cam.mp4";
TEST(SensorUsbCam, constructor)
{
......@@ -22,6 +23,36 @@ TEST(SensorUsbCam, constructor)
ASSERT_TRUE(sen_name.compare(sen_ptr->getName() ) == 0);
}
TEST(SensorUsbCam, openCAM)
{
vision_utils::IntrinsicsCameraPtr params = std::make_shared<vision_utils::IntrinsicsCamera>();
std::string sen_name = "USB_CAM";
vision_utils::SensorBasePtr sen_b_ptr = vision_utils::setupSensor(sen_name, sen_name, params);
#ifdef USING_YAML
std::string yaml_file_params = vu_root + "/src/test/data/base_classes.yaml";
sen_name = vision_utils::readYamlType(yaml_file_params, "sensor");
sen_b_ptr = vision_utils::setupSensor(sen_name, sen_name, yaml_file_params);
#endif
vision_utils::SensorCameraPtr sen_ptr = std::static_pointer_cast<vision_utils::SensorCamera>(sen_b_ptr);
std::cout << " ";
ASSERT_TRUE(sen_ptr->open(cam_num));
}
TEST(SensorUsbCam, openFILE)
{
vision_utils::IntrinsicsCameraPtr params = std::make_shared<vision_utils::IntrinsicsCamera>();
std::string sen_name = "USB_CAM";
vision_utils::SensorBasePtr sen_b_ptr = vision_utils::setupSensor(sen_name, sen_name, params);
#ifdef USING_YAML
std::string yaml_file_params = vu_root + "/src/test/data/base_classes.yaml";
sen_name = vision_utils::readYamlType(yaml_file_params, "sensor");
sen_b_ptr = vision_utils::setupSensor(sen_name, sen_name, yaml_file_params);
#endif
vision_utils::SensorCameraPtr sen_ptr = std::static_pointer_cast<vision_utils::SensorCamera>(sen_b_ptr);
std::cout << " ";
ASSERT_TRUE(sen_ptr->open(filename.c_str()));
}
TEST(SensorUsbCam, getImage)
{
vision_utils::IntrinsicsCameraPtr params = std::make_shared<vision_utils::IntrinsicsCamera>();
......@@ -47,6 +78,7 @@ TEST(SensorUsbCam, getImage)
}
}
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
......
......@@ -13,6 +13,7 @@
#include <iostream>
#include <time.h>
#include <memory> // shared_ptr and weak_ptr
#include <ctype.h>
// Boost
//#include <boost/assign/std/vector.hpp> // for 'operator+=()'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment