---
title: "ClikaRT::processor::ImageProcessorConfig"
sidebar_label: "ImageProcessorConfig"
description: "Settable configuration for an ImageProcessor (convert-rgb → resize → center-crop → rescale → normalize → pad)."
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--class">class</span>

**Header:** `ClikaRT/processor/config.h`

Settable configuration for an [`ImageProcessor`](./ImageProcessor.md) (convert-rgb → resize → center-crop → rescale → normalize → pad). Default-constructed to the documented HuggingFace defaults (resize + rescale by 1/255 + normalize on; crop + pad off); tune with the fluent setters, or round-trip a `preprocessor_config.json` through [`from_json`](./ImageProcessorConfig.md#from_json) / [`to_json`](./ImageProcessorConfig.md#to_json). Move-only.

## Static member functions

### from\_json() {#from_json}

<div class="api-signature">

`static` [`ImageProcessorConfig`](./ImageProcessorConfig.md) **`from_json`**(`std::string_view` `text`)

</div>

Parse a config from `preprocessor_config.json` text (flat, or nesting an `"image_processor"` block). Malformed text raises [`ClikaRT::Error`](../Error.md).

The accepted schema is [ClikaRT](../../index.md)'s own canonical config: the HuggingFace preprocessing keys plus the [ClikaRT](../../index.md) extension keys ([`target_dtype`](./ImageProcessorConfig.md#target_dtype), [`resize_before_cast`](./ImageProcessorConfig.md#resize_before_cast)). Two semantics to be aware of when feeding it a HuggingFace-authored file:

- A missing key takes [ClikaRT](../../index.md)'s documented default (this class's default-constructed state), NOT the per-processor-class default the HuggingFace `image_processor_type` would imply. Fields a HuggingFace class hardcodes rather than serializes must be set explicitly.
- A key outside the accepted schema is ignored for the parse but logged as a warning naming it, so a mis-spelled or unsupported key is a visible diagnostic, never a silently different pipeline.
- A `size` / `crop_size` / `pad_size` value is one of: a bare integer (for `size`, the shortest edge, aspect preserved, the CLIP-style `"size": 224`; for `crop_size` / `pad_size`, a square), a `[height, width]` list (an exact target), `{height, width}`, `{shortest_edge}`, `{shortest_edge, longest_edge}`, or `{max_height, max_width}`. Any other value form (a one-element list, a string, an object with another key set) is refused with an error naming the supported forms, never read as "no size".

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 80

</div>

## Member functions

### ImageProcessorConfig() {#ImageProcessorConfig}

<div class="api-signature">

**`ImageProcessorConfig`**()

</div>

A default configuration, usable with no config file.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 50

</div>

### ImageProcessorConfig(ImageProcessorConfig) {#ImageProcessorConfig-2}

<div class="api-signature">

**`ImageProcessorConfig`**(`ImageProcessorConfig&&`) `noexcept`

</div>

move-construct (the source becomes an empty shell)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 51

</div>

### operator=(ImageProcessorConfig) {#operator-assign}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`operator=`**([`ImageProcessorConfig`](./ImageProcessorConfig.md)`&&`) `noexcept`

</div>

move-assign (the source becomes an empty shell)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 52

</div>

### ImageProcessorConfig(ImageProcessorConfig) {#ImageProcessorConfig-3}

<div class="api-signature">

**`ImageProcessorConfig`**(`const ImageProcessorConfig&`)

</div>

copy-construct: a DEEP copy (independent settings)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 53

</div>

### operator=(ImageProcessorConfig) {#operator-assign-2}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`operator=`**(`const` [`ImageProcessorConfig`](./ImageProcessorConfig.md)`&`)

</div>

copy-assign: a deep copy

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 54

</div>

### \~ImageProcessorConfig() {#ImageProcessorConfig-4}

<div class="api-signature">

**`~ImageProcessorConfig`**()

</div>

destructor

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 55

</div>

### to\_json() {#to_json}

<div class="api-signature">

`std::string` **`to_json`**(`int` `indent` `=` `2`) `const`

</div>

Serialize to `preprocessor_config.json` text (`indent < 0` = compact), [ClikaRT](../../index.md)'s canonical form, with every field (defaults included) materialized. Every field round-trips through [`from_json`](./ImageProcessorConfig.md#from_json). Infallible.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 86

</div>

### resize\_shortest\_edge(int64\_t) {#resize_shortest_edge}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resize_shortest_edge`**(`std::int64_t` `edge`)

</div>

Resize the shortest edge to `edge`, preserving aspect (turns resize on): the `{shortest_edge}` size form; a bare integer `size` in a config file means the same. The other edge is truncated, never rounded, so a 480×640 image at 224 becomes 224×298.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 94

</div>

### resize\_shortest\_edge(int64\_t, int64\_t) {#resize_shortest_edge-2}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resize_shortest_edge`**(`std::int64_t` `edge`, `std::int64_t` `longest_cap`)

</div>

Resize the shortest edge to `edge` and cap the longest at `longest_cap` (the DETR-style aspect-preserving fit, the `{shortest_edge, longest_edge}` size form; turns resize on). When the cap binds, the shortest edge is re-derived from it: a 1080×1920 image at 800/1333 becomes 750×1333.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 99

</div>

### resize\_to() {#resize_to}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resize_to`**(`std::int64_t` `height`, `std::int64_t` `width`)

</div>

Resize to an exact `height`×`width` (turns resize on): the `{height, width}` / `[height, width]` size forms.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 102

</div>

### resize\_within() {#resize_within}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resize_within`**(`std::int64_t` `max_height`, `std::int64_t` `max_width`)

</div>

Fit inside `max_height`×`max_width` preserving aspect, the `{max_height, max_width}` size form (turns resize on). Scales up as well as down: the more constrained side lands exactly on its bound, the other is truncated; a 300×400 image within 100×60 becomes 45×60.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 107

</div>

### set\_do\_resize() {#set_do_resize}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_resize`**(`bool` `on`)

</div>

resize step on/off (the `resize_*` setters turn it on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 108

</div>

### resample(ImageResample) {#resample}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resample`**([`ImageResample`](./index.md#ImageResample) `mode`)

</div>

The resize resampling filter (PIL vocabulary). Default bicubic.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 110

</div>

### resample(ImageResample, bool) {#resample-2}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`resample`**([`ImageResample`](./index.md#ImageResample) `mode`, `bool` `antialias`)

</div>

Filter + antialias in one call (the resize quality pair): `mode` picks the filter, [`antialias`](./ImageProcessorConfig.md#antialias) the smoothing.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 113

</div>

### set\_antialias() {#set_antialias}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_antialias`**(`bool` `on`)

</div>

Antialiased resize on/off. Default ON, the PIL behavior every HuggingFace image processor exhibits; turn off only to trade fidelity for speed on large downscales.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 117

</div>

### center\_crop\_to() {#center_crop_to}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`center_crop_to`**(`std::int64_t` `height`, `std::int64_t` `width`)

</div>

Center-crop to `height`×`width` (turns crop on).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 119

</div>

### set\_do\_center\_crop() {#set_do_center_crop}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_center_crop`**(`bool` `on`)

</div>

center-crop step on/off ([`center_crop_to`](./ImageProcessorConfig.md#center_crop_to) turns it on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 120

</div>

### pad\_to() {#pad_to}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`pad_to`**(`std::int64_t` `height`, `std::int64_t` `width`)

</div>

Pad (detection-style) bottom/right with zeros to `height`×`width` (turns pad on).

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 123

</div>

### set\_do\_pad() {#set_do_pad}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_pad`**(`bool` `on`)

</div>

pad step on/off ([`pad_to`](./ImageProcessorConfig.md#pad_to) turns it on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 124

</div>

### rescale\_by() {#rescale_by}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`rescale_by`**(`double` `factor`)

</div>

Scale pixel values by `factor` (e.g. 1/255). Turns rescale on.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 126

</div>

### set\_do\_rescale() {#set_do_rescale}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_rescale`**(`bool` `on`)

</div>

rescale step on/off ([`rescale_by`](./ImageProcessorConfig.md#rescale_by) turns it on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 127

</div>

### normalize() {#normalize}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`normalize`**([`ClikaRT::Span`](../Span.md)`<const float>` `mean`, [`ClikaRT::Span`](../Span.md)`<const float>` `std`)

</div>

Per-channel normalization (subtract mean, divide by std). `mean`/`std` are length 1 or 3; turns normalize on. The spans are read during the call.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 130

</div>

### set\_do\_normalize() {#set_do_normalize}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_normalize`**(`bool` `on`)

</div>

normalize step on/off ([`normalize`](./ImageProcessorConfig.md#normalize) turns it on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 131

</div>

### set\_do\_convert\_rgb() {#set_do_convert_rgb}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_do_convert_rgb`**(`bool` `on`)

</div>

force 1/4-channel input to RGB before the pipeline (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 132

</div>

### set\_target\_dtype() {#set_target_dtype}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_target_dtype`**([`DataType`](../../index.md#DataType) `dtype`)

</div>

The dtype the pipeline produces (and works in for rescale/normalize). The loaded image is cast to it exactly once, or not at all when it already matches. Default Float32.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 136

</div>

### set\_resize\_before\_cast() {#set_resize_before_cast}

<div class="api-signature">

[`ImageProcessorConfig`](./ImageProcessorConfig.md)`&` **`set_resize_before_cast`**(`bool` `on`)

</div>

Resize/crop in the LOADED dtype and cast to [`target_dtype`](./ImageProcessorConfig.md#target_dtype) afterward, the HuggingFace/PIL order (default true). Set false to cast to [`target_dtype`](./ImageProcessorConfig.md#target_dtype) FIRST and resize in that dtype: the portable path for a device whose resize kernel does not cover the loaded integer dtype.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 141

</div>

### do\_resize() {#do_resize}

<div class="api-signature">

`bool` **`do_resize`**() `const`

</div>

whether the resize step runs (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 144

</div>

### resample() {#resample-3}

<div class="api-signature">

[`ImageResample`](./index.md#ImageResample) **`resample`**() `const`

</div>

The resampling filter. A config whose PIL code has no filter here (e.g. LANCZOS) reads back `Bicubic`, the filter the pipeline actually runs.

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 147

</div>

### antialias() {#antialias}

<div class="api-signature">

`bool` **`antialias`**() `const`

</div>

whether resize antialiases (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 148

</div>

### do\_center\_crop() {#do_center_crop}

<div class="api-signature">

`bool` **`do_center_crop`**() `const`

</div>

whether center-crop runs (default off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 149

</div>

### do\_rescale() {#do_rescale}

<div class="api-signature">

`bool` **`do_rescale`**() `const`

</div>

whether rescale runs (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 150

</div>

### rescale\_factor() {#rescale_factor}

<div class="api-signature">

`double` **`rescale_factor`**() `const`

</div>

the rescale multiplier (default 1/255)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 151

</div>

### do\_normalize() {#do_normalize}

<div class="api-signature">

`bool` **`do_normalize`**() `const`

</div>

whether normalize runs (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 152

</div>

### do\_convert\_rgb() {#do_convert_rgb}

<div class="api-signature">

`bool` **`do_convert_rgb`**() `const`

</div>

whether RGB conversion runs (default on)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 153

</div>

### do\_pad() {#do_pad}

<div class="api-signature">

`bool` **`do_pad`**() `const`

</div>

whether detection-pad runs (default off)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 154

</div>

### target\_dtype() {#target_dtype}

<div class="api-signature">

[`DataType`](../../index.md#DataType) **`target_dtype`**() `const`

</div>

the pipeline output/work dtype (default Float32)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 155

</div>

### resize\_before\_cast() {#resize_before_cast}

<div class="api-signature">

`bool` **`resize_before_cast`**() `const`

</div>

whether geometry runs before the dtype cast (default true)

<div class="api-declared">

Declared in `ClikaRT/processor/config.h`, line 156

</div>
