From 459fe70f53b2f3a7dc33c3833210f60840a23204 Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Thu, 23 Jan 2025 15:49:39 +0100 Subject: change img data type to uint8_t, fix loading of bin calibration table --- src/image.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'src/image.cpp') diff --git a/src/image.cpp b/src/image.cpp index 000ca2d..e4d51c1 100644 --- a/src/image.cpp +++ b/src/image.cpp @@ -132,13 +132,27 @@ std::shared_ptr Image::pixels() const void Image::copyFromData(const void *src, size_t size) { - if (size > sizeof(data)) - { - // throw std::logic_error(std::format) + if (Q_UNLIKELY(size % sizeof(data) != 0 || size < sizeof(data))) { + throw std::logic_error(__func__ + std::string(": wrong data size")); } - if (pixelFormat == libcamera::formats::R8) - { + switch (pixelFormat) { + case libcamera::formats::R8: { + // std::cout << "R8" << std::endl; memcpy(data, src, size); + break; + } + case libcamera::formats::R16: { + // std::cout << "R16" << std::endl; +#pragma omp parallel +#pragma omp for + for (size_t i = 0; i < img_size; i++) { + data[i / img_width][i % img_width] = (((uint16_t *) src)[i] & 0xff00) >> 8; + } + break; + } + default: + throw std::logic_error(__func__ + std::string(": unsupported pixel format")); + break; } } -- cgit v1.2.3-70-g09d2