Abstrak

Abstrak
Tujuan dari dokumen ini adalah untuk membantu pembaca memulai dengan Computer Vision Library Opencv di Linux System. OpenCCV adalah perpustakaan multi-platform, tetapi artikel ini hanya akan difokuskan pada OpenCV menggunakan sistem operasi Linux (walaupun, hanya pemasangan pustaka OpenCV dan kamera video khusus platform, semua contoh dalam artikel ini harus dikompilasi pada platform apa pun di mana di mana mana OpenCV diinstal dengan benar seperti Mac OS, MS Windows dan ETC.). Pembaca akan dipandu melalui panduan langkah demi langkah tentang cara menginstal dan menggunakan beberapa fungsi dasar perpustakaan OpenCV seperti menampilkan gambar, memutar video atau menggunakan kamera video untuk memproses aliran input video video.

Konvensi yang digunakan dalam artikel ini:

  • $ - Eksekusi pada baris perintah oleh pengguna yang tidak istimewa
  • # - Eksekusi pada baris perintah oleh superuser
  • Perintah aktual yang akan dieksekusi pada baris perintah atau kode program untuk dikompilasi
  • KELUARAN: output yang dihasilkan pada baris perintah dengan eksekusi perintah
  • CATATAN: Catatan Umum dan Informasi Tambahan

Perkenalan

Dengan kata sederhana, visi komputer adalah bidang ilmiah yang berupaya memberikan pemandangan kepada mesin. Bidang ilmiah ini telah berkembang pesat dalam beberapa tahun terakhir. Di antara para peneliti, pertumbuhan ini adalah karena banyak peningkatan algoritma penglihatan dan di antara para penghobi visi komputer, ini disebabkan oleh komponen perangkat keras yang lebih murah dan daya pemrosesan. Perpustakaan OpenCV memainkan peran besar di bidang visi komputer karena sangat membantu mengurangi biaya dan persiapan waktu riset visi komputer yang dibutuhkan oleh mahasiswa, penggemar dan profesional. OpenCV juga menyediakan fungsi yang sederhana untuk digunakan untuk menyelesaikan pekerjaan dengan cara yang sederhana, efektif dan elegan. OpenCV dimulai oleh Intel, dan kemudian diubah menjadi proyek open source yang sekarang tersedia di Sourceforge.bersih. Perpustakaan OpenCV memiliki ketersediaan multi-platform, dan sebagian ditulis dalam bahasa C ++ dan C. Terlepas dari kenyataan bahwa perpustakaan ini tersedia di banyak distribusi Linux dari repositori paket yang relevan, dalam artikel ini kami akan mencoba menginstal dan menggunakan perpustakaan OpenCV yang dikompilasi dari kode sumber yang diunduh dari SourceForge.Situs Web Net.

Alasan untuk menyusun kode sumber mungkin termasuk:

  • Versi baru 2.0.0 baru -baru ini dirilis dan lebih banyak fitur tersedia
  • beberapa bug diperbaiki yang mempengaruhi linux opencv 1.0.0 versi (seperti cvgetCaptureProperty () dll. )
  • lebih banyak dukungan tersedia untuk opencv 2.0.0 versi daripada untuk mantan 1.0.0 versi

Artikel ini akan dimulai dengan pemasangan OpenCV di Debian 5.0 (Lenny). Nanti seorang pembaca akan dipandu melalui sejumlah contoh tentang cara menggunakan OpenCV untuk menampilkan gambar, memutar video dan menggunakan kamera untuk menangkap aliran input video.

Instalasi

Bagian berikut akan menjelaskan proses instalasi Pustaka OpenCV dengan membangun binari dari kode sumber yang tersedia dari SourceForge.bersih. Prosedur instalasi yang ditunjukkan di sini diuji pada Debian 5.0 (lenny) dan ubuntu 9.10 (karma koala). Prosedur instalasi aktual harus serupa atau persis sama untuk sebagian besar distribusi Linux terlepas dari langkah pertama di mana dependensi paket diinstal dari repositori distribusi Debian dan Ubuntu yang relevan. Pada sistem Linux RPM Anda harus berkonsultasi dengan alat manajemen paket Red Hat Anda (RPM) untuk alternatif prasyarat OpenCV yang dijelaskan di bagian berikutnya.

Prasyarat

Pertama, yang perlu dilakukan adalah pemasangan prasyarat yang diperlukan yang diperlukan oleh Pustaka OpenCV. Daftar dependensi dapat sedikit dimodifikasi sesuai dengan kebutuhan Anda:

  • libavformat -dev - file pengembangan untuk libavformat pustaka format file ffmpeg
  • libgtk2.0 -Dev - File Pengembangan untuk Perpustakaan Antarmuka Pengguna GTK+ Grafis
  • PKG -Config - Kelola Bendera Kompil dan Tautan untuk Perpustakaan
  • libswscale -dev - file pengembangan untuk libswscale pustaka skala video ffmpeg
  • CMake-Sistem membuat lintas platform, open-source digunakan untuk kompilasi kode sumber
  • BZIP2-Kompresor file penyortiran blok berkualitas tinggi yang digunakan untuk mengekstrak file sumber opencv

Perintah Linux berikut akan secara otomatis mengambil dan menginstal semua paket yang diperlukan dan ketergantungannya:

# apt-get install libavformat-dev libgtk2.0-dev pkg-config cmake libswscale-dev bzip2

Mendapatkan Kode Sumber OpenCV

Versi Perpustakaan OpenCV saat ini pada saat penulisan adalah versi 2.0.0. Anda dapat mengunduh kode sumber opencv dengan mengarahkan browser web Anda ke opencv-sourceForge.net atau gunakan perintah wget untuk memperoleh kode sumber secara langsung pada baris perintah:

$ wget http: // unduhan.SourceForge.Net/Project/OpenCVLibrary/Opencv-Utix/2.0/opencv-2.0.0.ter.BZ2

Ekstrak kode sumber opencv

Apakah Anda menggunakan browser web atau utilitas wget untuk mengunduh kode sumber perpustakaan opencv, Anda harus berakhir dengan OpenCV-2.0.0.ter.BZ2 Tarball di direktori kerja Anda saat ini. Langkah selanjutnya adalah mengekstrak file sumber dengan perintah tar. Perintah Linux berikut akan mengekstrak semua file ke dalam OpenCV-2.0.0 direktori:

$ tar xvjf opencv-2.0.0.ter.BZ2

OpenCV-2 baru.0.0 direktori (kira -kira. 67MB) sekarang harus tersedia di direktori kerja Anda saat ini dan akan berisi semua file sumber yang diperlukan untuk kompilasi.

Kompilasi dan Pemasangan Binari OpenCV

Untuk mengkompilasi kode sumber opencv, kami akan menggunakan Sumber Sumber Terbuka CMake. Bendera kompilasi konfigurasi cmake berikut akan diatur:

  • Cmake_build_type = rilis: cmake akan meningkatkan proyek rilis
  • Cmake_install_prefix =/usr/local: direktori yang akan digunakan sebagai tujuan instalasi
  • Build_python_support: aktifkan dukungan python

CATATAN: utilitas cmake secara default tidak menyediakan cara untuk menghapus instalasi proyek Anda dari suatu sistem. Jika Anda memiliki kebutuhan untuk menghapus pemasangan OpenCCV dari sistem Anda, Anda harus membuat perubahan yang tepat sebelum Anda melanjutkan dengan kompilasi.

Arahkan ke OpenCV-2.0.0 Direktori yang berisi kode sumber:

$ CD OPENCV-2.0.0/

Buat dan arahkan ke direktori baru untuk digunakan oleh cmake. I Kasus ini, nama direktori sama dengan tipe proyek, "rilis":

Rilis $ MKDIR; rilis CD

Gunakan cmake untuk membuat file konfigurasi dengan bendera konfigurasi yang dijelaskan di atas:

CATATAN: Bendera cmake_install_prefix dapat diatur ke jalur instalasi yang diinginkan

cmake -d cmake_build_type = rilis -d cmake_install_prefix =/usr/local -d build_python_support = on… 

Setelah eksekusi perintah cmake, ringkasan instalasi akan ditampilkan dan akan terlihat mirip dengan yang di bawah ini.

KELUARAN:
- Konfigurasi Umum untuk OpenCV 2.0.0 ======================================
-
- Penyusun:
- C ++ Flags (rilis): -wall -pThread -ffunction -seection -o3 -dndebug -fomit -frame -pointer -o3 -ffast -math -mmmx -dndebug
- Bendera C ++ (Debug): -wall -pThread -ffunction -Bagian -G -O0 -DDEBUG -D_DEBUG
- Bendera Linker (rilis):
- Linker Flags (Debug):
-
- GUI:
- GTK+ 2.X: 1
- GThread: 1
-
- Gambar I/O:
- JPEG: Benar
- PNG: Benar
- Tiff: Salah
- Jasper: Salah
-
- Video I/O:
- DC1394 1.X: 0
- DC1394 2.X: 0
- FFMPEG: 1
- Codec: 1
- Format: 1
- util: 1
- SWSCALE: 1
- Gentoo-style: 1
- GStreamer: 0
- Unicap:
- V4L/V4L2: 1/1
- Xine: 0
-
- Antarmuka:
- Old Python: 0
- Python: ON
- Gunakan IPP: Tidak
- Bangun dokumentasi 0
-
- Instal Path: /USR /Lokal
-
- cvconfig.h is in:/home/sandbox/opencv-2.0.0/Rilis
- -
-
- Mengkonfigurasi Selesai
- Menghasilkan selesai
- Bangun file telah ditulis ke:/home/sandbox/opencv-2.0.0/Rilis

Ketika eksekusi perintah cmake tidak menghasilkan kesalahan, maka kami siap untuk menyusun kode sumber.:

CATATAN: Akan ada sejumlah pesan peringatan yang ditampilkan di terminal Anda selama proses pembangunan. Pesan peringatan ini dapat diabaikan, kecuali jika mereka memengaruhi pengaturan lingkungan opencv pilihan Anda!

$ make

Jika tidak ada kesalahan yang ditampilkan pada terminal dan dialog kemajuan yang dicapai [100%] selama proses pembangunan, kami siap menginstal perpustakaan OpenCV. Instalasi ini opsional selama variabel lingkungan Anda LD_LIBRARY_PATH ditautkan ke direktori Opencv Built yang sesuai. Jika Anda ingin menginstal OpenCV ke /usr /lokal sebagaimana ditetapkan oleh bendera CMake di atas, jalankan perintah Linux berikut:

# buat instal

Ekspor jalur yang benar ke variabel lingkungan ld_library_path dan gunakan ldconfig untuk secara dinamis menautkan ke perpustakaan opencv:

$ Ekspor ld_library_path =/usr/local/lib/: $ ld_library_path
# ldconfig

Jika Anda tidak ingin menginstal Perpustakaan OpenCV, Anda harus mengekspor jalur yang benar ke Direktori Pembuatan Perpustakaan OpenCV untuk memberi tahu sistem Anda di mana perpustakaan berada. Misalkan direktori rilis baru Anda terletak di ~/opencv-2.0.0/Rilis Lalu jalur ekspor Anda akan terlihat seperti ini:

$ Ekspor ld_library_path = ~/opencv-2.0.0/rilis/: $ ld_library_path
# ldconfig

Ini menyelesaikan prosedur instalasi perpustakaan opencv. Untuk informasi tambahan sehubungan dengan instalasi OpenCV, kunjungi Panduan Instal OpenCV.

Contoh OpenCV

Tanpa memperpanjang diskusi tentang apa itu visi komputer dan bagaimana hal itu terkait dengan OpenCV sekarang kita akan bergerak langsung ke beberapa contoh tentang cara menulis, menyusun, dan menjalankan program sederhana menggunakan OpenCV Library. Jika Anda tertarik dengan pengantar yang lebih intens untuk visi komputer dan opencv, saya merekomendasikan buku: “Belajar OpenCV: Visi Komputer dengan Perpustakaan OpenCV oleh Gary Bradski dan Adrian Kaehler“.

Konversi gambar

Mari kita mulai dengan sesuatu yang sangat sederhana dan itu adalah 7 baris kode untuk mengonversi gambar di antara tipe gambar berikut:

  • Windows Bitmaps - BMP, Dib
  • File JPEG - JPEG, JPG, JPE
  • Grafik Jaringan Portabel - PNG
  • Format Gambar Portabel - PBM, PGM, PPM
  • Sun Rasters - Sr, Ras
  • File TIFF - TIFF, TIF

Program berikut akan menerima dua argumen baris perintah, gambar sumber, dan gambar tujuan. Gambar sumber akan disimpan sebagai jenis gambar yang ditentukan oleh ekstensi file gambar tujuan. Simpan kode berikut dalam file yang disebut konversi gambar.C :

#include "Highgui.H"
int main (int argc, char ** argv)
IPlImage* img = cvloadImage (argv [1]);
CVSaveImage (Argv [2], IMG);
CVReleaseImage (& IMG);
kembali0;

Kode sumber program baru kami sudah siap dan inilah bagian kompilasi. Dengan asumsi bahwa Anda telah menyimpan program OpenCV pertama Anda sebagai konversi gambar.C Anda dapat mengkompilasi program Anda dengan perintah Linux berikut:

$ g ++ 'pkg-config opencv --cflags --libs' konversi gambar.c -O Konversi gambar

Setelah kompilasi yang berhasil, file biner baru yang dapat dieksekusi bernama konversi gambar dibuat di direktori kerja Anda saat ini. Sebelum kami menguji program baru ini, kami membutuhkan beberapa gambar sampel:

$ wget -o gambar.png http: // www.LinuxConfig.org/templat/rHuk_milkyway/gambar/mw_joomla_logo.png

wget mengunduh dan menyimpan gambar gambar.PNG ke direktori Anda saat ini, dan sekarang kami dapat mencoba untuk mengubah gambar ini ke jenis gambar apa pun yang tercantum di atas. Perintah Linux berikut akan mengonversi tipe gambar PNG ke JPG. Dengan asumsi bahwa kompilasi program tidak menghasilkan kesalahan dan file biner Anda disimpan sebagai konversi gambar yang dapat Anda konversi di antara dua jenis gambar dengan perintah Linux berikut:

$ ./gambar konversi gambar.gambar png.jpg

Untuk mengonfirmasi gambar itu dikonversi, perintah file dapat digunakan untuk menampilkan jenis file untuk file yang diberikan sebagai argumen:

$ gambar file.*

KELUARAN:
gambar.JPG: Data gambar JPEG, JFIF Standard 1.01
gambar.PNG: Gambar PNG, 270 x 105, 8-bit/warna RGBA, non-interlaced

Saat Anda melihat perintah kompilasi sekali lagi, Anda dapat mengamati bahwa utilitas pkg -config telah digunakan untuk mengambil lokasi perpustakaan opencv dengan menggunakan opsi -cflags serta untuk mendapatkan semua dependensi menggunakan opsi -libs. Oleh karena itu, perintah alternatif untuk yang di atas tanpa utilitas PKG-Config dapat dibangun agar terlihat seperti ini:

g ++ -i/usr/local/include/opencv -l/usr/local/lib \
-lcxcore -lcv -lhighgui -lcvaux -lml konversi gambar.c -O Konversi gambar

Namun, dalam kedua kasus perintah kompilasi akan membuat dependensi perpustakaan yang tidak diinginkan:

$ LDD Konversi Gambar | grep lokal

KELUARAN:
libcxcore.Jadi.2.0 =>/usr/local/lib/libcxcore.Jadi.2.0 (0xb7ccc000)
libcv.Jadi.2.0 =>/usr/local/lib/libcv.Jadi.2.0 (0xb7a7a000)
Libhighgui.Jadi.2.0 =>/usr/lokal/lib/libhighgui.Jadi.2.0 (0xb7a3f000)
libcvaux.Jadi.2.0 =>/usr/local/lib/libcvaux.Jadi.2.0 (0xB793B000)
libml.Jadi.2.0 =>/usr/local/lib/libml.Jadi.2.0 (0xb78d8000)

Program kami tergantung pada Highgui OpenCV.H Pustaka dan karena itu termasuk -LCVAUX -LML -LCXCORE dan -LCV Dependensi ke dalam perintah kompilasi tidak diperlukan. Perintah Kompilasi Versi Singkat akan terlihat seperti ini:

$ g ++ -i/usr/local/include/opencv -lhighgui gambar -konversi.c -O Konversi gambar

Akibatnya, ketergantungan perpustakaan program telah dikurangi:

$ LDD Konversi Gambar | grep lokal

KELUARAN:
Libhighgui.Jadi.2.0 =>/usr/lokal/lib/libhighgui.Jadi.2.0 (0xB7F61000)
libcxcore.Jadi.2.0 =>/usr/local/lib/libcxcore.Jadi.2.0 (0xb7a75000)
libcv.Jadi.2.0 =>/usr/local/lib/libcv.Jadi.2.0 (0xB7823000)

Mulai sekarang, terserah Anda bagaimana Anda menyusun contoh berikut dalam artikel ini. Perlu diingat bahwa perintah kompilasi pertama termasuk pkg-config akan dapat mengkompilasi semua contoh. Namun, itu dapat menghasilkan biner dengan ketergantungan yang berlebihan.

Menampilkan gambar

Pada titik ini, kami telah dapat mengonversi jenis gambar dan mengkonfirmasi deskripsi meta dengan perintah file. Saatnya menampilkan gambar di layar dan secara visual mengkonfirmasi bahwa itu dikonversi dengan benar. Contoh program berikut akan menampilkan gambar di layar:

#include "Highgui.H"
int main (int argc, char ** argv)
// cvloadImage menentukan jenis gambar dan membuat struktur data dengan ukuran yang sesuai
IPlImage* img = cvloadImage (argv [1]);
// Buat jendela. Nama jendela ditentukan oleh argumen yang disediakan
cvnamedWindow (argv [1], cv_window_autosize);
// Tampilkan gambar di dalam dan jendela. Nama jendela ditentukan oleh argumen yang disediakan
cvshowimage (argv [1], img);
// tunggu tanpa batas waktu untuk penekanan tombol
cvwaitkey (0);
// Lepaskan pointer ke suatu objek
CVReleaseImage (& IMG);
// Hancurkan jendela
cvdestroywindow (argv [1]);

CATATAN: Kembali ke bagian konversi gambar di atas, jika Anda memerlukan bantuan tentang cara mengkompilasi program opencv ini.

Eksekusi program gambar tampilan ini dengan gambar.JPG yang diproduksi di bagian sebelumnya akan menampilkan gambar ini di layar:

$ Display-Image Image.jpg

KELUARAN:

Gaussian halus

Anda juga dapat mencoba membuat transformasi gambar sederhana menggunakan metode Gaussian Smooth. Tambahkan baris berikut ke dalam kode gambar tampilan Anda sebelum panggilan fungsi cvshowimage:
..

cvnamedWindow (argv [1], cv_window_autosize);
cvsmooth (img, img, cv_gaussian, 9, 9);

cvshowimage (argv [1], img);
..
dan tambahkan sebagai baris pertama ke program Anda '#include "CV.arahan h ".

Ini akan menggabungkan metode Gaussian Smooth yang berpusat pada setiap piksel dengan area 9 x 9 ke dalam gambar output. Setelah kompilasi dan eksekusi, output berikut akan disajikan:
KELUARAN:

Putar video

Bagian ini mencakup kode program yang akan membuat pemutar video sederhana menggunakan Pustaka OpenCV. Contoh video, pohon.Avi dapat ditemukan di OpenCV-2 Anda.0.0 Direktori di mana Anda telah mengekstraksi file sumbernya (OpenCV-2.0.0/sampel/c/pohon.avi):

#include "cv.H"
#include "Highgui.H"
// inisialisasi variabel global
int g_slider_position = 0; // posisi trackbar
Cvcapture* g_capture = null; // struktur untuk membuat input video
// rutin untuk dipanggil saat pengguna memindahkan slider trackbar
void ontrackbarslide (int pos)
cvsetCaptureProperty (
g_capture,
Cv_cap_prop_pos_frames,
pos
);

int main (int argc, char ** argv)
// Buat jendela dengan ukuran yang sesuai. Nama Windows ditentukan oleh nama file
// disediakan sebagai argumen
cvnamedWindow (argv [1], cv_window_autosize);
// Buka video
g_capture = cvCreateFileCapture (argv [1]);
// Tetapkan posisi baca dalam satuan bingkai dan ambil jumlah total frame
int frame = (int) cvgetCapturePropery (
g_capture,
Cv_cap_prop_frame_count
);
// Jangan membuat Treaccbar jika video tidak menyertakan informasi
// tentang jumlah bingkai
if (bingkai!= 0)
cvcreateTrackBar (
"Posisi",
Argv [1],
& g_slider_position,
bingkai,
OntrackBarslide
);

// Tampilkan bingkai video berdasarkan bingkai
Bingkai aimage*;
while (1)
frame = cvQueryFrame (g_capture);
jika( !bingkai) istirahat;
cvshowimage (argv [1], bingkai);
// Atur trackbar ke posisi bingkai saat ini
cvsetTrackBarpos ("posisi", argv [1], g_slider_position);
g_slider_position ++;
char c = cvwaitkey (33);
// Berhentilah jika ESC ditekan
if (c == 27) break;

// memori gratis
cvreleasecapture (& g_capture);
cvdestroywindow (argv [1]);
kembali (0);

CATATAN: Kembali ke bagian konversi gambar di atas, jika Anda memerlukan bantuan tentang cara mengkompilasi program opencv ini.

Jalankan program OpenCV baru Anda dan sebagai argumen menyediakan file video:

 $ ./Video-Player ~/opencv-2.0.0/sampel/c/pohon.Avi

KELUARAN:

Masukan dari kamera video

Tujuan dari bagian ini adalah untuk memberikan beberapa tips sederhana tentang cara mengkonfigurasi kamera pada sistem Linux dan cara mengonfirmasi bahwa kamera video Anda dikenali oleh sistem Anda dengan benar. Saat kamera Anda siap, Anda akan disajikan dengan program sederhana yang mampu menampilkan video menggunakan kamera video sebagai input.

Untuk artikel ini saya telah menggunakan Logitech, Inc. Kamera QuickCam Pro 9000. Pemasangan kamera ini di Debian 5.0 atau ubuntu 9.Sistem 10 (karma koala) adalah prosedur plug & play sederhana. Berikut adalah beberapa petunjuk tentang cara mengonfirmasi bahwa kamera Anda telah dikenali oleh sistem Anda:

CATATAN:
Output Anda akan berbeda !

$ lsusb

KELUARAN:
Bus 002 Perangkat 003: ID 046D: 0990 Logitech, Inc. QuickCam Pro 9000
Bus 002 Perangkat 001: ID 1D6B: 0002 Linux Foundation 2.0 hub root
Bus 001 Perangkat 002: ID 045E: 00D1 Microsoft Corp. Mouse optik dengan roda kemiringan
Bus 001 Perangkat 001: ID 1D6B: 0001 Linux Foundation 1.1 hub root

Perintah LSUSB mengungkapkan jenis kamera yang terhubung ke sistem Anda. Output dari perintah lsusb tidak diperlukan berarti kamera Anda sekarang siap digunakan. Mari kita lihat apakah beberapa modul dikaitkan dengan video:

$ lsmod | video grep

KELUARAN:
UVCVideo 45800 0
compat_ioctl32 1312 1 uvcvideo
videodev 27520 1 UVCVideo
V4L1_COMPAT 12260 2 UVCVideo, VideoDev
USBCORE 118192 7 SND_USB_AUDIO, SND_USB_LIB, UVCVideo, USBHID, EHCI_HCD, OHCI_HCD

Ini terlihat sangat menjanjikan. Kamera saya menggunakan modul uvcvideo. Jika Anda tidak melihat Oteptut atau Anda hanya melihat output yang tidak terkait dengan perangkat kamera Anda, Anda mungkin perlu mengkompilasi ulang kernel Anda atau menginstal modul yang sesuai.

Sekarang kami perlu menemukan file perangkat sesuai dengan kamera Anda. Untuk melakukan itu, kami menggunakan utilitas XAWTV:

CATATAN: Jika perintah xawtv tidak tersedia, Anda harus menginstal paket xawtv.

$ xawtv -hwscan

KELUARAN:
Ini XAWTV-3.95.dfsg.1, berjalan di Linux/i686 (2.6.26-2-686)
mencari perangkat yang tersedia
Port 65-96
Ketik: xvideo, scaler gambar
Nama: NV Video Blitter

/dev/video0: ok [-device/dev/video0]
Jenis: V4L2
Nama: Kamera UVC (046D: 0990)
Bendera: Tangkap

File perangkat diasitasi dengan kamera saya adalah /dev /video0 . Anda juga dapat melihat kesalahan di terminal Anda yang mengatakan: Open /Dev /Video0: Izin ditolak. Untuk memperbaiki masalah ini, Anda perlu menjadikan diri Anda sebagai bagian dari grup "Video". Sekarang uji kamera Anda dengan perintah Linux berikut:

$ xawtv -c /dev /video0

Jika Anda memiliki beberapa masalah dalam beberapa langkah sebelumnya, berikut adalah beberapa tautan, yang dapat membantu Anda memecahkan masalah masalah Anda:

  • Kompatibilitas Kamera Linux OpenCV
  • Linux Webcam Howto
  • Kamera yang didukung menggunakan driver SPCA5XX
  • Kamera yang Didukung Menggunakan Driver UVCVideo

Untuk menggunakan kamera dengan perpustakaan opencv sederhana saat menulis program untuk memutar video. Salin kode sumber yang dibuat sebelumnya dari program pemutar video Anda dan ubah baris:

Cvcapture* capture = cvcreateFileCapture (argv [1]);
ke:
Cvcapture* capture = cvcreateCamerAcapture (0);

Jadi seluruh kode akan terlihat mirip dengan yang di bawah ini:

#include "Highgui.H"
int main (int argc, char ** argv)
cvnamedWindow ("example2", cv_window_autosize);
Cvcapture* capture = cvcreateCamerAcapture (0);
Bingkai aimage*;
while (1)
bingkai = cvQueryFrame (Capture);
jika( !bingkai) istirahat;
cvshowimage ("example2", frame);
char c = cvwaitkey (33);
if (c == 27) break;

cvreleasecapture (& capture);
cvdestroywindow ("example2");

Perhatikan bahwa fungsi cvcreateCamerAcapture () tidak mengambil file atau argumen perangkat tertentu. Dalam hal ini OpenCV akan mulai menggunakan kamera pertama yang tersedia di sistem Anda. Kompilasi dan jalankan program ini dan jika semuanya sampai titik ini berjalan dengan baik, Anda harus melihat diri Anda di layar Anda.

CATATAN: Kembali ke bagian konversi gambar di atas, jika Anda memerlukan bantuan tentang cara mengkompilasi program opencv ini.

Tulis file avi dari kamera

Contoh terakhir akan mencoba membaca input dari kamera dan menulisnya ke file. Sementara itu, program ini juga akan menampilkan jendela dengan aliran video input kamera. Input video disimpan ke file yang disediakan sebagai argumen pada baris perintah. Codec yang digunakan ditentukan oleh Fourcc (empat kode karakter) MJPG yang dalam hal ini adalah JPEG gerak. Program sampel ini sangat mendasar dan ada banyak ruang untuk perbaikan:

#termasuk 
#termasuk
main (int argc, char* argv [])
Cvcapture* capture = null;
Capture = CVCreateCamerAcapture (0);
IPLIMAGE *frames = cvQueryFrame (capture);
// Dapatkan ukuran bingkai untuk digunakan oleh struktur penulis
Ukuran cvsize = cvsize (
(int) cvgetCaptureProperty (capture, cv_cap_prop_frame_width),
(int) cvgetCaptureProperty (Capture, cv_cap_prop_frame_height)
);
// mendeklarasikan struktur penulis
// Gunakan Fourcc (empat Kode Karakter) MJPG, Codec JPEG Motion
// file output ditentukan oleh argumen pertama
Cvvideowriter *writer = cvcreateVideowriter (
Argv [1],
Cv_fourcc ('m', 'j', 'p', 'g'),
30, // atur fps
ukuran
);
// Buat jendela baru
cvnamedWindow ("merekam ... tekan ESC untuk berhenti !", Cv_window_autosize);
// Tampilkan Capture di jendela dan rekam ke file
// Rekam sampai Pengguna hit ESC Key
while (1)
bingkai = cvQueryFrame (capture);
jika( !bingkai) istirahat;
cvshowimage ("merekam ... tekan ESC untuk berhenti !", bingkai);
cvwriteFrame (penulis, bingkai);
char c = cvwaitkey (33);
if (c == 27) break;

cvreleasevideowriter (& penulis);
cvreleasecapture (& capture);
cvdestroywindow ("merekam ... tekan ESC untuk berhenti !");
kembali0;

Dengan asumsi bahwa Anda menyimpan dan menyusun program ini sebagai "simpan-camera-input" Anda dapat mengatasinya merekam video ke file video.avi dengan perintah ini:
CATATAN: Kembali ke bagian konversi gambar di atas, jika Anda memerlukan bantuan tentang cara mengkompilasi program opencv ini.

$ ./save-camera-input-file video.Avi

Kesimpulan

Artikel ini harus memberi Anda awal yang baik untuk perpustakaan opencv dari perspektif instalasi. Contoh yang disajikan tidak ada hubungannya dengan visi komputer itu sendiri, tetapi mereka memberikan tempat pengujian yang baik untuk instalasi opencv Anda. Bahkan dari contoh -contoh OpenCV sederhana ini juga jelas bahwa OpenCV adalah perpustakaan yang sangat beradab karena dengan hanya beberapa baris kode opencv Anda dapat mencapai hasil yang bagus. Komentar Anda tentang artikel ini sangat dihargai karena mungkin berdampak besar pada kualitas artikel. Ada lebih banyak hal tentang opencv, jadi tetaplah disini dengan mengantarkan linuxconfig.org rss feed (sudut kiri atas).

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Cara Dual Boot Kali Linux dan Windows 10
  • Perangkat lunak pengeditan video terbaik di Linux
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Pembaca PDF Terbaik untuk Linux
  • Cara mendapatkan alamat mac di linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Manjaro Linux Windows 10 Dual Boot
  • File Konfigurasi Linux: 30 Teratas Paling Penting