Img2Num C++ (Internal Developer Docs) dev
API Documentation
Loading...
Searching...
No Matches
image_to_svg.cpp
1#include "img2num.h"
2
3#include <cstring>
4#include <vector>
5
6namespace img2num {
7std::string image_to_svg(
8 const uint8_t* data, const int width, const int height, const ImageToSvgConfig& config
9) {
10 // self deallocate
11 std::vector<uint8_t> img_data(static_cast<size_t>(width) * static_cast<size_t>(height) * 4);
12 std::vector<uint8_t> out_data(static_cast<size_t>(width) * static_cast<size_t>(height) * 4);
13 std::vector<int32_t> out_labels(static_cast<size_t>(width) * static_cast<size_t>(height));
14
15 std::memcpy(
16 img_data.data(), data, static_cast<size_t>(width) * static_cast<size_t>(height) * 4
17 );
19 img_data.data(), width, height, config.bilateral_filter.sigma_spatial,
20 config.bilateral_filter.sigma_range, config.color_space
21 );
22 kmeans(
23 img_data.data(), out_data.data(), out_labels.data(), width, height, config.kmeans.k,
24 config.kmeans.max_iter, config.color_space
25 );
26 std::string svg {labels_to_svg(
27 data, out_labels.data(), width, height, config.min_cluster_area, config.min_thickness
28 )};
29
30 return svg;
31}
32} // namespace img2num
Core image processing functions for img2num project.
void bilateral_filter(uint8_t *image, size_t width, size_t height, double sigma_spatial, double sigma_range, uint8_t color_space)
Apply bilateral filtering to an image.
std::string image_to_svg(const uint8_t *data, const int width, const int height, const ImageToSvgConfig &config)
Convert labeled regions of an image into an SVG string.
std::string labels_to_svg(const uint8_t *data, const int32_t *labels, const int width, const int height, const int min_area, const int min_thickness)
Convert labeled regions of an image into an SVG string.
void kmeans(const uint8_t *data, uint8_t *out_data, int32_t *out_labels, const int32_t width, const int32_t height, const int32_t k, const int32_t max_iter, const uint8_t color_space)
Perform k-means clustering on image data.
Definition kmeans.cpp:241
Configuration options for image_to_svg.
Definition img2num.h:20
int min_cluster_area
Minimum area (in pixels) for a region to be included in the SVG.
Definition img2num.h:42