5#ifndef CSCORE_CSCORE_CV_H_
6#define CSCORE_CSCORE_CV_H_
10#include <opencv2/core/mat.hpp>
73 bool skipVerification);
100 VideoMode::PixelFormat::kBGR);
113 uint64_t
GrabFrame(cv::Mat& image,
double timeout = 0.225);
166 int width,
int height,
int fps) {
171inline bool CvSource::VerifyFormat(cv::Mat& image,
173 int channels = image.channels();
174 switch (pixelFormat) {
175 case VideoMode::PixelFormat::kBGR:
180 case VideoMode::PixelFormat::kBGRA:
185 case VideoMode::PixelFormat::kGray:
190 case VideoMode::PixelFormat::kRGB565:
195 case VideoMode::PixelFormat::kUYVY:
200 case VideoMode::PixelFormat::kY16:
205 case VideoMode::PixelFormat::kYUYV:
210 case VideoMode::PixelFormat::kMJPEG:
224 if (image.depth() == CV_8U) {
227 image.convertTo(finalImage, CV_8U);
230 int channels = finalImage.channels();
234 format = VideoMode::PixelFormat::kGray;
235 }
else if (channels == 2) {
237 format = VideoMode::PixelFormat::kYUYV;
238 }
else if (channels == 3) {
240 format = VideoMode::PixelFormat::kBGR;
241 }
else if (channels == 4) {
243 format = VideoMode::PixelFormat::kBGRA;
254 bool skipVerification) {
257 if (image.depth() == CV_8U) {
260 image.convertTo(finalImage, CV_8U);
263 if (!skipVerification) {
264 if (!VerifyFormat(finalImage, pixelFormat)) {
271 frame.
data = finalImage.data;
274 frame.
size = finalImage.total() * finalImage.channels();
275 frame.
width = finalImage.cols;
276 frame.
height = finalImage.rows;
277 frame.
stride = finalImage.step;
286 this->pixelFormat = pixelFormat;
290 :
ImageSink{sink}, pixelFormat{sink.pixelFormat} {}
298 tmpnam.copyTo(image);
308 tmpnam.copyTo(image);
314 switch (pixelFormat) {
348 rawFrame.
data,
static_cast<size_t>(rawFrame.
stride)};
364 rawFrame.
data,
static_cast<size_t>(rawFrame.
stride)};
WPI_PixelFormat
Pixel formats.
Definition: RawFrame.h:49
@ WPI_PIXFMT_YUYV
Definition: RawFrame.h:52
@ WPI_PIXFMT_Y16
Definition: RawFrame.h:56
@ WPI_PIXFMT_UYVY
Definition: RawFrame.h:57
@ WPI_PIXFMT_BGRA
Definition: RawFrame.h:58
@ WPI_PIXFMT_MJPEG
Definition: RawFrame.h:51
@ WPI_PIXFMT_GRAY
Definition: RawFrame.h:55
@ WPI_PIXFMT_RGB565
Definition: RawFrame.h:53
@ WPI_PIXFMT_BGR
Definition: RawFrame.h:54
A source for user code to accept video frames as OpenCV images.
Definition: cscore_cv.h:85
uint64_t GrabFrame(cv::Mat &image, double timeout=0.225)
Wait for the next frame and get the image.
Definition: cscore_cv.h:292
uint64_t GrabFrameDirect(cv::Mat &image, double timeout=0.225)
Wait for the next frame and get the image.
Definition: cscore_cv.h:336
uint64_t GrabFrameNoTimeout(cv::Mat &image)
Wait for the next frame and get the image.
Definition: cscore_cv.h:302
uint64_t GrabFrameNoTimeoutDirect(cv::Mat &image)
Wait for the next frame and get the image.
Definition: cscore_cv.h:352
A source for user code to provide OpenCV images as video frames.
Definition: cscore_cv.h:22
void PutFrame(cv::Mat &image)
Put an OpenCV image and notify sinks.
Definition: cscore_cv.h:221
A base class for single image reading sinks.
Definition: cscore_oo.h:1095
A base class for single image providing sources.
Definition: cscore_oo.h:750
CS_Status m_status
Definition: cscore_oo.h:1008
CS_Sink m_handle
Definition: cscore_oo.h:1009
CS_Source m_handle
Video source handle.
Definition: cscore_oo.h:475
CS_Status m_status
Definition: cscore_oo.h:472
@ CS_OK
Definition: cscore_c.h:62
CS_Source CreateRawSource(std::string_view name, bool isCv, const VideoMode &mode, CS_Status *status)
CS_Sink CreateRawSink(std::string_view name, bool isCv, CS_Status *status)
uint64_t GrabSinkFrameTimeout(CS_Sink sink, WPI_RawFrame &image, double timeout, CS_Status *status)
uint64_t GrabSinkFrame(CS_Sink sink, WPI_RawFrame &image, CS_Status *status)
void PutSourceFrame(CS_Source source, const WPI_RawFrame &image, CS_Status *status)
CameraServer (cscore) namespace.
Definition: cscore_cpp.h:29
type
Definition: base.h:646
fps
Definition: velocity.h:46
Raw Frame.
Definition: RawFrame.h:32
int pixelFormat
Definition: RawFrame.h:40
void * freeCbData
Definition: RawFrame.h:37
void(* freeFunc)(void *cbdata, void *data, size_t capacity)
Definition: RawFrame.h:36
uint8_t * data
Definition: RawFrame.h:34
size_t size
Definition: RawFrame.h:39
int height
Definition: RawFrame.h:42
int stride
Definition: RawFrame.h:43
int width
Definition: RawFrame.h:41
Video mode.
Definition: cscore_cpp.h:62
PixelFormat
Definition: cscore_cpp.h:63
Definition: RawFrame.h:75
basic_string_view< char > string_view
Definition: base.h:601
auto format(wformat_string< T... > fmt, T &&... args) -> std::wstring
Definition: xchar.h:137