38 using directx_camera_server_ptr = std::unique_ptr<directx_camera_server>;
39 class DirectShowImageSource :
public ImageSource {
41 DirectShowImageSource(directx_camera_server_ptr &&cam)
42 : m_camera(
std::move(cam)) {
43 m_camera->read_image_to_memory();
44 if (m_camera->isOpened()) {
48 virtual ~DirectShowImageSource() {}
50 bool ok()
const override {
51 return m_camera && m_gotRes && m_camera->working() &&
60 directx_camera_server_ptr m_camera;
61 bool m_gotRes =
false;
64 ImageSourcePtr openHDKCameraDirectShow() {
66 auto ret = ImageSourcePtr{};
67 auto cam = getDirectShowHDKCamera();
71 ret.reset(
new DirectShowImageSource{std::move(cam)});
75 return m_camera->read_image_to_memory();
82 void DirectShowImageSource::storeRes() {
83 int minx, miny, maxx, maxy;
84 m_camera->read_range(minx, maxx, miny, maxy);
85 m_res = cv::Size(maxx - minx + 1, maxy - miny + 1);
cv::Size resolution() const override
Get resolution of the images from this source.
void retrieveColor(cv::Mat &color, osvr::util::time::TimeValue ×tamp) override
virtual void retrieve(cv::Mat &color, cv::Mat &gray, osvr::util::time::TimeValue ×tamp)
Call after grab() to get the actual image data.