C++ 用のオープンソース高速画像処理ライブラリ
一般的な画像フォーマットの作成、操作、描画、分割、コピー、および変換。フィルタを適用し、2 つの画像を分割し、無料の C++ ライブラリを介して画像をグリッド化します。
libvips は、オープン ソースの高度な画像処理ライブラリであり、メモリ使用量が非常に少なく、操作が非常に高速です。このライブラリは大きな画像を簡単に処理でき、JPEG、TIFF、PNG、WebP、HEIC、FITS、Matlab、OpenEXR、PDF、SVG、HDR、PPM / PGM / PFM、CSV、GIF などの適切な範囲の画像ファイル形式をサポートしています。 、分析、NIfTI、DeepZoom、および OpenSlide。 ImageMagick または GraphicsMagick を介して画像を簡単にロードできるため、DICOM などのフォーマットで動作できます。
librisのプリミティブは、センシブルを適用し、ランタイムコード生成のようないくつかの使用技術は、画像の迅速な処理に役立ちます。 他の画像処理ライブラリと比較して、librisは少しAMを必要とし、特に複数のCapsを持つマシンで、より速く実行することが指摘されました。 主に、画像のワークフローを自動分割するインテリジェントなアーキテクチャのためです。
ライブラリは、シンプルな8ビットのintから複雑な128ビットまで、膨大な数の数値型をサポートしています。 ほとんどの画像処理ライブラリは、スレッドされた操作を使用しますが、他の手にあるlibrisは画像にネジを入れます システムでは、各スレッドに画像パイプライン全体をコピーして作業を行います。 この横のスレッド スタイルは、プロセッサのキャッシュをより良く使用し、ロックを削減します。
librisライブラリは、他の多くのライブラリよりも優れたパフォーマンスを提供する画像処理ライブラリです。 ライブラリは、画像の描画、画像の分割、イメージの円を描く、画像をコピーし、画像を別の画像に画像をペイントし、画像のラインを描画し、画像をキャッシュし、画像をキャッシュし、2つの画像を追加し、ロシアの画像を作る、画像からポイントを読み、画像をグリッド化し、画像をJPEGファイルに保存するなど、いくつかの重要な画像処理機能をサポートしました。
libvips を使い始める
次のコマンドを使用して、最新のソースを複製します。
gitコマンドでlibrisをインストールする
git clone git://github.com/libvips/libvips.git
git からビルドするにはさらにパッケージが必要です。少なくとも gtk-doc と gobject-introspection が必要です。
git コマンドで libvips パッケージをインストールする
./autogen.sh
make
sudo make install
C++ API による画像レンダリングの高速化
librisライブラリは、すべての主要なプラットフォームで画像の作成と操作を高速化するための機能を提供します。 ImageMagickとGtライブラリのような主要な画像処理ライブラリのいくつかは非常に強力であり、画像を扱うための高度な機能を提供しますが、画像を処理するための大量のメモリが必要です。 一方、 libris は、ほぼ同じ動作を ImageMagick ほど速く、比較的小さなメモリフットプリントで行うことができます。
画像を他のサポートされている形式に保存する
オープン ソースの libvips ライブラリには、さまざまな形式で画像を読み込んで保存する一連の操作が用意されています。ライブラリには、TIFF、JPEG、PNG、Analyze、PPM、OpenEXR、CSV、Matlab、Radiance、RAW、FITS、WebP、SVG、PDF、GIF、VIPS などの一般的な形式で画像を保存するための組み込みサポートが含まれています。 VipsForeign を使用して、さまざまな形式で画像を読み込んで保存できます。
読み書き 画像 へ メモリ ビア C++ API
int
main( int argc, char **argv )
{
gchar *buf;
gsize len;
int i;
if( VIPS_INIT( argv[0] ) )
vips_error_exit( NULL );
if( argc != 2 )
vips_error_exit( "usage: %s FILENAME", argv[0] );
if( !g_file_get_contents( argv[1], &buf, &len, NULL ) )
vips_error_exit( NULL );
for( i = 0; i < 10; i++ ) {
VipsImage *image;
void *new_buf;
size_t new_len;
printf( "loop %d ...\n", i );
if( !(image = vips_image_new_from_buffer( buf, len, "",
"access", VIPS_ACCESS_SEQUENTIAL,
NULL )) )
vips_error_exit( NULL );
if( vips_image_write_to_buffer( image,
".jpg", &new_buf, &new_len,
"Q", 95,
NULL ) )
vips_error_exit( NULL );
g_object_unref( image );
g_free( new_buf );
}
g_free( buf );
vips_shutdown();
return( 0 );
}
より高速な画像サイズ変更
オープン ソースの libvips ライブラリを使用すると、ソフトウェア開発者は、独自のアプリ内でその場で画像のサイズを変更できます。まず、イメージ名と完全なアドレスを指定して、イメージ リポジトリからイメージをロードする必要があります。その後、必要に応じて、指定した幅と高さにサイズを変更できます。その後、新しいサイズで選択した場所に保存できます。
読み書き 画像 へ メモリ ビア C++ API
int
vips_resize( VipsImage *in, VipsImage **out,
double scale, ... )
{
va_list ap;
int result;
va_start( ap, scale );
result = vips_call_split( "resize", ap, in, out, scale );
va_end( ap );
return( result );
}
C++ API による画像フィルタリング
画像フィルタリングは、世界中のさまざまな画像処理およびコンピューター ビジョン アプリケーションで使用されている貴重な機能です。 libvips ライブラリは、C++ コマンドによる画像フィルタリングの完全なサポートを提供します。スムージング、シャープ化、エッジ強調などの機能は、フィルタリングで実装された画像処理操作の例です。ライブラリには、左への差、左と上の平均、適応、最適な近隣予測子の自動選択、フィルタリングなしなどの PNG フィルターも含まれていました。また、libMagick および OpenSlide でロードできるインポート フィルターも含まれています。