class Image -- Image オブジェクト¶
Image は image モジュールの中核となるデータ型であり、すべての描画ルーチン、すべてのフィルタ、すべての幾何変換、そしてすべての特徴抽出ルーチンが操作対象とするメモリ上のピクセルバッファです。csi.CSI.snapshot() から出力されるすべてのフレームは Image であり、ディスクから読み込まれたフレーム、JPEG や PNG からデコードされたフレーム、numpy 形式の ndarray から確保されたフレーム、空の描画キャンバスとして構築されたフレームも同様です。
Image は width、height、pixformat という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 の場合、画像はヒープに確保される代わりにフレームバッファにコピーされます。argがndarrayの場合、これはndarrayから新しい画像オブジェクトを作成します。形状が(w, h)のndarrayオブジェクトはグレースケール画像として扱われ、(w, h, 3)は RGB565 画像として扱われます。現時点では float32 のndarraysのみがサポートされています。この方法で画像を作成する際にbuffer引数を渡すと、ヒープに領域を確保する代わりにそれを画像データの格納に使用します。copy_to_fbが true の場合、画像はヒープに確保されたりbufferを使用したりする代わりに、フレームバッファにコピーされます。argがintの場合、それは新しい画像の幅とみなされ、新しい空の画像オブジェクトを作成するにはheight値とformat値が後に続く必要があります。formatにはimage.GRAYSCALEのような任意の画像 pixformat 値を指定できます。画像はすべてゼロで初期化されます。圧縮画像フォーマットの場合はbuffer値が期待される点に注意してください。bufferはこの方法で画像を作成する際の画像データのソースとみなされます。copy_to_fbと併用すると、bufferのデータがフレームバッファにコピーされます。JPEG のbytes()またはbytearray()オブジェクトから JPEG 画像を作成したい場合は、JPEG 用にwidth、height、image.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 の書き込み関数に渡すだけで自動的に送信できます。
基本メソッド¶
- format() int¶
グレースケール画像の場合は
image.GRAYSCALE、RGB565 画像の場合はimage.RGB565、Bayer パターン画像の場合はimage.BAYER、JPEG 画像の場合はimage.JPEGを返します。
- 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 を返します。xとyは個別に渡すこともタプルとして渡すこともできます。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の値に設定します。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。xとyは個別に渡すこともタプルとして渡すこともできます。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にはb、B、fを指定でき、それぞれ符号付き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はそれぞれb、B、fの整数値(例:ord())も受け付けます。bufferがNoneでない場合、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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。注釈
ビットマップ画像は、0 と 1 の2つのピクセル値のみを持つグレースケール画像のようなものです。さらに、ビットマップ画像は1ピクセルあたり1ビットのみを格納するようにパックされているため、非常に小さくなります。OpenMV 画像ライブラリでは、
sensor.GRAYSCALEとsensor.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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、image.PALETTE_DEPTH、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。qualityは jpeg 画像の圧縮品質を制御します。値は 0 から 100 の間で指定できます。subsamplingには以下を指定できます。image.JPEG_SUBSAMPLING_AUTO: 品質に基づいて画像に最適なサブサンプリングを使用します。image.JPEG_SUBSAMPLING_444: 4:4:4 サブサンプリングを使用します。image.JPEG_SUBSAMPLING_422: 4:2:2 サブサンプリングを使用します。image.JPEG_SUBSAMPLING_420: 4:2:0 サブサンプリングを使用します。
.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。qualityは jpeg 画像の圧縮品質を制御します。値は 0 から 100 の間で指定できます。subsamplingには以下を指定できます。image.JPEG_SUBSAMPLING_AUTO: 品質に基づいて画像に最適なサブサンプリングを使用します。image.JPEG_SUBSAMPLING_444: 4:4:4 サブサンプリングを使用します。image.JPEG_SUBSAMPLING_422: 4:2:2 サブサンプリングを使用します。image.JPEG_SUBSAMPLING_420: 4:2:0 サブサンプリングを使用します。
.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。注釈
Image.compressはImage.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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint flags に列挙されたフラグの論理 OR です(ここではサポートされていないimage.BLACK_BACKGROUNDを除く)。transformは、画像に透視変換を行うために使用される 3x3 のndarrayです。現時点では、これをハードウェアで実行できる GPU を搭載した OpenMV Cam N6 でのみサポートされています。copyが True の場合、元の画像をインプレースで変換する代わりに、変換された画像のディープコピーをヒープに作成します。copy_to_fbが True の場合、画像はフレームバッファに直接読み込まれます。copy_to_fbはcopyよりも優先されます。画像がすでにフレームバッファにある場合、これは特別な効果を持ちません。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。注釈
Image.scaleはImage.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)。.記法で別のメソッドを呼び出せるように、画像オブジェクトを返します。
描画メソッド¶
- 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_paletteがNoneでない場合、カラーパレット列挙値、または合計256ピクセルの RGB565 画像を指定でき、ソース画像が何であれそのグレースケール値に対するカラールックアップテーブルとして使用されます。これは、rgb_channel抽出が使われている場合はその後に適用されます。alpha_paletteがNoneでない場合、合計256ピクセルの GRAYSCALE 画像を指定でき、アルファパレットとして使用されます。これは描画されるソース画像のalpha値をピクセルレベルで変調し、グレースケール値に基づいてピクセルのアルファ値を精密に制御できるようにします。アルファルックアップテーブル内のピクセル値 255 は不透明で、255 未満になるにつれて 0 までより透明になります。これは、rgb_channel抽出が使われている場合はその後に適用されます。hintは Hint 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 画像ではサポートされていません。
バイナリメソッド¶
- 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 画像ではサポートされていません。
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 画像ではサポートされていません。
算術メソッド¶
- 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()のキーワード引数一式(x、y、x_scale、y_scale、roi、rgb_channel、alpha、color_palette、alpha_palette、hint、transform)も受け付けます。圧縮画像や 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を設定します。xとyは、画像ピクセルでの変換の中心座標を指定します。xがNone(デフォルト)の場合、画像の幅の半分に設定されます。同様にyはデフォルトで画像の高さの半分になります。線形極座標再投影は、画像の回転を x 方向の平行移動に変換します。
圧縮画像や Bayer 画像ではサポートされていません。
このメソッドは OpenMV Cam M4 では利用できません。
- logpolar(reverse: bool = False, *, x: int | None = None, y: int | None = None) Image¶
画像をデカルト座標から対数極座標へ再投影します。
逆方向に再投影するには
reverse=Trueを設定します。xとyは、画像ピクセルでの変換の中心座標を指定します。xがNone(デフォルト)の場合、画像の幅の半分に設定されます。同様に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")。x、y、x_scale、y_scale、roi、rgb_channel、alpha、color_palette、alpha_palette、hint、transformは、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_strideとy_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_strideとy_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_strideとy_strideは、ハフ変換中にスキップするピクセル数を制御します。thresholdは最小の線の大きさ(線に沿ったソーベル強度の合計)です。これを下回る線はフィルタアウトされます。theta_marginとrho_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_strideとy_strideは、ハフ変換中にスキップするピクセル数を制御します。thresholdは最小の円の大きさ(円に沿ったソーベル強度の合計)です。これを下回る円はフィルタアウトされます。x_margin、y_margin、r_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です。検出時間は有効なファミリーの数に比例します。fxとfyは、カメラの X および Y 方向の焦点距離(ピクセル単位)です。cxとcyは画像の中心で、通常はimage.width()/2とimage.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.EAN2、image.EAN5、image.EAN8、image.UPCE、image.ISBN10、image.UPCA、image.EAN13、image.ISBN13、image.I25、image.DATABAR(RSS-14)、image.DATABAR_EXP(RSS-Expanded)、image.CODABAR、image.CODE39、image.PDF417、image.CODE93、image.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はテンプレートの関心領域です。デフォルトはテンプレート画像矩形です。roiとtemplate_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モードでのみ使用されます)。searchはimage.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_detectorはimage.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) です。値が大きいほど指数関数的に時間がかかりますが、より高品質な出力を生成します。threshold2つのブロック間の絶対差分の合計がこのしきい値以下である場合、それらはマッチしているとみなされます。
- selective_search(threshold: int = 500, size: int = 20, a1: float = 1.0, a2: float = 1.0, a3: float = 1.0) List[Tuple[int, int, int, int]]¶
画像に対して選択的探索を実行し、オブジェクト候補のバウンディングボックスタプル (x, y, w, h) のリストを返します。
thresholdはセグメンテーションのしきい値です。値が高いほど、より少なく/より大きな領域が生成されます。sizeはマージ後の最小領域サイズです。a1、a2、a3は、領域をマージする際に使用される色/テクスチャ/サイズの類似度の重みです。