2014-Vision
 All Classes Functions Variables
PiCam.hpp
1 #include <functional>
2 
3 #include "bcm_host.h"
4 
5 #include <opencv2/highgui/highgui.hpp>
6 #include <opencv2/imgproc/imgproc.hpp>
7 
8 #include "interface/mmal/mmal.h"
9 #include "interface/mmal/mmal_logging.h"
10 #include "interface/mmal/mmal_buffer.h"
11 #include "interface/mmal/util/mmal_util.h"
12 #include "interface/mmal/util/mmal_util_params.h"
13 #include "interface/mmal/util/mmal_default_components.h"
14 #include "interface/mmal/util/mmal_connection.h"
15 
16 #include <semaphore.h>
17 
21 class PiCam {
22 public:
23  static const int VIDEO_OUTPUT_BUFFERS_NUM = 3;
24  static const int VIDEO_FRAME_RATE_NUM = 30;
25  static const int VIDEO_FRAME_RATE_DEN = 1;
26 
34  PiCam(unsigned int width, unsigned int height, std::function<void(cv::Mat)> callback);
35 
40  ~PiCam();
41 
42 
46  void start();
47 
48  int port;
50  unsigned int width;
52  unsigned int height;
54  cv::Mat frame;
56  std::function<void(cv::Mat)> callback;
57 private:
58  static void video_buffer_callback(MMAL_PORT_T *port, MMAL_BUFFER_HEADER_T *buffer);
60  MMAL_COMPONENT_T* cameraComponent;
62  MMAL_PORT_T* previewPort;
64  MMAL_PORT_T* videoPort;
66  MMAL_PORT_T* stillPort;
67  // ?
68  MMAL_POOL_T* videoPool;
69 
70  VCOS_SEMAPHORE_T frame_semaphore;
71 
73  float framerate;
74 };
cv::Mat frame
Current frame.
Definition: PiCam.hpp:54
std::function< void(cv::Mat)> callback
Callback function that processes each frame.
Definition: PiCam.hpp:56
PiCam(unsigned int width, unsigned int height, std::function< void(cv::Mat)> callback)
Definition: PiCam.cpp:47
void start()
Definition: PiCam.cpp:164
unsigned int height
Requested height for the video stream.
Definition: PiCam.hpp:52
Definition: PiCam.hpp:21
unsigned int width
Requested width for the video stream.
Definition: PiCam.hpp:50
~PiCam()
Definition: PiCam.cpp:194