1. Produk
  2.   Imej
  3.   C++
  4.   libvips
 
  

Pustaka Pemprosesan Imej yang Lebih Cepat Sumber Terbuka untuk  C++

Cipta, Manipulasi, Lukis, Bahagi, Salin & Tukar Format Imej Popular; Gunakan penapis, bahagikan dua imej, grid imej melalui Perpustakaan C++ Percuma.

Libvips ialah perpustakaan pemprosesan imej termaju sumber terbuka yang menggunakan memori yang sangat rendah dan melakukan operasi yang sangat pantas. Perpustakaan boleh mengendalikan imej besar dengan mudah dan menyokong pelbagai format fail imej yang baik, seperti JPEG, TIFF, PNG, WebP, HEIC, FITS, Matlab, OpenEXR, PDF, SVG, HDR, PPM / PGM / PFM, CSV, GIF , Analyze, NIfTI, DeepZoom dan OpenSlide. Ia boleh memuatkan imej dengan mudah melalui ImageMagick atau GraphicsMagick, membolehkan ia berfungsi dengan format seperti DICOM.

Primitif libvips digunakan dengan bijak dan beberapa teknik penggunaan seperti penjanaan kod masa jalan membantu pemprosesan imej yang pantas. Berbanding dengan perpustakaan pemprosesan imej yang lain, libvips memerlukan sedikit RAM dan berjalan lebih pantas, terutamanya pada mesin dengan berbilang CPU. Ini disebabkan terutamanya oleh seni bina pintar yang digunakannya yang membahagikan aliran kerja imej secara automatik.

Perpustakaan menyediakan sokongan untuk pelbagai jenis angka, daripada int 8-bit mudah kepada 128-bit yang kompleks. Kebanyakan pustaka pemprosesan imej menggunakan operasi berulir tetapi libvips sebaliknya meletakkan benang ke dalam sistem IO imej dan memberikan salinan keseluruhan saluran paip imej kepada setiap benang untuk mengerjakannya. Gaya benang mendatar ini menggunakan lebih baik cache pemproses dan mengurangkan penguncian.

Pustaka libvips ialah perpustakaan pemprosesan imej yang menawarkan prestasi yang lebih baik daripada banyak perpustakaan lain. Perpustakaan telah menyediakan sokongan untuk beberapa ciri pemprosesan imej yang penting seperti melukis imej, membahagi dua imej, melukis bulatan pada imej, menyalin imej, melukis imej ke imej lain, melukis garisan pada imej, menghantar imej, cache imej, tambah dua imej, buat imej gaussian, baca titik dari imej, grid imej, simpan imej ke fail JPEG dan banyak lagi.

Previous Next

Bermula dengan libvips

Klon sumber terkini menggunakan arahan berikut.

Pasang libvips melalui arahan git

 git clone git://github.com/libvips/libvips.git 

Membina daripada git memerlukan lebih banyak pakej, anda memerlukan sekurang-kurangnya gtk-doc dan gobject-introspection.

Pasang pakej libvips melalui arahan git

 ./autogen.sh
make
sudo make install 

Paparan Imej yang Lebih Pantas melalui API C++

Pustaka libvips telah menyediakan fungsi untuk penciptaan dan manipulasi imej yang lebih pantas pada semua platform terkemuka. Beberapa perpustakaan pemprosesan imej terkemuka seperti perpustakaan ImageMagick dan GD sangat berkuasa dan menyediakan ciri lanjutan untuk bekerja dengan imej tetapi memerlukan sejumlah besar memori untuk memproses imej. Sebaliknya, libvips boleh melakukan hampir sama aktif seperti ImageMagick, tetapi lebih pantas dan dengan jejak memori yang agak kecil

Simpan Imej ke Format lain yang disokong

Pustaka libvips sumber terbuka telah menyediakan satu set operasi yang memuatkan dan menyimpan imej dalam pelbagai format. Perpustakaan ini telah menyertakan sokongan terbina dalam untuk menyimpan imej dalam format popular seperti TIFF, JPEG, PNG, Analyze, PPM, OpenEXR, CSV, Matlab, Radiance, RAW, FITS, WebP, SVG, PDF, GIF dan VIPS. VipsForeign boleh digunakan untuk memuatkan dan menyimpan imej dalam pelbagai format.

Baca dan tulis Imej ke Memori melalui 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 );
}

Saiz Semula Imej yang Lebih Pantas

Pustaka libvips sumber terbuka memberikan pembangun perisian kuasa untuk mengubah saiz imej dengan cepat di dalam apl mereka sendiri. Pertama, anda perlu memuatkan imej dari repositori imej dengan memberikan nama imej dan alamat lengkap. Selepas itu, anda boleh mengubah saiznya kepada lebar dan ketinggian yang ditetapkan mengikut keperluan anda. Selepas itu, anda boleh menyimpannya lokasi pilihan anda dengan saiz baharu.

Baca dan tulis Imej ke Memori melalui 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 );
}

Penapisan Imej melalui C++ API

Penapisan imej ialah ciri berharga yang digunakan dalam pelbagai pemprosesan imej dan aplikasi penglihatan komputer di seluruh dunia. Pustaka libvips menyediakan sokongan lengkap untuk penapisan Imej melalui arahan C++. Ciri seperti pelicinan, penajaman dan peningkatan tepi ialah beberapa contoh operasi pemprosesan imej yang dilaksanakan dengan penapisan. Perpustakaan juga menyertakan penapis PNG seperti perbezaan ke kiri, purata kiri dan atas, adaptif, pilih peramal jiran terbaik secara automatik dan tiada penapisan. Ia juga termasuk penapis import yang boleh dimuatkan dengan libMagick dan dengan OpenSlide.

 Melayu