Zivid C++ API 2.18.0+1b44dbef-1
Frame2D.h
Go to the documentation of this file.
1/*******************************************************************************
2 * This file is part of the Zivid API
3 *
4 * Copyright 2015-2026 (C) Zivid AS
5 * All rights reserved.
6 *
7 * Zivid Software License, v1.0
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright notice,
13 * this list of conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright notice,
16 * this list of conditions and the following disclaimer in the documentation
17 * and/or other materials provided with the distribution.
18 *
19 * 3. Neither the name of Zivid AS nor the names of its contributors may be used
20 * to endorse or promote products derived from this software without specific
21 * prior written permission.
22 *
23 * 4. This software, with or without modification, must not be used with any
24 * other 3D camera than from Zivid AS.
25 *
26 * 5. Any software provided in binary form under this license must not be
27 * reverse engineered, decompiled, modified and/or disassembled.
28 *
29 * THIS SOFTWARE IS PROVIDED BY ZIVID AS "AS IS" AND ANY EXPRESS OR IMPLIED
30 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
31 * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
32 * DISCLAIMED. IN NO EVENT SHALL ZIVID AS OR CONTRIBUTORS BE LIABLE FOR ANY
33 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
35 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
36 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 *
40 * Contact: Zivid Customer Success Team <customersuccess@zivid.com>
41 * Info: http://www.zivid.com
42 ******************************************************************************/
43
44#pragma once
45
46#include "Zivid/CameraInfo.h"
47#include "Zivid/CameraState.h"
48#include "Zivid/Color.h"
50#include "Zivid/Detail/Pimpl.h"
51#include "Zivid/DeviceArray.h"
52#include "Zivid/FrameFileType.h"
53#include "Zivid/FrameInfo.h"
54#include "Zivid/Image.h"
55#include "Zivid/Settings2D.h"
56
57#include <string>
58
59namespace Zivid
60{
73 class Frame2D
74 {
76
77 public:
80
92
104
120
134
148
155
158
161
164
195 template<
196 typename ColorFormat,
197 typename = std::enable_if_t<Detail::SupportedImageDeviceArrayColorFormat<ColorFormat>::value>>
199
212 template<
213 typename ColorFormat,
214 typename = std::enable_if_t<Detail::SupportedImageDeviceArrayColorFormat<ColorFormat>::value>>
216 DeviceArrayView<ColorFormat> destinationBuffer,
217 StreamOrQueue streamOrQueue) const;
218
224
230
236
242
248 ZIVID_CORE_EXPORT std::string toString() const;
249
258
261 ZIVID_CORE_EXPORT void save(const std::string &fileName) const;
262
269 ZIVID_CORE_EXPORT void load(const std::string &fileName);
270
273 ZIVID_CORE_EXPORT explicit Frame2D(const std::string &fileName);
274 };
275
276#ifndef NO_DOC
278 namespace Detail
279 {
280 ZIVID_CORE_EXPORT void waitUntilProcessingIsComplete(const Frame2D &frame);
281 } // namespace Detail
282#endif
283
284#ifndef NO_DOC
285# define ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(Format) \
286 extern template ZIVID_CORE_EXPORT DeviceArray<Format> Frame2D::imageDeviceArray<Format, void>(StreamOrQueue) \
287 const; \
288 extern template ZIVID_CORE_EXPORT void \
289 Frame2D::imageDeviceArray<Format, void>(DeviceArrayView<Format>, StreamOrQueue) const
290
291 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorRGBA);
292 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorRGBA_SRGB);
293 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorBGRA);
294 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorBGRA_SRGB);
295 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorRGBAf);
296 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorRGB);
297 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorRGB_SRGB);
298 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorBGR);
299 ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY(ColorBGR_SRGB);
300# undef ZIVID_FRAME2D_EXTERN_IMAGE_DEVICE_ARRAY
301#endif
302} // namespace Zivid
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
#define ZIVID_PIMPL_REFERENCE_SEMANTICS(ClassName, Attributes)
Definition Pimpl.h:149
Information about camera model, serial number etc.
Definition CameraInfo.h:78
Information about camera connection state, temperatures, etc.
Definition CameraState.h:79
Non-owning view of a device buffer.
Definition DeviceArray.h:270
Reference-counted handle to data on a GPU device.
Definition DeviceArray.h:94
A 2D frame captured by a Zivid camera.
Definition Frame2D.h:74
ZIVID_CORE_EXPORT Image< ColorRGBA > imageRGBA() const
Get color (RGBA) image from the frame.
ZIVID_CORE_EXPORT Settings2D settings() const
Get the settings used to capture this frame.
ZIVID_CORE_EXPORT Image< ColorRGB_SRGB > imageRGB_SRGB() const
Get color (RGB in the sRGB color space, 3-channel, no alpha) image from the frame.
ZIVID_CORE_EXPORT void imageDeviceArray(DeviceArrayView< ColorFormat > destinationBuffer, StreamOrQueue streamOrQueue) const
Fill a user-provided DeviceArrayView with the image in the specified format.
ZIVID_CORE_EXPORT Frame2D()
Construct a new empty 2d frame.
ZIVID_CORE_EXPORT Image< ColorBGR > imageBGR() const
Get color (BGR, 3-channel, no alpha) image from the frame.
ZIVID_CORE_EXPORT FrameInfo info() const
Get information collected at the time of the capture.
ZIVID_CORE_EXPORT CameraInfo cameraInfo() const
Get information about the camera used to capture the frame.
ZIVID_CORE_EXPORT Image< ColorRGB > imageRGB() const
Get color (RGB, 3-channel, no alpha) image from the frame.
ZIVID_CORE_EXPORT Image< ColorRGBA_SRGB > imageSRGB() const
Get color (RGBA in the sRGB color space) image from the frame.
ZIVID_CORE_EXPORT Image< ColorBGRA_SRGB > imageBGRA_SRGB() const
Get color (BGRA in the sRGB color space) image from the frame.
ZIVID_CORE_EXPORT Image< ColorBGR_SRGB > imageBGR_SRGB() const
Get color (BGR in the sRGB color space, 3-channel, no alpha) image from the frame.
ZIVID_CORE_EXPORT void load(const std::string &fileName)
Load a frame from a .zdf file.
ZIVID_CORE_EXPORT void save(const std::string &fileName) const
Save the frame to a .zdf file.
ZIVID_CORE_EXPORT std::string toString() const
Get string representation of the frame.
ZIVID_CORE_EXPORT DeviceArray< ColorFormat > imageDeviceArray(StreamOrQueue streamOrQueue) const
Get a GPU device buffer of the image in the specified format.
ZIVID_CORE_EXPORT Frame2D clone() const
Returns a clone of the frame. The clone will include a copy of all of the frame data.
ZIVID_CORE_EXPORT Image< ColorRGBA_SRGB > imageRGBA_SRGB() const
Get color (RGBA in the sRGB color space) image from the frame.
ZIVID_CORE_EXPORT CameraState state() const
Get the camera state data at the time of the capture.
ZIVID_CORE_EXPORT Image< ColorBGRA > imageBGRA() const
Get color (BGRA) image from the frame.
ZIVID_CORE_EXPORT Frame2D(const std::string &fileName)
Construct a Frame2D by loading from a .zdf file.
Various information for a frame.
Definition FrameInfo.h:79
A 2-dimensional image.
Definition Image.h:141
Settings used when capturing 2D images with a Zivid camera.
Definition Settings2D.h:79
Definition EnvironmentInfo.h:74
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:85
ColorSRGB ColorRGBA_SRGB
Color with 8-bit red, green, blue and alpha channels in the sRGB color space.
Definition Color.h:93
@ frame
Definition FrameFileType.h:55
A user CUDA stream or OpenCL command queue, selected by which member is populated.
Definition ComputeWrappers.h:106