source: pacpussensors/trunk/Vislab/VislabCamera.cpp@ 133

Last change on this file since 133 was 133, checked in by ldecherf, 7 years ago

dsf

File size: 3.0 KB
Line 
1 // Includes, project.
2#include "VislabCamera.hpp"
3
4// Includes, qt.imageformat
5#include <QDebug>
6
7// Includes, standard.
8#include <cassert>
9#include <stdexcept>
10
11// Includes lib3dv
12#include <lib3dv-1.2.0/lib3dv/device.h>
13#include "DiskWriter.h"
14#include "Display.h"
15#include "VislabImageProcessor.h"
16
17#include <boost/asio/io_service.hpp>
18#include <boost/asio/ip/address.hpp>
19#include <boost/bind.hpp>
20#include <boost/ref.hpp>
21#include <boost/thread.hpp>
22
23using namespace pacpus;
24
25//ComponentFactory<VislabCamera> sFactory("VislabComponent");
26/*! Constructor with 2 instantiations of DiskWriter and 2 instatiations of Display*/
27 VislabCamera::VislabCamera(const QString& name)
28 :diskwriterVideo(name,lib3dv::image::type::RIGHT_RECTIFIED),
29 diskwriterDisparite(name,lib3dv::image::type::DSI),
30 displayVideo("Video",lib3dv::image::type::RIGHT_RECTIFIED),
31 displayDisparite("Disparite",lib3dv::image::type::DSI)
32{
33
34}
35
36VislabCamera::~VislabCamera()
37{
38
39}
40
41void VislabCamera::open()
42{
43
44 curr_devices = lib3dv::device::enumerate(boost::asio::ip::address_v4::from_string("192.168.0.1"), 1, error);
45 if(error != lib3dv::error::NONE)
46 std::cout << "[EE] 3dv-client: error detected: " << error << std::endl;
47
48 if(curr_devices.empty())
49 {
50 std::cout << "[EE] 3dv-client: no devices found" << std::endl;
51 //return lib3dv::error::NONE;
52 }
53 //disk_writer = boost::shared_ptr< ::disk_writer>(new ::disk_writer(paths, data_format, autonumber, params, guid_type, log_level));
54 curr_devices[0].log_level(2);
55 curr_devices[0].timeout(boost::posix_time::milliseconds(5000));
56 curr_devices[0].connect_image_callback(boost::function<void(boost::shared_ptr< const lib3dv::image>, unsigned int)>(boost::bind(&::VislabImageProcessor::image_callback, &displayVideo, _1, _2)));
57 curr_devices[0].connect_image_callback(boost::function<void(boost::shared_ptr< const lib3dv::image>, unsigned int)>(boost::bind(&::VislabImageProcessor::image_callback, &displayDisparite, _1, _2)));
58 curr_devices[0].connect_image_callback(boost::function<void(boost::shared_ptr< const lib3dv::image>, unsigned int)>(boost::bind(&::VislabImageProcessor::image_callback, &diskwriterVideo, _1, _2)));
59 curr_devices[0].connect_image_callback(boost::function<void(boost::shared_ptr< const lib3dv::image>, unsigned int)>(boost::bind(&::VislabImageProcessor::image_callback, &diskwriterDisparite, _1, _2)));
60 curr_devices[0].start_transmission(error);
61 if(error != lib3dv::error::NONE)
62 std::cout << "[EE] 3dv-client: error detected: " << error << std::endl;
63 else
64 std::cout << "[II] 3dv-client: device successfully opened" << std::endl;
65}
66
67void VislabCamera::close()
68{
69 curr_devices[0].stop_transmission(error);
70 //curr_devices[0].poweroff(error);
71}
72
73void VislabCamera::setVideoOutput(OutputInterface<cv::Mat, VislabComponent>* output)
74{
75 outputVideo.setOutput(output);
76}
77
78void VislabCamera::setDispariteOutput(OutputInterface<cv::Mat, VislabComponent>* output)
79{
80 outputDisparite.setOutput(output);
81}
Note: See TracBrowser for help on using the repository browser.