class Image -- Image オブジェクト#

Imageimage モジュールの中核となるデータ型であり、すべての描画ルーチン、すべてのフィルタ、すべての幾何変換、そしてすべての特徴抽出ルーチンが操作対象とするメモリ上のピクセルバッファです。csi.CSI.snapshot() から出力されるすべてのフレームは Image であり、ディスクから読み込まれたフレーム、JPEG や PNG からデコードされたフレーム、numpy 形式の ndarray から確保されたフレーム、空の描画キャンバスとして構築されたフレームも同様です。

Imagewidthheightpixformat という3つの数値と、連続したピクセルバッファによって記述されます。ピクセルフォーマットは、メモリ上のレイアウトと利用可能な操作の両方を決定します。

  • BINARY (1 bpp) -- 1ピクセルあたり1ビット。モルフォロジー処理としきい値処理で使用されます。

  • GRAYSCALE (8 bpp) -- 1ピクセルあたり1バイト。ほとんどの CV(AprilTag、エッジ、ORB、オプティカルフロー)の標準フォーマットです。

  • RGB565 (16 bpp) -- 1ピクセルあたり2バイト(5R/6G/5B)。デフォルトのカラーフォーマットです。

  • BAYER (8 bpp) -- センサーから直接出力される生の Bayer モザイクデータです。ほとんどの CV メソッドは Bayer 画像では利用できません。まず GRAYSCALE / RGB565 にデベイヤー処理してください。

  • YUV422 (16 bpp) -- 4:2:2 クロマサブサンプリングのカラーで、1ピクセルあたり2バイトです。一部のメソッドのみが YUV422 で直接動作します。

  • JPEG / PNG -- 圧縮されたバッファです。ピクセルレベルの操作には、まず to_grayscale() または to_rgb565() が必要です。

Image オブジェクトの取得元#

Image を取得する方法は4つあります。

  • カメラのフレームバッファから -- csi.CSI().snapshot() は次にキャプチャされたフレームを返します。返されるオブジェクトはカメラのフレームバッファメモリの薄いラッパーであるため、それに対して行う描画やフィルタ操作は、IDE のプレビューやディスプレイに送られる内容を変更します。

  • ファイルから -- Image コンストラクタにパス文字列を渡します。BMP、PGM、PPM、JPEG、PNG は RAM に直接デコードされます(copy_to_fb=True の場合はカメラのフレームバッファにデコードされます)。

  • ndarray から -- (h, w) または (h, w, 3) の float32 配列を渡します。ピクセルは 0.0 -- 255.0 からそれぞれ GRAYSCALE または RGB565 へとスケーリングされます。

  • -- (width, height, pixformat) を渡してゼロ初期化された描画サーフェスを確保します。圧縮ピクセルフォーマット(JPEG / PNG)の場合は buffer= 引数が必須で、圧縮されたバイトストリームを保持します。

典型的なキャプチャ・処理・表示ループ#

import csi
import image

sensor = csi.CSI()
sensor.reset()
sensor.pixformat(csi.RGB565)
sensor.framesize(csi.QVGA)

while True:
    img = sensor.snapshot()                    # capture
    for blob in img.find_blobs([(30, 100, 15, 127, 15, 127)]):  # process
        img.draw_rectangle(blob.rect)          # annotate
    # img is shown automatically in the IDE preview and on any
    # attached display.

インデックス、長さ、イテレーション、bytes 風アクセス#

  • インデックス -- img[i] はピクセル i を読み取ります(行優先の線形順)。img[i] = value はそれを書き込みます。グレースケール / Bayer ピクセルは8ビット整数、RGB565 / YUV422 ピクセルは16ビットのパックされた整数、バイナリピクセルは 0 / 1 です。JPEG / PNG 画像の場合、インデックス空間はピクセルではなく圧縮バイトストリームになります。

  • 長さ -- len(img) は非圧縮フォーマットの場合はピクセル数を、圧縮フォーマットの場合はバイト数を返します。

  • イテレーション -- for px in img: ...[] インデックスと同じ順序でピクセル配列を走査します。

  • bytes 風 -- Image は読み取りバッファプロトコルを公開しているため、bytes / bytearray を受け取るあらゆるもの(例:uart.write(img)socket.send(img)hashlib.sha256(img))に直接渡せます。読み書き可能なビューを取得するには代わりに bytearray() を使用してください。

ヒントフラグ#

多くの Image メソッドは hint 引数を受け取ります。これは以下のフラグの論理 OR です。

  • image.AREA: デフォルトの最近傍法の代わりに、縮小時に面積スケーリングを使用します。

  • image.BILINEAR: デフォルトの最近傍スケーリングの代わりにバイリニアスケーリングを使用します。

  • image.BICUBIC: デフォルトの最近傍スケーリングの代わりにバイキュービックスケーリングを使用します。

  • image.CENTER: 描画する画像をディスプレイ上で中央に配置します。これはスケーリングの後に適用されます。

  • image.HMIRROR: 画像を水平方向に反転します。

  • image.VFLIP: 画像を垂直方向に反転します。

  • image.TRANSPOSE: 画像を転置します(x/y を入れ替えます)。

  • image.EXTRACT_RGB_CHANNEL_FIRST: スケーリングの前に rgb_channel の抽出を行います。

  • image.APPLY_COLOR_PALETTE_FIRST: スケーリングの前にカラーパレットを適用します。

  • image.SCALE_ASPECT_KEEP: 描画する画像をディスプレイ内に収まるようにスケーリングします。

  • image.SCALE_ASPECT_EXPAND: 描画する画像をディスプレイいっぱいになるようにスケーリングします(クロッピングが発生します)。

  • image.SCALE_ASPECT_IGNORE: 描画する画像をディスプレイいっぱいになるようにスケーリングします(引き伸ばしが発生します)。

  • image.ROTATE_90: 画像を90度回転します(これは単に VFLIP | TRANSPOSE です)。

  • image.ROTATE_180: 画像を180度回転します(これは単に HMIRROR | VFLIP です)。

  • image.ROTATE_270: 画像を270度回転します(これは単に HMIRROR | TRANSPOSE です)。

  • image.BLACK_BACKGROUND: 描画先の背景画像が黒であると仮定し、ブレンドを高速化します。Image.draw_image()Image.get_similarity() でのみサポートされます。

class image.Image(arg: str | int | ndarray, height: int = -1, pixformat: int = -1, *, buffer: bytes | bytearray | memoryview | None = None, copy_to_fb: bool = False)#

arg が文字列の場合、これは arg のパスにあるファイルから新しい画像オブジェクトを作成します。ディスクからの bmp/pgm/ppm/jpg/jpeg/png 画像ファイルの読み込みをサポートします。copy_to_fb が true の場合、画像はヒープに確保される代わりにフレームバッファにコピーされます。

argndarray の場合、これは ndarray から新しい画像オブジェクトを作成します。形状が (w, h)ndarray オブジェクトはグレースケール画像として扱われ、(w, h, 3) は RGB565 画像として扱われます。現時点では float32 の ndarrays のみがサポートされています。この方法で画像を作成する際に buffer 引数を渡すと、ヒープに領域を確保する代わりにそれを画像データの格納に使用します。copy_to_fb が true の場合、画像はヒープに確保されたり buffer を使用したりする代わりに、フレームバッファにコピーされます。

argint の場合、それは新しい画像の幅とみなされ、新しい空の画像オブジェクトを作成するには height 値と format 値が後に続く必要があります。format には image.GRAYSCALE のような任意の画像 pixformat 値を指定できます。画像はすべてゼロで初期化されます。圧縮画像フォーマットの場合は buffer 値が期待される点に注意してください。buffer はこの方法で画像を作成する際の画像データのソースとみなされます。copy_to_fb と併用すると、buffer のデータがフレームバッファにコピーされます。JPEG の bytes() または bytearray() オブジェクトから JPEG 画像を作成したい場合は、JPEG 用に widthheightimage.JPEG を渡し、buffer を JPEG バイトストリームに設定することで JPEG 画像を作成できます。

画像は「[]」記法をサポートします。image[index] = 8/16-bit value で画像ピクセルを代入し、image[index] で画像ピクセルを取得します。これはグレースケール / bayer 画像では8ビット値、RGB565 / YUV 画像では16ビット値になります。バイナリ画像は1ビット値を返します。

JPEG 画像の場合、「[]」を使うと圧縮された JPEG 画像ブロブにバイト配列としてアクセスできます。ただし、JPEG 画像は圧縮されたバイトストリームであるため、データ配列の読み書きは不透明です。

画像は読み取りバッファ操作もサポートします。画像をバイト配列オブジェクトであるかのように、あらゆる種類の MicroPython 関数に渡すことができます。特に、画像を送信したい場合は、UART/SPI/I2C の書き込み関数に渡すだけで自動的に送信できます。

基本メソッド#

width() int#

画像の幅をピクセル単位で返します。

height() int#

画像の高さをピクセル単位で返します。

format() int#

グレースケール画像の場合は image.GRAYSCALE、RGB565 画像の場合は image.RGB565、Bayer パターン画像の場合は image.BAYER、JPEG 画像の場合は image.JPEG を返します。

size() int#

画像のサイズをバイト単位で返します。

bytearray() bytearray#

バイトレベルの読み書きアクセスのために、画像データを指す bytearray オブジェクトを返します。

注釈

画像オブジェクトは、bytes 風オブジェクトを必要とする MicroPython ドライバに渡されると、自動的に bytes オブジェクトにキャストされます。これは読み取り専用アクセスです。読み書きアクセスを得るには bytearray() を呼び出してください。

get_pixel(x: int, y: int, rgbtuple: bool | None = None) int | Tuple[int, int, int]#

グレースケール画像の場合:位置 (x, y) のグレースケールピクセル値を返します。RGB565 画像の場合:位置 (x, y) の RGB888 ピクセルタプル (r, g, b) を返します。Bayer パターン画像の場合:位置 (x, y) のピクセル値を返します。

x または y が画像の外側にある場合は None を返します。

xy は個別に渡すこともタプルとして渡すこともできます。

rgbtuple が True の場合、このメソッドは RGB888 タプルを返します。それ以外の場合、このメソッドは基となるピクセルの整数値を返します。すなわち、RGB565 画像の場合このメソッドは RGB565 値を返します。RGB565 画像ではデフォルトで True、それ以外ではデフォルトで False です。

圧縮画像ではサポートされていません。

注釈

Image.get_pixel()Image.set_pixel() は、Bayer パターン画像を操作できる唯一のメソッドです。Bayer パターン画像は、偶数行ではピクセルが R/G/R/G/... 、奇数行では G/B/G/B/... となる文字通りの画像です。各ピクセルは8ビットです。rgbtuple を設定してこのメソッドを呼び出すと、Image.get_pixel() はそのピクセル位置でソース画像をデベイヤー処理し、そのピクセル位置の有効な RGB888 タプルを返します。

set_pixel(x: int, y: int, pixel: int | Tuple[int, int, int]) Image#

グレースケール画像の場合:位置 (x, y) のピクセルをグレースケール値 pixel に設定します。RGB565 画像の場合:位置 (x, y) のピクセルを RGB888 タプル (r, g, b) pixel に設定します。Bayer パターン画像の場合:位置 (x, y) のピクセル値を pixel の値に設定します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

xy は個別に渡すこともタプルとして渡すこともできます。

pixel は RGB888 タプル (r, g, b)、または基となるピクセル値(すなわち RGB565 画像の場合は RGB565 値、グレースケール画像の場合は8ビット値)のいずれかです。

圧縮画像ではサポートされていません。

注釈

Image.get_pixel()Image.set_pixel() は、Bayer パターン画像を操作できる唯一のメソッドです。Bayer パターン画像は、偶数行ではピクセルが R/G/R/G/... 、奇数行では G/B/G/B/... となる文字通りの画像です。各ピクセルは8ビットです。RGB888 タプルを指定してこのメソッドを呼び出すと、その RGB888 タプルのグレースケール値が抽出され、ピクセル位置に設定されます。

変換メソッド#

to_ndarray(dtype: str, buffer: bytes | bytearray | memoryview | None = None) ndarray#

画像から作成した ndarray オブジェクトを返します。現時点ではこれは GRAYSCALE または RGB565 画像でのみ動作します。

dtype には bBf を指定でき、それぞれ符号付き8ビット、符号なし8ビット、32ビット浮動小数点の ndarray を作成します。GRAYSCALE 画像は符号なし8ビットの ndarray オブジェクトに直接変換されます。符号付き8ビットの ndarray オブジェクトでは値 (0:255) が (-127:128) にマッピングされます。float 32ビットの ndarray オブジェクトでは値が (0.0:255.0) にマッピングされます。RGB565 画像は3チャンネルの ndarray オブジェクトに変換され、dtype に応じて各チャンネルに上記の GRAYSCALE 画像と同じ処理が適用されます。なお、dtype はそれぞれ bBf の整数値(例:ord())も受け付けます。

bufferNone でない場合、ndarray のバッファとして使用する bytearray オブジェクトです。None の場合、ndarray 画像データを格納するために新しいバッファがヒープに確保されます。buffer 引数を使うと、ndarray を事前に確保されたバッファに直接確保でき、ヒープ確保とコピー操作を省けます。

返される ndarray は、GRAYSCALE 画像では (height, width)、RGB565 画像では (height, width, 3) の形状を持ちます。

to_bitmap(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像をビットマップ画像(1ピクセルあたり1ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

注釈

ビットマップ画像は、0 と 1 の2つのピクセル値のみを持つグレースケール画像のようなものです。さらに、ビットマップ画像は1ピクセルあたり1ビットのみを格納するようにパックされているため、非常に小さくなります。OpenMV 画像ライブラリでは、sensor.GRAYSCALEsensor.RGB565 画像が使用できるすべての場所でビットマップ画像を使用できます。ただし、ビットマップ画像は2つの値しか持たないため、ビットマップ画像に適用しても意味をなさない操作が多くあります。OpenMV では、MicroPython ヒープに非常に簡単に収まるため、操作などにおける mask 値としてビットマップ画像を使用することを推奨します。最後に、ビットマップ画像のピクセル値 0 と 1 は、sensor.GRAYSCALE または sensor.RGB565 画像に適用される際には黒と白として解釈されます。ライブラリが変換を自動的に処理します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_grayscale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像をグレースケール画像(1ピクセルあたり8ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_rgb565(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_rainbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_RAINBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 のレインボー画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_ironbow(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 のアイアンボウ画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_depth(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 の深度画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、image.PALETTE_DEPTH、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_evt_dark(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 のダークイベント画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_evt_light(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image = PALETTE_IRONBOW, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を RGB565 のライトイベント画像(1ピクセルあたり16ビット)に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_jpeg(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image#

画像を JPEG 画像に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

quality は jpeg 画像の圧縮品質を制御します。値は 0 から 100 の間で指定できます。

subsampling には以下を指定できます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

to_png(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

画像を PNG 画像に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

compress(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False, quality: int = 90, subsampling: int = 0) Image#

画像を JPEG 画像に変換します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

quality は jpeg 画像の圧縮品質を制御します。値は 0 から 100 の間で指定できます。

subsampling には以下を指定できます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

注釈

Image.compressImage.to_jpeg のエイリアスです。

copy(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy_to_fb: bool = False) Image#

画像オブジェクトのディープコピーを作成します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

crop(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

基となる画像タイプを変更せずに、画像をインプレースで変更します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

scale(x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, copy: bool = False, copy_to_fb: bool = False) Image#

基となる画像タイプを変更せずに、画像をインプレースで変更します。

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここではサポートされていない image.BLACK_BACKGROUND を除く)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

copy が True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。

copy_to_fb が True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbcopy よりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

注釈

Image.scaleImage.crop のエイリアスです。

save(path: str, roi: Tuple[int, int, int, int] | None = None, quality: int = 50) Image#

画像のコピーを path のファイルシステムに保存します。

bmp/pgm/ppm/jpg/jpeg 画像ファイルをサポートします。jpeg 圧縮画像を非圧縮フォーマットに保存することはできない点に注意してください。

roi は、保存元とする関心領域の矩形 (x, y, w, h) です。指定されない場合は画像全体をコピーする画像矩形に等しくなります。この引数は JPEG 画像には適用されません。

quality は、画像がまだ圧縮されていない場合に画像を jpeg フォーマットで保存するために使用する jpeg 圧縮品質です (0-100)(int)。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

flush() None#

カメラのフレームバッファ内の画像で、IDE 内のフレームバッファを更新します。

描画メソッド#

clear(mask: Image | None = None) Image#

画像内のすべてのピクセルをゼロに設定します(非常に高速)。

mask は、操作のためのピクセルレベルのマスクとして使用する別の画像です。マスクは黒または白のピクセルのみを持つ画像で、操作対象の画像と同じサイズである必要があります。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像ではサポートされていません。

draw_line(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image#

画像上に (x0, y0) から (x1, y1) への線を描画します。x0, y0, x1, y1 を個別に渡すこともタプル (x0, y0, x1, y1) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

thickness は、線の太さをピクセル単位で制御します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_rectangle(x: int, y: int, w: int, h: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image#

画像上に矩形を描画します。x, y, w, h を個別に渡すこともタプル (x, y, w, h) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

thickness は、線の太さをピクセル単位で制御します。

矩形を塗りつぶすには fill を True に設定して渡します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_circle(x: int, y: int, radius: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image#

画像上に円を描画します。x, y, radius を個別に渡すこともタプル (x, y, radius) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

thickness は、エッジの太さをピクセル単位で制御します。

円を塗りつぶすには fill を True に設定して渡します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_ellipse(cx: int, cy: int, rx: int, ry: int, rotation: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1, fill: bool = False) Image#

画像上に楕円を描画します。cx, cy, rx, ry、および回転(度単位)を個別に渡すこともタプル (cx, yc, rx, ry, rotation) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

thickness は、エッジの太さをピクセル単位で制御します。

楕円を塗りつぶすには fill を True に設定して渡します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_string(x: int, y: int, text: str, color: int | Tuple[int, int, int] | None = None, scale: float = 1, x_spacing: int = 0, y_spacing: int = 0, mono_space: bool = True, char_rotation: int = 0, char_hmirror: bool = False, char_vflip: bool = False, string_rotation: int = 0, string_hmirror: bool = False, string_vflip: bool = False) Image#

画像内の位置 (x, y) から 8x10 のテキストを描画します。x, y を個別に渡すこともタプル (x, y) として渡すこともできます。

text は、画像に書き込む文字列です。\n\r\r\n の改行はカーソルを次の行に移動します。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

scale を増やすと、画像上のテキストのサイズを拡大/縮小できます。0 より大きい整数値または浮動小数点値を渡せます。

x_spacing は、文字間に x ピクセルを追加(正の場合)または減算(負の場合)できます。

y_spacing は、(複数行テキストの場合)文字間に y ピクセルを追加(正の場合)または減算(負の場合)できます。

mono_space はデフォルトで True であり、テキストを固定幅にします。大きなテキストスケールでは、これは見栄えが悪くなります。固定幅でない文字間隔を得るには False に設定してください。こちらの方がはるかに見栄えが良くなります。

char_rotation は 0、90、180、270 を指定でき、文字列内の各文字をこの量だけ回転します。

char_hmirror が True の場合、文字列内のすべての文字を水平方向に反転します。

char_vflip が True の場合、文字列内のすべての文字を垂直方向に反転します。

string_rotation は 0、90、180、270 を指定でき、文字列をこの量だけ回転します。

string_hmirror が True の場合、文字列を水平方向に反転します。

string_vflip が True の場合、文字列を垂直方向に反転します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_cross(x: int, y: int, color: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1) Image#

位置 x, y に十字を描画します。x, y を個別に渡すこともタプル (x, y) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

size は、十字の線がどれだけ長く伸びるかを制御します。

thickness は、エッジの太さをピクセル単位で制御します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_arrow(x0: int, y0: int, x1: int, y1: int, color: int | Tuple[int, int, int] | None = None, thickness: int = 1) Image#

画像上に (x0, y0) から (x1, y1) への矢印を描画します。x0, y0, x1, y1 を個別に渡すこともタプル (x0, y0, x1, y1) として渡すこともできます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

thickness は、線の太さをピクセル単位で制御します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_detection(detection: Tuple[int, int, int, int, int, int], color1: int | Tuple[int, int, int] | None = None, color2: int | Tuple[int, int, int] | None = None, size: int = 5, thickness: int = 1, fill: bool = False, label: str | None = None, label_offset: Tuple[int, int] | None = None) Image#

検出結果を画像上に描画します。detection は、バウンディング矩形とセントロイドを記述する6要素タプル (rx, ry, rw, rh, cx, cy) です(通常は NN またはカラー追跡コードによって返されます)。

color1 は矩形の色、color2 はセントロイド十字の色です。size はセントロイド十字のサイズ、thickness は輪郭の幅を制御し、fill は矩形を塗りつぶします。

label が指定された場合、矩形の近くに label_offset (x, y) だけオフセットして描画されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_edges(corners: List[Tuple[int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 0, thickness: int = 1, fill: bool = False) Image#

blob.corners のようなメソッドによって返されるコーナーリストの間に線のエッジを描画します。Corners は、2要素の x/y タプルからなる4要素タプルです。例:[(x1,y1),(x2,y2),(x3,y3),(x4,y4)]。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

size が 0 より大きい場合、コーナーが半径 size の円として描画されます。

thickness は、線の太さをピクセル単位で制御します。

描画されるコーナーの円を塗りつぶすには fill を True に設定して渡します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

draw_image(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, mask: Image | None = None) Image#

左上隅が位置 x, y から始まる image を描画します。x, y を個別に渡すこともタプル (x, y) として渡すこともできます。このメソッドは、渡された画像を描画先画像の正しいピクセルフォーマットへレンダリングする処理を自動的に行い、同時にクリッピングもシームレスに処理します。

このメソッドでは、画像オブジェクトの代わりにパスを渡すこともでき、ディスクから画像を自動的に読み込んで1ステップで使用できます。例:draw_image("test.jpg")

x_scale は、表示される画像を x 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は水平方向に反転されます。y_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

y_scale は、表示される画像を y 方向にどれだけスケーリングするかを制御します(float)。この値が負の場合、画像は垂直方向に反転されます。x_scale が指定されていない場合、アスペクト比を保つために x_scale と一致する点に注意してください。

roi は、描画するソース画像の関心領域の矩形タプル (x, y, w, h) です。これにより、ROI 内のピクセルだけを抽出してスケーリングし、描画先の画像に描画できます。

rgb_channel は、RGB565 画像(渡された場合)から抽出して描画先の画像にレンダリングする RGB チャンネル(0=R、G=1、B=2)です。例えば rgb_channel=1 を渡すと、ソース RGB565 画像の緑チャンネルが抽出され、描画先の画像にグレースケールで描画されます。

alpha は、ソース画像を描画先の画像にどれだけブレンドするかを制御します。値が 255 の場合は不透明なソース画像を描画し、255 未満の値の場合はソース画像と描画先画像のブレンドを生成します。0 の場合は描画先画像に変更がありません。

color_paletteNone でない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

alpha_paletteNone でない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像の alpha 値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel 抽出が使われている場合はその後に適用されます。

hintHint flags に列挙されたフラグの論理 OR です(ここでサポートされている image.BLACK_BACKGROUND を含む)。

transform は、画像に透視変換を行うために使用される 3x3 の ndarray です。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

draw_keypoints(keypoints: kp_desc | List[Tuple[int, int, int]], color: int | Tuple[int, int, int] | None = None, size: int = 10, thickness: int = 1, fill: bool = False) Image#

キーポイントオブジェクトのキーポイントを画像上に描画します。(x, y, rotation_angle_in_degrees) を含む3要素タプルのリストを渡すこともでき、このメソッドを再利用して、特定の方向を指す線を持つ円であるキーポイントグリフを描画できます。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

size は、キーポイントの大きさを制御します。

thickness は、線の太さをピクセル単位で制御します。

キーポイントを塗りつぶすには fill を True に設定して渡します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

flood_fill(x: int, y: int, seed_threshold: float = 0.05, floating_threshold: float = 0.05, color: int | Tuple[int, int, int] | None = None, invert: bool = False, clear_background: bool = False, mask: Image | None = None) Image#

位置 x, y から始まる画像の領域をフラッドフィルします。x, y を個別に渡すこともタプル (x, y) として渡すこともできます。

seed_threshold は、塗りつぶし領域内の任意のピクセルが、最初の開始ピクセルからどれだけ異なってよいかを制御します。

floating_threshold は、塗りつぶし領域内の任意のピクセルが、隣接するピクセルからどれだけ異なってよいかを制御します。

color は、グレースケールまたは RGB565 画像用の RGB888 タプルです。デフォルトは白です。ただし、グレースケール画像の基となるピクセル値 (0-255) や RGB565 画像の RGB565 値を渡すこともできます。

フラッドフィルで接続された領域の外側にあるすべてを再着色するには invert を True として渡します。

フラッドフィルが再着色しなかった残りのピクセルをゼロにするには clear_background を True として渡します。

mask は、操作のためのピクセルレベルのマスクとして使用する別の画像です。マスクは黒または白のピクセルのみを持つ画像で、操作対象の画像と同じサイズである必要があります。フラッドフィル時にはマスクに設定されたピクセルのみが評価されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

draw_event_histogram(array: ndarray, clear: bool = True, brightness: int = 128, contrast: int = 16) Image#

イベント ndarray(csi.IOCTL_GENX320_READ_EVENTS によって埋められたもの)を可視化のために Image 上にラスタライズします。画像バッファは 320x320 の GRAYSCALE 画像である必要があります。

csi.PIX_ON_EVENT 行について、そのイベントのピクセルに +contrast が加算されます。各 csi.PIX_OFF_EVENT 行についてはピクセルに -contrast が加算されます。トリガーイベントは無視されます。ピクセル値は 0-255 にクランプされます。

clear が True の場合、描画前に画像バッファを brightness にリセットします。これにより、すべてのフレームが新しいイベントのみのレンダリングになります。複数の呼び出しにわたってイベントを蓄積するには False に設定します(長時間露光のモーショントレイルに便利です)。

brightness は、clear が True のときにバッファがリセットされる中間グレーのベースラインを制御します。デフォルトの 128 は、ON イベントを明るい端に、OFF イベントを暗い端に、等しいヘッドルームで配置します。

contrast は、各イベントがそのピクセルをどれだけシフトさせるかを制御します。値が高いほどイベントが目立ちますが、多くのイベントが同じピクセルに集まると素早く飽和してしまう代償があります。

マスキングメソッド#

mask_rectangle(x: int, y: int, w: int, h: int) Image#

画像の矩形部分をゼロにします。引数が指定されない場合、このメソッドは画像の中央をゼロにします。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

mask_circle(x: int, y: int, radius: int) Image#

画像の円形部分をゼロにします。引数が指定されない場合、このメソッドは画像の中央をゼロにします。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

mask_ellipse(x: int, y: int, radius_x: int, radius_y: int, rotation_angle_in_degrees: int) Image#

画像の楕円形部分をゼロにします。引数が指定されない場合、このメソッドは画像の中央をゼロにします。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

バイナリメソッド#

binary(thresholds: List[Tuple[int, int]], invert: bool = False, zero: bool = False, mask: Image | None = None, to_bitmap: bool = False, copy: bool = False) Image#

各ピクセルが thresholds 内のいずれかのしきい値タプルの内側にあるかどうかに応じて、画像内のすべてのピクセルを黒または白に設定します。

thresholds は、グレースケール画像の場合は (lo, hi) タプルのリスト、RGB565 画像の場合は (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) タプルのリストです。min/max 値が入れ替わっている場合は自動的に修正され、欠けている要素はデフォルトで最大範囲になります。

invert はしきい値マッチングを反転します。

zero が True の場合、しきい値に該当するピクセルをゼロにし、それ以外はそのまま残します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

to_bitmap が True の場合、画像データを1ピクセルあたり1ビットのビットマップに変換します。非常に小さな画像では copy=True が必要になる場合があります。

copy が True の場合、ソース画像を変更する代わりにヒープ上に新しい画像を返します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

invert() Image#

画像内のすべてのピクセル値を反転します(8ビットチャンネルでは各ピクセルが 255 - pixel になります)。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

b_and(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 AND 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

b_nand(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 NAND 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

b_or(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 OR 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

b_nor(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 NOR 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

b_xor(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 XOR 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

b_xnor(image: Image, mask: Image | None = None) Image#

この画像と別の画像を論理 XNOR 演算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

ISP メソッド#

awb(max: bool = False) Image#

グレーワールドアルゴリズムを使用して、画像に対して自動ホワイトバランスを実行します。RAW Bayer または RGB565 画像で動作します。バイナリ/グレースケール画像には効果がありません。

max が True の場合、代わりにホワイトパッチアルゴリズムを使用します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や yuv 画像ではサポートされていません。

ccm(matrix: List[List[float]]) Image#

渡された浮動小数点のカラー補正行列を画像と乗算します。行列は 3x3 または 3x4(オフセット列付き)で、ネストされたリストまたはフラットなリストの形式で指定できます:

[[rr, rg, rb], [gr, gg, gb], [br, bg, bb]]
[[rr, rg, rb, ro], [gr, gg, gb, go], [br, bg, bb, bo]]
[rr, rg, rb, ro, gr, gg, gb, go, br, bg, bb, bo]

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

gamma(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image#

画像のガンマ、コントラスト、明るさを調整します。

gamma は、正規化の後に pow(pixel, 1/gamma) を適用します。1.0 より大きい値は明るくし、1.0 より小さい値は暗くします。

contrast は、正規化の後に pixel * contrast を適用します。

brightness は、正規化の後に pixel + brightness を適用します。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

gamma_corr(gamma: float = 1.0, contrast: float = 1.0, brightness: float = 0.0) Image#

Image.gamma のエイリアスです。

算術メソッド#

negate() Image#

Image.invert のエイリアスです。

replace(image: Image | None = None, **kwargs) Image#

Image.draw_image() のエイリアスです。標準の draw_image キーワード引数を使用して、この画像を image で置き換えます(image が省略された場合はこの画像をインプレースで変換します)。transform 引数は、透視変換を記述する 3x3 の ndarray です(ULAB が有効な OpenMV カメラでのみサポートされます)。

assign(image: Image | None = None, **kwargs) Image#

Image.replace() のエイリアスです。

set(image: Image | None = None, **kwargs) Image#

Image.replace() のエイリアスです。

add(image: Image, mask: Image | None = None) Image#

画像をこの画像にピクセル単位で加算します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

sub(image: Image, mask: Image | None = None) Image#

image をこの画像からピクセル単位で減算します(self - image)。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

このメソッドは、Image.draw_image() のキーワード引数一式(xyx_scaley_scaleroirgb_channelalphacolor_palettealpha_palettehinttransform)も受け付けます。

圧縮画像や Bayer 画像ではサポートされていません。

rsub(image: Image, mask: Image | None = None) Image#

逆減算:この画像を image - self でピクセル単位に置き換えます。それ以外は Image.sub() と同一です。

min(image: Image, mask: Image | None = None) Image#

2つの画像のピクセル単位の最小値画像を返します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

max(image: Image, mask: Image | None = None) Image#

2つの画像のピクセル単位の最大値画像を返します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

difference(image: Image, mask: Image | None = None) Image#

2つの画像間の絶対差分画像(例:||a-b||)を返します。

image は、画像オブジェクト、非圧縮画像ファイル(bmp/pgm/ppm)へのパス、またはスカラー値(RGB888 タプルまたは基となるピクセル値)のいずれかです。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

blend(image: Image, x: int = 0, y: int = 0, alpha: int = 128, mask: Image | None = None, **kwargs) Image#

Image.draw_image() のエイリアスです。image をこの画像にアルファブレンドします。alpha は 0-256 の整数で、256 に近いほどソース画像が優先されます。すべての Image.draw_image() のキーワード引数を受け付けます。

histeq(adaptive: bool = False, clip_limit: float = -1, mask: Image | None = None) Image#

コントラストと明るさを正規化するために、画像に対してヒストグラム平坦化を実行します。

adaptive が True の場合、適応ヒストグラム平坦化を実行します(より低速ですが一般的により良い結果になります)。

clip_limit は、適応版でのコントラストを制限します(10 のような小さな値が良好な CLAHE 結果を生成します)。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

フィルタリングメソッド#

erode(size: int, threshold: int | None = None, mask: Image | None = None) Image#

セグメント化された領域のエッジからピクセルを除去します。((size*2)+1)x((size*2)+1) のカーネルを画像全体に畳み込み、threshold 個を超える隣接ピクセルがクリアされている場合に中心ピクセルをクリアします(threshold が None の場合は標準的な収縮として機能します)。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

dilate(size: int, threshold: int | None = None, mask: Image | None = None) Image#

セグメント化された領域のエッジにピクセルを追加します。((size*2)+1)x((size*2)+1) のカーネルを画像全体に畳み込み、threshold 個を超える隣接ピクセルが設定されている場合に中心ピクセルを設定します(threshold が None の場合は標準的な膨張として機能します)。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

open(size: int, threshold: int | None = None, mask: Image | None = None) Image#

収縮の後に膨張を実行します。Image.erode()Image.dilate() を参照してください。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

圧縮画像や bayer/yuv 画像ではサポートされていません。

close(size: int, threshold: int | None = None, mask: Image | None = None) Image#

膨張の後に収縮を実行します。Image.dilate()Image.erode() を参照してください。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

圧縮画像や bayer/yuv 画像ではサポートされていません。

top_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image#

画像と Image.open() した画像との画像差分を返します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

圧縮画像や bayer/yuv 画像ではサポートされていません。

black_hat(size: int, threshold: int | None = None, mask: Image | None = None) Image#

画像と Image.close() した画像との画像差分を返します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

圧縮画像や bayer/yuv 画像ではサポートされていません。

mean(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

ボックスフィルタを使用した標準的な平均ぼかしフィルタです。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

median(size: int, percentile: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像に対してパーセンタイルフィルタを実行します(デフォルトはメディアン)。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

percentile は、各カーネルから選択するパーセンタイルです(0 = 最小、0.5 = メディアン、1.0 = 最大)。デフォルトは 0.5 です。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

mode(size: int, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

各ピクセルをその隣接ピクセルの最頻値で置き換えます。非線形操作のため、RGB 画像のエッジでアーティファクトが生じる場合があります。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

midpoint(size: int, bias: float | None = 0.5, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像に対してミッドポイントフィルタを実行します。このフィルタは、画像内の各ピクセル近傍のミッドポイント ((max-min)/2) を見つけます。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

bias は min/max の混合を制御します。0 は min フィルタリングのみ、1.0 は max フィルタリングのみです。bias を使うことで画像を min/max フィルタリングできます。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

morph(size: int, kernel: list, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像を任意のフィルタカーネルで畳み込みます。

size はカーネルサイズを制御し、((size*2)+1)x((size*2)+1) 要素である必要があります。

kernel は畳み込みに使用するカーネルで、((size*2)+1)*((size*2)+1) 要素のフラットな1次元リスト/タプル、または ((size*2)+1) 個の ((size*2)+1) 要素の行を持つ2次元リスト/タプルとして指定します。

mul は乗法的なコントラストスケールです(デフォルト 1.0)。

add は加法的な明るさのオフセットです(デフォルト 0.0)。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

gaussian(size: int, unsharp: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像を平滑化ガウシアンカーネルで畳み込みます。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

unsharp が True の場合、単純なガウシアンの代わりにアンシャープマスク操作(エッジをシャープにする)を実行します。

mul は乗法的なコントラストスケールです(デフォルト 1.0)。

add は加法的な明るさのオフセットです(デフォルト 0.0)。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

laplacian(size: int, sharpen: bool | None = False, mul: float | None = 1.0, add: float | None = 0.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像をエッジ検出ラプラシアンカーネルで畳み込みます。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

sharpen が True の場合、しきい値処理されていない生のエッジ応答を出力する代わりに、画像をシャープにします。

mul は乗法的なコントラストスケールです(デフォルト 1.0)。

add は加法的な明るさのオフセットです(デフォルト 0.0)。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

bilateral(size: int, color_sigma: float | None = 0.1, space_sigma: float | None = 1.0, threshold: bool | None = False, offset: int | None = 0, invert: bool | None = False, mask: Image | None = None) Image#

画像をバイラテラルフィルタ(エッジ保存平滑化)で畳み込みます。

size はカーネルサイズです。1(3x3 カーネル)、2(5x5 カーネル)などを使用します。

color_sigma はカラーマッチングの許容度を制御します。値が大きいほどより多くのカラーぼかしが生じます。

space_sigma は空間的なぼかしを制御します。値が大きいほどより多くのピクセルぼかしが生じます。

threshold が True の場合、フィルタ出力を適応的にしきい値処理してバイナリ画像にします。offset は二値化をシフトします(負の値はより多くのピクセルを白に、正の値はより少なくします)。invert はバイナリ出力を反転します。

mask は、ピクセルレベルのマスクとして使用されるバイナリ画像です。マスクに設定されたピクセルのみが変更されます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や bayer/yuv 画像ではサポートされていません。

幾何メソッド#

linpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image#

画像をデカルト座標から線形極座標へ再投影します。

逆方向に再投影するには reverse=True を設定します。

xy は、画像ピクセルでの変換の中心座標を指定します。xNone(デフォルト)の場合、画像の幅の半分に設定されます。同様に y はデフォルトで画像の高さの半分になります。

線形極座標再投影は、画像の回転を x 方向の平行移動に変換します。

圧縮画像や Bayer 画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image#

画像をデカルト座標から対数極座標へ再投影します。

逆方向に再投影するには reverse=True を設定します。

xy は、画像ピクセルでの変換の中心座標を指定します。xNone(デフォルト)の場合、画像の幅の半分に設定されます。同様に y はデフォルトで画像の高さの半分になります。

対数極座標再投影は、画像の回転を x 方向の平行移動に、スケーリング/ズームを y 方向の平行移動に変換します。

圧縮画像や Bayer 画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

lens_corr(strength: float = 1.8, zoom: float = 1.0, x_corr: float = 0.0, y_corr: float = 0.0) Image#

レンズの歪みによる魚眼効果を補正するため、レンズ補正を実行します。

strength は、画像の魚眼効果をどれだけ補正するかを定義する float です。まずデフォルトの 1.8 を試し、その後画像が良く見えるまでそこから増減させてください。

zoom は、画像をどれだけズームインするかの量です。デフォルトは 1.0 です。

x_corr は中心からの浮動小数点のピクセルオフセットです。負または正の値を指定できます。

y_corr は中心からの浮動小数点のピクセルオフセットです。負または正の値を指定できます。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

rotation_corr(x_rotation: float = 0.0, y_rotation: float = 0.0, z_rotation: float = 0.0, x_translation: float = 0.0, y_translation: float = 0.0, zoom: float = 1.0, fov: float = 60.0, corners: List[Tuple[int, int]] | None = None) Image#

フレームバッファの3D回転を行うことで、画像の透視に関する問題を補正します。

x_rotation は、フレームバッファ内の画像を x 軸周りに回転させる度数です(すなわち、これは画像を上下に回転させます)。

y_rotation は、フレームバッファ内の画像を y 軸周りに回転させる度数です(すなわち、これは画像を左右に回転させます)。

z_rotation は、フレームバッファ内の画像を z 軸周りに回転させる度数です(すなわち、これは画像をその場で回転させます)。

x_translation は、回転後に画像を左右に移動させる単位数です。この平行移動は3D空間で適用されるため、単位はピクセルではありません...

y_translation は、回転後に画像を上下に移動させる単位数です。この平行移動は3D空間で適用されるため、単位はピクセルではありません...

zoom は、画像をどれだけズームインするかの量です。デフォルトは 1.0 です。

fov は、内部の 2D->3D 投影に使用される視野角です。fov が 0 に近づくと画像は無限遠に配置され、180 に近づくと画像はビューポート内に配置されます。

corners は、3D回転を適用する前に、コーナーを (0, 0)、(image_width-1, 0)、(image_width-1, image_height-1)、(0, image_height-1) にマッピングする4点ホモグラフィを構築するために使用される、4つの (x, y) タプルのリストです。鳥瞰図変換に便利です。

. 記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。

圧縮画像や Bayer 画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

取得メソッド#

get_similarity(image: Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: int | Image | None = None, alpha_palette: Image | None = None, hint: int = 0, transform: ndarray | None = None, dssim: bool = False) Similarity#

構造的類似性指標(SSIM)を使用して2つの画像間の類似性を計算します。SSIM は -1(正反対)から 1(同一)の範囲です。image.similarity オブジェクトを返します。

image は比較対象の画像です(画像オブジェクトまたはパス文字列、例:"test.jpg")。

xyx_scaley_scaleroirgb_channelalphacolor_palettealpha_palettehinttransform は、Image.draw_image() と同じ値を受け付けます。

dssim が True の場合、代わりに構造的非類似性指標(DSSIM)を返します。これは 0 が同一、1 が完全に異なることを意味します。

get_histogram(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) histogram#

roi についてすべてのカラーチャンネルの正規化ヒストグラムを計算し、image.histogram オブジェクトを返します。Image.get_hist() または Image.histogram() としても利用できます。

thresholds は、グレースケール画像の場合は (lo, hi) タプルのリスト、RGB565 画像の場合は (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) タプルのリストです。指定された場合、ヒストグラムはしきい値内のピクセルのみについて計算されます。

invert はしきい値マッチングを反転します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

bins(グレースケール)または l_bins/a_bins/b_bins(RGB565)は、チャンネルごとのヒストグラムビン数を設定します。2 より大きい必要があります。デフォルトはチャンネルごとの最大ビン数です。

difference に画像オブジェクトを設定すると、追加のバッファなしで、現在の画像とその画像との差分に対して操作できます。

圧縮画像や Bayer 画像ではサポートされていません。

get_statistics(thresholds: List[Tuple[int, int]] | None = None, invert: bool = False, roi: Tuple[int, int, int, int] | None = None, bins: int = -1, l_bins: int = -1, a_bins: int = -1, b_bins: int = -1, difference: Image | None = None) statistics#

roi についてすべてのカラーチャンネルの平均、中央値、最頻値、標準偏差、最小、最大、第1四分位数、第3四分位数を計算し、image.statistics オブジェクトを返します。Image.get_stats() または Image.statistics() としても利用できます。

thresholds は、グレースケール画像の場合は (lo, hi) タプルのリスト、RGB565 画像の場合は (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) タプルのリストです。指定された場合、統計はしきい値内のピクセルのみについて計算されます。

invert はしきい値マッチングを反転します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

bins(グレースケール)または l_bins/a_bins/b_bins(RGB565)は、チャンネルごとのヒストグラムビン数を設定します。2 より大きい必要があります。デフォルトはチャンネルごとの最大ビン数です。

difference に画像オブジェクトを設定すると、追加のバッファなしで、現在の画像とその画像との差分に対して操作できます。

圧縮画像や Bayer 画像ではサポートされていません。

get_regression(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, target_size: Tuple[int, int] = (80, 60)) line#

画像内のしきい値処理されたすべてのピクセルに対して線形回帰(Theil-Sen)を計算します。image.line オブジェクトを返すか、線が見つからなかった場合は None を返します。

thresholds は、グレースケール画像の場合は (lo, hi) タプルのリスト、RGB565 画像の場合は (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) タプルのリストです。

invert はしきい値マッチングを反転します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

x_stridey_stride は、画像を評価する際にスキップするピクセル数を制御します。

area_threshold は最小バウンディングボックス面積です。これより小さい結果は None を返します。

pixels_threshold は最小しきい値処理ピクセル数です。これより小さい結果は None を返します。

target_size(w, h) タプルです。O(N^2) アルゴリズムを実行する前に、ROI はこのサイズ内に収まるように面積スケーリングで縮小されます。デフォルトは (80, 60) です。

圧縮画像や Bayer 画像ではサポートされていません。

検出メソッド#

find_blobs(thresholds: List[Tuple[int, int]], invert: bool = False, roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, area_threshold: int = 10, pixels_threshold: int = 10, merge: bool = False, margin: int = 0, threshold_cb: Callable | None = None, merge_cb: Callable | None = None, x_hist_bins_max: int = 0, y_hist_bins_max: int = 0) List[blob]#

画像内のすべてのブロブ(しきい値テストを通過する連結ピクセル領域)を見つけ、image.blob オブジェクトのリストを返します。

thresholds は、グレースケール画像の場合は (lo, hi) タプルのリスト、RGB565 画像の場合は (l_lo, l_hi, a_lo, a_hi, b_lo, b_hi) タプル(LAB チャンネル)のリストです。最大32個のタプルを渡せます。min/max 値が入れ替わっている場合は自動的に修正され、欠けている要素はデフォルトで最大範囲になります。

invert はしきい値マッチングを反転します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

x_stridey_stride は、ブロブを探索する際にスキップするピクセル数を制御します。ブロブが大きいことがわかっている場合は増やしてください。

area_threshold は最小バウンディングボックス面積です。これより小さいブロブはフィルタされます。

pixels_threshold は最小しきい値処理ピクセル数です。これより小さいブロブはフィルタされます。

merge が True の場合、バウンディング矩形が交差するブロブをマージします。margin は交差判定に使用するバウンディング矩形を拡大/縮小します。マージされたブロブは、それぞれの code ビットベクトルを OR で結合します(しきい値ごとに1ビット)。

threshold_cb は、しきい値処理後にブロブごとに呼び出されます。保持するには True、フィルタするには False を返します。

merge_cb は、マージされようとしているブロブのペアごとに呼び出されます。マージを許可するには True、防ぐには False を返します。

x_hist_bins_max がゼロでない場合、この数のビンを使用した x_histogram 投影で各ブロブを埋めます。

y_hist_bins_max がゼロでない場合、この数のビンを使用した y_histogram 投影で各ブロブを埋めます。

圧縮画像や Bayer 画像ではサポートされていません。

find_lines(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 1000, theta_margin: int = 25, rho_margin: int = 25) List[line]#

ハフ変換を使用して画像内のすべての無限直線を見つけます。image.line オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

x_stridey_stride は、ハフ変換中にスキップするピクセル数を制御します。

threshold は最小の線の大きさ(線に沿ったソーベル強度の合計)です。これを下回る線はフィルタアウトされます。

theta_marginrho_margin はマージを制御します。これらのしきい値内にある線はマージされます。

圧縮画像や Bayer 画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

find_line_segments(roi: Tuple[int, int, int, int] | None = None, merge_distance: int = 0, max_theta_difference: int = 15) List[line]#

画像内の線分を見つけます。image.line オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

merge_distance は、2つの線分がマージされるための最大ピクセル間隔です。

max_theta_difference は、線分間でマージされるための最大シータ差(度単位)です。

このメソッドは OpenMV Cam M4 では利用できません。

find_circles(roi: Tuple[int, int, int, int] | None = None, x_stride: int = 2, y_stride: int = 1, threshold: int = 2000, x_margin: int = 10, y_margin: int = 10, r_margin: int = 10, r_min: int = 2, r_max: int | None = None, r_step: int = 2) List[circle]#

ハフ変換を使用して画像内の円を見つけます。image.circle オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

x_stridey_stride は、ハフ変換中にスキップするピクセル数を制御します。

threshold は最小の円の大きさ(円に沿ったソーベル強度の合計)です。これを下回る円はフィルタアウトされます。

x_marginy_marginr_margin はマージを制御します。これらのしきい値内にある円はマージされます。

r_min は最小の円の半径です。デフォルトは 2 です。

r_max は最大の円の半径です。デフォルトは min(roi.w/2, roi.h/2) です。

r_step は半径のステップサイズです。デフォルトは 2 です。

このメソッドは OpenMV Cam M4 では利用できません。

find_rects(roi: Tuple[int, int, int, int] | None = None, threshold: int = 1000) List[rect]#

apriltag のクワッド検出アルゴリズムを使用して画像内の矩形を見つけます。image.rect オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

threshold は最小のエッジの大きさ(矩形のエッジに沿ったソーベル強度の合計)です。これを下回る矩形はフィルタアウトされます。

このメソッドは OpenMV Cam M4 では利用できません。

find_qrcodes(roi: Tuple[int, int, int, int] | None = None) List[qrcode]#

roi 内のすべての qrcode を見つけ、image.qrcode オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

このメソッドは OpenMV Cam M4 では利用できません。

find_apriltags(roi: Tuple[int, int, int, int] | None = None, families: int = TAG36H11, fx: float | None = None, fy: float | None = None, cx: float | None = None, cy: float | None = None) List[apriltag]#

roi 内のすべての apriltag を見つけ、image.apriltag オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

families はデコードするタグファミリーのビットマスクです。以下の論理 OR です。

デフォルトは image.TAG36H11 です。検出時間は有効なファミリーの数に比例します。

fxfy は、カメラの X および Y 方向の焦点距離(ピクセル単位)です。

cxcy は画像の中心で、通常は image.width()/2image.height()/2 です。

圧縮画像ではサポートされていません。

このメソッドは OpenMV Cam M4 では利用できません。

find_datamatrices(roi: Tuple[int, int, int, int] | None = None, effort: int = 200) List[datamatrix]#

roi 内のすべての datamatrix を見つけ、image.datamatrix オブジェクトのリストを返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

effort は、データマトリックスのマッチを見つけるのにどれだけの時間を費やすかを制御します。値が高いほど検出が向上しますが、フレームレートが犠牲になります。約160を下回る値は検出に失敗し、約240を上回る値は効果が逓減します。デフォルトは 200 です。

このメソッドは OpenMV Cam M4 では利用できません。

find_barcodes(roi: Tuple[int, int, int, int] | None = None) List[barcode]#

roi 内のすべての1Dバーコードを見つけ、image.barcode オブジェクトのリストを返します。水平方向と垂直方向の両方をスキャンします。

サポートされるバーコードタイプ:image.EAN2image.EAN5image.EAN8image.UPCEimage.ISBN10image.UPCAimage.EAN13image.ISBN13image.I25image.DATABAR(RSS-14)、image.DATABAR_EXP(RSS-Expanded)、image.CODABARimage.CODE39image.PDF417image.CODE93image.CODE128

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

このメソッドは OpenMV Cam M4 では利用できません。

find_displacement(template: Image, roi: Tuple[int, int, int, int] | None = None, template_roi: Tuple[int, int, int, int] | None = None, logpolar: bool = False, fix_rotation_scale: bool = False) displacement#

位相相関を使用して、この画像の template からの平行移動オフセットを見つけます。image.displacement オブジェクトを返します。

roi は関心領域の矩形 (x, y, w, h) です。デフォルトは画像矩形です。

template_roi はテンプレートの関心領域です。デフォルトはテンプレート画像矩形です。roitemplate_roi は同じ幅と高さを持つ必要があります。

logpolar が True の場合、x/y 平行移動の代わりに回転/スケール変化を返します。

fix_rotation_scale が True の場合、回転とスケールを整合させた後に変位を計算します(logpolar=False のときのみ意味があります)。

注釈

このメソッドは2のべき乗の画像サイズ(例:sensor.B64X64)で使用してください。

圧縮画像や bayer 画像ではサポートされていません。OpenMV Cam M4 では利用できません。

find_template(template: Image, threshold: float, roi: Tuple[int, int, int, int] | None = None, step: int = 2, search: int = SEARCH_EX) Tuple[int, int, int, int] | None#

正規化相互相関を使用して、template がマッチする画像内の最初の位置を見つけようとします。バウンディングボックスタプル (x, y, w, h)、または None を返します。

template は、この画像と照合するグレースケール画像です。

threshold は値 (0.0-1.0) です。値が高いほど誤検出や検出が減り、値が低いほどその逆になります。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

step は、探索中にスキップするピクセル数です(image.SEARCH_EX モードでのみ使用されます)。

searchimage.SEARCH_DS(より高速なダイヤモンド探索)または image.SEARCH_EX(網羅的探索)です。

グレースケール画像でのみ動作します。

find_features(cascade: Cascade, threshold: float = 0.5, scale: float = 1.5, roi: Tuple[int, int, int, int] | None = None) List[Tuple[int, int, int, int]]#

渡された Haar カスケードにマッチする領域を画像内で探索し、バウンディングボックスタプル (x, y, w, h) のリストを返します。特徴が見つからなかった場合は空のリストを返します。

cascade は Haar カスケードオブジェクトです(image.HaarCascade() を参照)。

threshold (0.0-1.0)。値が低いほど検出率と誤検出率が上がります。

scale は 1.0 より大きい必要があります。値が高いほど高速に動作しますが、マッチの精度は低下します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

find_eye(roi: Tuple[int, int, int, int]) Tuple[int, int]#

目の周りの関心領域 (x, y, w, h) タプル内で瞳孔を探索します。瞳孔の (x, y) 位置、または見つからなかった場合は (0, 0) を返します。

roi は関心領域の矩形タプル (x, y, w, h) です。

グレースケール画像でのみ動作します。

find_lbp(roi: Tuple[int, int, int, int]) lbp_descriptor#

関心領域から LBP(local-binary-patterns)キーポイントを抽出します。2つのディスクリプタを比較するには image.match_descriptor() を使用してください。

roi は関心領域の矩形タプル (x, y, w, h) です。

グレースケール画像でのみ動作します。

find_keypoints(roi: Tuple[int, int, int, int] | None = None, threshold: int = 20, normalized: bool = False, scale_factor: float = 1.5, max_keypoints: int = 100, corner_detector: int = CORNER_AGAST) kp_descriptor | None#

関心領域から ORB キーポイントを抽出します。2つのディスクリプタを比較するには image.match_descriptor() を使用してください。キーポイントが見つからなかった場合は None を返します。

roi は関心領域の矩形タプル (x, y, w, h) です。デフォルトは画像矩形です。

threshold (0-255) は抽出されるコーナーの数を制御します。しきい値が低いほど多くのコーナーが生成されます。AGAST には約20、FAST には約60-80を使用してください。

normalized が True の場合、マルチ解像度キーポイント抽出を無効にします。

scale_factor は 1.0 より大きい必要があります。値が高いほど高速に動作しますが、マッチの精度は低下します。

max_keypoints は保持するキーポイントの最大数です。

corner_detectorimage.CORNER_FAST または image.CORNER_AGAST です。

グレースケール画像でのみ動作します。

find_edges(edge_type: int, threshold: Tuple[int, int] = (100, 200)) Image#

画像を白黒に変換し、エッジのみを白いピクセルとして残します。

  • image.EDGE_SIMPLE - 単純なしきい値処理されたハイパスフィルタアルゴリズムです。

  • image.EDGE_CANNY - Canny エッジ検出アルゴリズムです。

threshold は、低しきい値と高しきい値を含む2要素タプルです。これらの値を調整することでエッジの品質を制御できます。デフォルトは (100, 200) です。

グレースケール画像でのみ動作します。

find_hog(roi: Tuple[int, int, int, int] | None = None, size: int = 8) Image#

ROI 内のピクセルを HOG(histogram of orientated gradients)の線で置き換えます。

roi は関心領域の矩形タプル (x, y, w, h) です。指定されない場合は画像矩形に等しくなります。roi 内のピクセルのみが操作されます。

グレースケール画像でのみ動作します。

このメソッドは OpenMV Cam M4 では利用できません。

stereo_disparity(reversed: bool = False, max_disparity: int = 64, threshold: int = 64) Image#

2つの並んだカメラセンサーの出力を含む横幅2倍のグレースケール画像を受け取り、片方を立体視差画像(各ピクセルが深度を表す)で置き換えます。例えば、320x240 のカメラ2台の場合は 640x240 の画像を渡します。

reversed デフォルトでは左の画像が右と比較され、右の画像が置き換えられます。右->左 で比較して左の画像を置き換えるには True に設定します。

max_disparity は、絶対差分の合計を使用してマッチするピクセルブロックを探索する最大距離 (1-255) です。値が大きいほど指数関数的に時間がかかりますが、より高品質な出力を生成します。

threshold 2つのブロック間の絶対差分の合計がこのしきい値以下である場合、それらはマッチしているとみなされます。

画像に対して選択的探索を実行し、オブジェクト候補のバウンディングボックスタプル (x, y, w, h) のリストを返します。

threshold はセグメンテーションのしきい値です。値が高いほど、より少なく/より大きな領域が生成されます。

size はマージ後の最小領域サイズです。

a1a2a3 は、領域をマージする際に使用される色/テクスチャ/サイズの類似度の重みです。