Adding platesolving
This commit is contained in:
+34
-1
@@ -3,8 +3,8 @@
|
||||
#include <cstring>
|
||||
#include <QElapsedTimer>
|
||||
#include <QFloat16>
|
||||
#include <QColorSpace>
|
||||
#include <lcms2.h>
|
||||
//#include <libstellarsolver/stellarsolver.h>
|
||||
|
||||
using F16 = qfloat16;
|
||||
|
||||
@@ -804,6 +804,39 @@ std::shared_ptr<RawImage> RawImage::fromPlanar(const void *pixels, uint32_t w, u
|
||||
return image;
|
||||
}
|
||||
|
||||
std::shared_ptr<RawImage> RawImage::toPlanar()
|
||||
{
|
||||
std::shared_ptr<RawImage> ret = std::make_shared<RawImage>(m_width, m_height, 1, m_type);
|
||||
size_t size = m_width * m_height;
|
||||
size_t ch = m_ch;
|
||||
|
||||
auto convert = [&](auto *in, auto *out)
|
||||
{
|
||||
for(size_t i=0; i<size; i++)
|
||||
out[i] = in[i * ch];
|
||||
};
|
||||
|
||||
switch(m_type)
|
||||
{
|
||||
case UINT8:
|
||||
convert(static_cast<uint8_t*>(data()), static_cast<uint8_t*>(ret->data()));
|
||||
break;
|
||||
case UINT16:
|
||||
case FLOAT16:
|
||||
convert(static_cast<uint16_t*>(data()), static_cast<uint16_t*>(ret->data()));
|
||||
break;
|
||||
case UINT32:
|
||||
case FLOAT32:
|
||||
convert(static_cast<uint32_t*>(data()), static_cast<uint32_t*>(ret->data()));
|
||||
break;
|
||||
case FLOAT64:
|
||||
convert(static_cast<double*>(data()), static_cast<double*>(ret->data()));
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<RawImage> RawImage::split() const
|
||||
{
|
||||
std::vector<RawImage> planes;
|
||||
|
||||
Reference in New Issue
Block a user