8 #ifndef CSCORE_CSCORE_RAW_CV_H_
9 #define CSCORE_CSCORE_RAW_CV_H_
11 #ifdef CSCORE_CSCORE_CV_H_
12 #error "Cannot include both cscore_cv.h and cscore_raw_cv.h in the same file"
15 #include "cscore_raw.h"
50 int width,
int height,
int fps);
104 std::function<
void(uint64_t time)> processFrame);
115 uint64_t
GrabFrame(cv::Mat& image,
double timeout = 0.225);
153 : RawSource{name, mode} {}
156 VideoMode::PixelFormat format,
int width,
158 : RawSource{name, format, width, height, fps} {}
162 rawFrame.data = reinterpret_cast<char*>(image.data);
163 rawFrame.width = image.cols;
164 rawFrame.height = image.rows;
165 rawFrame.totalData = image.total() * image.channels;
166 rawFrame.pixelFormat = image.channels == 3 ? CS_PIXFMT_BGR : CS_PIXFMT_GRAY;
167 PutSourceFrame(m_handle, rawFrame, &m_status);
170 inline RawCvSink::RawCvSink(
const wpi::Twine& name) : RawSink{name} {}
173 std::function<
void(uint64_t time)> processFrame)
174 : RawSink{name, processFrame} {}
182 tmpMat.copyTo(image);
192 tmpMat.copyTo(image);
199 rawFrame.pixelFormat = CS_PixelFormat::CS_PIXFMT_BGR;
200 m_status = RawSink::GrabFrame(rawFrame, timeout);
201 if (m_status <= 0)
return m_status;
202 image = cv::Mat{rawFrame.height, rawFrame.width, CV_8UC3, rawFrame.data};
209 rawFrame.pixelFormat = CS_PixelFormat::CS_PIXFMT_BGR;
210 m_status = RawSink::GrabFrameNoTimeout(rawFrame);
211 if (m_status <= 0)
return m_status;
212 image = cv::Mat{rawFrame.height, rawFrame.width, CV_8UC3, rawFrame.data};
218 #endif // CSCORE_CSCORE_RAW_CV_H_