Abstrak

Abstrak
Tujuan dokumen ini adalah untuk membantu pembaca untuk memulakan dengan OpenCV Perpustakaan Visi Komputer pada Sistem Linux. OpenCCV adalah perpustakaan multi-platform, tetapi artikel ini hanya akan difokuskan pada OpenCV menggunakan sistem operasi Linux (walaupun, hanya pemasangan perpustakaan dan kamera video OpenCV adalah spesifik platform, semua contoh dalam artikel ini harus dikumpulkan di mana-mana platform di mana OpenCV dipasang dengan betul seperti Mac OS, MS Windows dan lain -lain.). Pembaca akan dibimbing melalui panduan langkah demi langkah mengenai cara memasang dan menggunakan beberapa fungsi asas perpustakaan OpenCV seperti memaparkan imej, memainkan video atau menggunakan kamera video untuk memproses aliran input video.

Konvensyen yang digunakan dalam artikel ini:

  • $ - Pelaksanaan pada baris arahan oleh pengguna yang tidak istimewa
  • # - Pelaksanaan pada baris arahan oleh superuser
  • Perintah sebenar yang akan dilaksanakan pada baris arahan atau kod program yang akan disusun
  • PENGELUARAN: output yang dihasilkan pada baris arahan dengan pelaksanaan arahan
  • CATATAN: Nota Umum dan Maklumat Tambahan

Pengenalan

Dalam kata -kata mudah, penglihatan komputer adalah bidang saintifik yang berusaha memberikan penglihatan ke mesin. Bidang saintifik ini telah berkembang pesat dalam beberapa tahun kebelakangan ini. Antara penyelidik pertumbuhan ini adalah kerana banyak penambahbaikan algoritma penglihatan dan antara penggemar penglihatan komputer ini disebabkan oleh komponen perkakasan yang lebih murah dan kuasa pemprosesan. Perpustakaan OpenCV memainkan peranan yang hebat dalam bidang penglihatan komputer kerana ia sangat membantu untuk mengurangkan kos dan penyediaan masa persekitaran penyelidikan penglihatan komputer yang diperlukan oleh pelajar universiti, penggemar dan profesional. OpenCV juga menyediakan fungsi mudah untuk menggunakan kerja yang dilakukan dengan cara yang mudah, berkesan dan elegan. OpenCV dimulakan oleh Intel, dan kemudiannya diubah menjadi projek sumber terbuka yang kini boleh didapati di SourceForge.jaring. Perpustakaan OpenCV mempunyai ketersediaan pelbagai platform, dan sebahagiannya ditulis dalam bahasa C ++ dan C. Walaupun perpustakaan ini boleh didapati di banyak pengagihan Linux dari repositori pakej yang berkaitan, dalam artikel ini kami akan cuba memasang dan menggunakan perpustakaan OpenCV yang disusun dari kod sumber yang dimuat turun dari SourceForge.laman web bersih.

Sebab -sebab untuk menyusun kod sumber mungkin termasuk:

  • versi baru 2.0.0 baru -baru ini dikeluarkan dan lebih banyak ciri yang ada
  • Beberapa pepijat tetap yang mempengaruhi linux opencv 1.0.0 versi (seperti cvgetCaptureProperty () dll. )
  • Lebih banyak sokongan tersedia untuk OpenCV 2.0.0 versi daripada bekas 1.0.0 versi

Artikel ini akan bermula dengan pemasangan OpenCV pada Debian 5.0 (Lenny). Kemudian pembaca akan dibimbing melalui beberapa contoh mengenai cara menggunakan OpenCV untuk memaparkan imej, memainkan video dan menggunakan kamera untuk menangkap aliran input video.

Pemasangan

Bahagian berikut akan menerangkan proses pemasangan perpustakaan OpenCV dengan membina binari dari kod sumber yang tersedia dari SourceForge.jaring. Prosedur pemasangan yang ditunjukkan di sini telah diuji pada Debian 5.0 (Lenny) dan Ubuntu 9.10 (Karmic Koala). Prosedur pemasangan sebenar mestilah sama atau sama persis untuk kebanyakan pengagihan Linux selain langkah pertama di mana kebergantungan pakej dipasang dari repositori pengedaran Debian dan Ubuntu yang relevan. Pada sistem rpm linux anda boleh berunding dengan alat Pengurusan Pakej Red Hat (RPM) untuk alternatif untuk prasyarat OpenCV yang diterangkan di bahagian seterusnya.

Prasyarat

Pertama, apa yang perlu dilakukan ialah pemasangan prasyarat yang diperlukan oleh perpustakaan OpenCV. Senarai kebergantungan boleh diubahsuai sedikit mengikut keperluan anda:

  • libavformat -dev - Fail pembangunan untuk libavformat
  • libgtk2.0 -dev - Fail Pembangunan untuk Perpustakaan Antara Muka Pengguna GTK+
  • PKG -CONFIG - Mengurus bendera kompilasi dan pautan untuk perpustakaan
  • libswscale -dev - fail pembangunan untuk libswscale ffmpeg video scaling perpustakaan
  • CMAKE-Sistem pembuatan sumber terbuka dan terbuka yang digunakan untuk penyusunan kod sumber
  • BZIP2-Pemampat fail penyusun blok berkualiti tinggi yang digunakan untuk mengekstrak fail sumber OpenCV

Perintah Linux berikut secara automatik akan mengambil dan memasang semua pakej yang diperlukan dan kebergantungannya:

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

Mendapatkan kod sumber OpenCV

Versi Perpustakaan OpenCV semasa pada masa penulisan adalah versi 2.0.0. Anda boleh memuat turun kod sumber OpenCV dengan menunjuk penyemak imbas web anda ke OpenCV-SourceForge.Bersih atau gunakan perintah wget untuk memperoleh kod sumber secara langsung pada baris arahan:

$ wget http: // muat turun.SourceForge.bersih/projek/opencvlibrary/opencv-unix/2.0/OpenCV-2.0.0.tar.BZ2

Ekstrak kod sumber openCV

Sama ada anda menggunakan penyemak imbas web atau utiliti wget untuk memuat turun kod sumber perpustakaan openCV, anda harus berakhir dengan OpenCV-2.0.0.tar.BZ2 Tarball dalam direktori kerja semasa anda. Langkah seterusnya adalah untuk mengekstrak fail sumber dengan arahan tar. Perintah Linux berikut akan mengekstrak semua fail ke OpenCV-2.0.0 Direktori:

$ tar xvjf opencv-2.0.0.tar.BZ2

OpenCV-2 baru.0.0 direktori (lebih kurang. 67MB) mesti tersedia dalam direktori kerja semasa anda dan akan mengandungi semua fail sumber yang diperlukan untuk penyusunan.

Penyusunan dan pemasangan binari OpenCV

Untuk menyusun kod sumber OpenCV, kami akan menggunakan Cmake Sistem Buat Sumber Terbuka. Konfigurasi cmake berikut bendera penyusun akan ditetapkan:

  • Cmake_build_type = pelepasan: cmake akan membulatkan projek pelepasan
  • Cmake_install_prefix =/usr/local: direktori yang akan digunakan sebagai destinasi pemasangan
  • BUILD_PYTHON_SUPPORT: Dayakan sokongan python

CATATAN: utiliti cmake secara lalai tidak memberikan cara untuk menyahpasang projek anda dari sistem. Sekiranya anda mempunyai keperluan untuk menyahpasang OpenCCV dari sistem anda, anda harus membuat perubahan yang sesuai sebelum anda meneruskan penyusunan.

Navigasi ke OpenCV-2.0.0 direktori yang mengandungi kod sumber:

$ CD OPENCV-2.0.0/

Buat dan navigasi ke direktori baru untuk digunakan oleh cmake. Saya Kes ini, nama direktori sama seperti jenis projek, "Siaran":

$ mkdir pelepasan; Pelepasan CD

Gunakan CMake untuk membuat fail konfigurasi dengan bendera konfigurasi yang diterangkan di atas:

CATATAN: Cmake_install_prefix bendera boleh ditetapkan ke mana -mana laluan pemasangan yang dikehendaki

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

Selepas pelaksanaan perintah cmake, ringkasan pemasangan akan dengan dipaparkan dan akan kelihatan serupa dengan yang di bawah.

PENGELUARAN:
- Konfigurasi Umum untuk OpenCV 2.0.0 ====================================
-
- Pengkompil:
- C ++ Flags (Release): -wall -pthread -ffunction -Sections -O3 -dndebug -Fomit -Frame -Pointer -O3 -Ffast -Math -mmmx -dndebug
- C ++ Flags (Debug): -wall -pthread -ffunction -Sections -g -o0 -dddebug -d_debug
- Bendera Linker (Siaran):
- Bendera Linker (Debug):
-
- GUI:
- GTK+ 2.x: 1
- Gthread: 1
-
- Imej 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
- gaya gentoo: 1
- GStreamer: 0
- Unicap:
- V4L/V4L2: 1/1
- Xine: 0
-
- Antara muka:
- Python lama: 0
- Python: On
- Gunakan IPP: Tidak
- Membina dokumentasi 0
-
- Pasang Laluan: /usr /tempatan
-
- cvconfig.H berada di:/rumah/kotak pasir/opencv-2.0.0/Siaran
- -
-
- Mengkonfigurasi Selesai
- Menjana selesai
- Membina fail telah ditulis ke:/rumah/kotak pasir/opencv-2.0.0/Siaran

Apabila pelaksanaan perintah cmake tidak menghasilkan sebarang kesilapan, maka kami bersedia untuk menyusun kod sumber.:

CATATAN: Akan ada beberapa mesej amaran yang ditunjukkan di terminal anda semasa proses binaan. Mesej amaran ini boleh diabaikan, melainkan jika ia mempengaruhi tetapan persekitaran opencv pilihan anda!

$ buat

Sekiranya tiada kesilapan dipaparkan di terminal dan dialog kemajuan yang dicapai [100%] semasa proses binaan, kami sudah bersedia untuk memasang perpustakaan OpenCV. Pemasangan adalah pilihan selagi pembolehubah persekitaran anda ld_library_path dikaitkan dengan direktori binaan openCV yang sesuai. Jika anda ingin memasang OpenCV ke /usr /Local seperti yang ditetapkan oleh bendera cmake di atas, laksanakan arahan Linux berikut:

# buat pemasangan

Eksport jalan yang betul ke pembolehubah persekitaran ld_library_path dan gunakan LDConfig untuk menghubungkan secara dinamik ke perpustakaan OpenCV:

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

Sekiranya anda tidak mahu memasang perpustakaan OpenCV, anda hanya perlu mengeksport laluan yang betul ke Perpustakaan OpenCV membina direktori untuk memberitahu sistem anda di mana perpustakaan berada. Katakan direktori pelepasan baru anda terletak di ~/opencv-2.0.0/Siaran maka laluan eksport anda akan kelihatan seperti ini:

$ eksport ld_library_path = ~/opencv-2.0.0/Release/: $ ld_library_path
# ldconfig

Ini melengkapkan prosedur pemasangan perpustakaan opencv. Untuk maklumat tambahan berkenaan dengan Panduan Pemasangan OpenCV OpenCV Panduan.

Contoh opencv

Tanpa memanjangkan perbincangan tentang apa penglihatan komputer dan bagaimana ia berkaitan dengan OpenCV kita sekarang akan bergerak ke beberapa contoh tentang cara menulis, menyusun dan melaksanakan program mudah menggunakan perpustakaan OpenCV. Jika anda berminat dengan pengenalan yang lebih sengit kepada Visi Komputer dan OpenCV saya cadangkan buku: "Pembelajaran OpenCV: Visi Komputer dengan Perpustakaan OpenCV oleh Gary Bradski dan Adrian Kaehler".

Penukaran imej

Mari kita mulakan dengan sesuatu yang sangat mudah dan itu adalah 7 baris kod untuk menukar imej antara jenis imej berikut:

  • Windows Bitmaps - BMP, Dib
  • Fail JPEG - JPEG, JPG, JPE
  • Grafik Rangkaian Mudah Alih - PNG
  • Format imej mudah alih - PBM, PGM, PPM
  • Sun Rasters - SR, RAS
  • Fail TIFF - TIFF, TIF

Program berikut akan menerima dua argumen baris arahan, imej sumber dan imej destinasi. Imej sumber akan disimpan sebagai jenis imej yang ditentukan oleh pelanjutan fail imej destinasi. Simpan kod berikut dalam fail yang disebut penukaran imej.c:

#include "highgui.H "
int main (int argc, char ** argv)
IpLimage* img = cvloadImage (argv [1]);
cvSaveImage (argv [2], img);
cvReleaseImage (& img);
pulangan0;

Kod sumber program baru kami sudah siap dan di sini datang bahagian kompilasi. Dengan mengandaikan bahawa anda telah menyelamatkan program OpenCV pertama anda sebagai penukaran imej.c Anda boleh menyusun program anda dengan arahan Linux berikut:

$ g ++ 'pkg-config opencv --flags-libs' conversion.C -O penukaran imej

Selepas Kompilasi yang berjaya, fail binari yang boleh dilaksanakan baru bernama penukaran imej dicipta dalam direktori kerja semasa anda. Sebelum kita menguji program baru ini, kita memerlukan beberapa gambar sampel:

$ wget -o gambar.png http: // www.Linuxconfig.org/templat/rhuk_milkyway/imej/mw_joomla_logo.png

wget memuat turun dan menyimpan gambar gambar.PNG ke dalam direktori semasa anda, dan kini kami boleh cuba menukar imej ini ke mana -mana jenis imej yang disenaraikan di atas. Perintah Linux berikut akan menukar jenis imej PNG ke JPG. Dengan mengandaikan bahawa kompilasi program tidak menghasilkan sebarang kesilapan dan fail binari anda disimpan sebagai penukaran imej yang anda boleh tukar antara dua jenis imej dengan arahan Linux berikut:

$ ./imej penukaran imej.Imej PNG.JPG

Untuk mengesahkan bahawa imej telah ditukar, arahan fail boleh digunakan untuk memaparkan jenis fail untuk fail yang diberikan sebagai hujah:

$ Imej fail.*

PENGELUARAN:
gambar.JPG: Data Imej JPEG, Standard JFIF 1.01
gambar.PNG: Imej PNG, 270 x 105, 8-bit/warna RGBA, bukan interlaced

Apabila anda melihat perintah kompilasi sekali lagi, anda dapat melihat bahawa utiliti pkg -config telah digunakan untuk mengambil lokasi perpustakaan OpenCV dengan penggunaan pilihan -cflags serta untuk mendapatkan semua kebergantungan menggunakan pilihan -libs pilihan. Oleh itu, arahan alternatif kepada yang di atas tanpa utiliti PKG-Config boleh dibina untuk kelihatan seperti ini:

g ++ -i/usr/local/termasuk/opencv -l/usr/local/lib \
-lcxcore -lcv -lhighgui -lcvaux -lml image -conversion.C -O penukaran imej

Walau bagaimanapun, dalam kedua -dua kes perintah kompilasi akan mewujudkan kebergantungan perpustakaan yang tidak diingini:

$ ldd image-conversion | grep tempatan

PENGELUARAN:
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/local/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 bergantung pada highgui opencv.H perpustakaan dan oleh itu termasuk -lcvaux -lml -lcxcore dan -lcv dependencies ke dalam perintah kompilasi tidak perlu. Versi perintah kompilasi yang dipendekkan akan kelihatan seperti ini:

$ g ++ -i/usr/lokal/termasuk/opencv -lhighgui penukaran imej.C -O penukaran imej

Akibatnya, kebergantungan perpustakaan program telah dikurangkan:

$ ldd image-conversion | grep tempatan

PENGELUARAN:
libhighgui.Jadi.2.0 =>/usr/local/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, terpulang kepada anda bagaimana anda menyusun contoh berikut dalam artikel ini. Perlu diingat bahawa perintah penyusun pertama termasuk pkg-config akan dapat menyusun semua contoh. Walau bagaimanapun, ia boleh menghasilkan binari dengan kebergantungan yang berlebihan.

Paparkan gambar

Pada ketika ini, kami dapat menukar jenis imej dan mengesahkan penerangan meta dengan arahan fail. Sudah tiba masanya untuk memaparkan imej pada skrin dan mengesahkan secara visual bahawa ia ditukarkan dengan betul. Program contoh berikut akan memaparkan imej pada skrin:

#include "highgui.H "
int main (int argc, char ** argv)
// cvloadImage menentukan jenis imej dan mencipta datastruktur dengan saiz yang sesuai
IpLimage* img = cvloadImage (argv [1]);
// Buat tetingkap. Nama tetingkap ditentukan oleh hujah yang dibekalkan
cvnamedWindow (argv [1], cv_window_autosize);
// Paparkan gambar di dalam dan tetingkap. Nama tetingkap ditentukan oleh hujah yang dibekalkan
cvShowImage (argv [1], img);
// tunggu selama -lamanya untuk kekunci
cvwaitKey (0);
// Penunjuk pelepasan ke objek
cvReleaseImage (& img);
// hancurkan tingkap
cvDestroyWindow (argv [1]);

CATATAN: Kembali ke bahagian Penukaran Imej di atas, jika anda memerlukan bantuan mengenai cara menyusun program OpenCV ini.

Pelaksanaan program imej paparan ini dengan gambar.JPG yang dihasilkan di bahagian sebelumnya akan memaparkan imej ini pada skrin:

$ paparan-imej imej.JPG

PENGELUARAN:

Gaussian licin

Anda juga boleh cuba membuat transformasi imej yang mudah menggunakan kaedah lancar Gaussian. Tambahkan baris berikut ke dalam kod imej paparan 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.H "'Arahan.

Ini akan menggabungkan kaedah lancar Gaussian yang berpusat pada setiap piksel dengan kawasan 9 x 9 ke dalam imej output. Selepas penyusunan dan pelaksanaan output berikut akan dibentangkan:
PENGELUARAN:

Main video

Bahagian ini merangkumi kod program yang akan membuat pemain video mudah menggunakan perpustakaan opencv. Contoh video, pokok.avi boleh didapati di opencv-2 anda.0.0 direktori di mana anda telah mengekstrak fail sumbernya (OpenCV-2.0.0/sampel/c/pokok.avi):

#include "cv.H "
#include "highgui.H "
// Inisialisasi pembolehubah global
int g_slider_position = 0; // kedudukan trackbar
Cvcapture* g_capture = null; // struktur untuk membuat input video
// rutin dipanggil apabila pengguna menggerakkan gelangsar trackbar
void onTrackBarslide (int pos)
CVSetCaptureProperty (
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);

int main (int argc, char ** argv)
// Buat tetingkap dengan saiz yang sesuai. Nama Windows ditentukan dengan nama fail
// dibekalkan sebagai hujah
cvnamedWindow (argv [1], cv_window_autosize);
// Buka video
g_capture = cvCreateFileCapture (argv [1]);
// Tetapkan kedudukan baca dalam unit bingkai dan dapatkan jumlah bingkai
int bingkai = (int) cvgetCaptureProperty (
g_capture,
Cv_cap_prop_frame_count
);
// Jangan buat Treackbar jika video tidak termasuk maklumat
// mengenai bilangan bingkai
jika (bingkai!= 0)
CvCreateTrackBar (
"Kedudukan",
argv [1],
& g_slider_position,
bingkai,
ontrackbarslide
);

// Paparkan bingkai video mengikut bingkai
Bingkai iPlimage*;
sementara (1)
bingkai = cvQueryFrame (g_capture);
jika ( !bingkai) rehat;
cvShowImage (argv [1], bingkai);
// set trackbar ke kedudukan bingkai semasa
cvSetTrackBarpos ("kedudukan", argv [1], g_slider_position);
g_slider_position ++;
char c = cvwaitKey (33);
// berhenti jika ESC ditekan
jika (c == 27) rehat;

// Memori Percuma
cvReleaseCapture (& g_capture);
cvDestroyWindow (argv [1]);
kembali (0);

CATATAN: Kembali ke bahagian Penukaran Imej di atas, jika anda memerlukan bantuan mengenai cara menyusun program OpenCV ini.

Laksanakan program OpenCV baru anda dan sebagai hujah membekalkan fail video:

 $ ./pemain video ~/opencv-2.0.0/sampel/c/pokok.avi

PENGELUARAN:

Input dari kamera video

Tujuan bahagian ini adalah untuk memberikan beberapa petua mudah mengenai cara mengkonfigurasi kamera pada sistem linux dan bagaimana mengesahkan bahawa kamera video anda diiktiraf oleh sistem anda dengan betul. Apabila kamera anda siap, anda akan dibentangkan dengan program mudah yang mampu memaparkan 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 (Karmic Koala) adalah prosedur Plug & Play yang mudah. Berikut adalah beberapa petunjuk bagaimana untuk mengesahkan bahawa kamera anda telah diiktiraf oleh sistem anda:

CATATAN:
Output anda akan berbeza !

$ lsusb

PENGELUARAN:
Bus 002 Peranti 003: ID 046D: 0990 Logitech, Inc. QuickCam Pro 9000
Bas 002 Peranti 001: ID 1D6B: 0002 Linux Foundation 2.0 hub akar
BUS 001 Device 002: ID 045E: 00D1 Microsoft Corp. Tetikus optik dengan roda kecondongan
Bas 001 Peranti 001: ID 1D6B: 0001 Linux Foundation 1.1 hub akar

Perintah LSUSB mendedahkan jenis kamera yang dipasang ke dalam sistem anda. Output arahan LSUSB tidak perlu bermakna kamera anda kini bersedia untuk digunakan. Mari kita lihat sama ada beberapa modul dikaitkan dengan video:

$ lsmod | video grep

PENGELUARAN:
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 kelihatan sangat menjanjikan. Kamera saya menggunakan modul UVCVideo. Sekiranya anda tidak melihat apa -apa outtut atau anda hanya melihat output yang tidak berkaitan dengan peranti kamera anda, anda mungkin perlu mengkompilasi kernel anda atau memasang modul yang sesuai.

Sekarang kita perlu mencari fail peranti yang sepadan dengan kamera anda. Untuk melakukan itu, kami menggunakan utiliti XAWTV:

CATATAN: Sekiranya arahan XAWTV tidak boleh dipasang, anda perlu memasang pakej XAWTV.

$ xawtv -hwscan

PENGELUARAN:
Ini adalah XAWTV-3.95.DFSG.1, berjalan di Linux/i686 (2.6.26-2-686)
Mencari peranti yang ada
Port 65-96
Jenis: XVideo, Scaler Imej
Nama: NV Video Blitter

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

Fail peranti yang diasingkan dengan kamera saya /dev /video0 . Anda juga boleh melihat ralat pada terminal anda yang mengatakan: Buka /Dev /Video0: Kebenaran ditolak. Untuk menyelesaikan masalah ini, anda perlu menjadikan diri anda sebagai sebahagian daripada kumpulan "video". Sekarang uji kamera anda dengan arahan Linux berikut:

$ xawtv -c /dev /video0

Jika anda mempunyai beberapa masalah dalam beberapa langkah sebelumnya, berikut adalah beberapa pautan, yang boleh membantu anda menyelesaikan masalah anda:

  • Keserasian kamera linux opencv
  • Linux Webcam Howto
  • Kamera yang disokong menggunakan pemandu SPCA5XX
  • Kamera yang disokong menggunakan pemandu UVCVideo

Untuk menggunakan kamera dengan perpustakaan OpenCV adalah mudah untuk menulis program untuk memainkan video. Salin kod sumber yang dibuat sebelumnya dari program pemain video anda dan Tukar Baris:

Cvcapture* capture = cvCreateFileCapture (argv [1]);
ke:
Cvcapture* capture = cvCreateCamerAcapture (0);

Jadi keseluruhan kod akan kelihatan serupa dengan yang di bawah:

#include "highgui.H "
int main (int argc, char ** argv)
cvnamedWindow ("Contoh2", cv_window_autosize);
Cvcapture* capture = cvCreateCamerAcapture (0);
Bingkai iPlimage*;
sementara (1)
bingkai = cvQueryFrame (menangkap);
jika ( !bingkai) rehat;
cvShowImage ("Contoh2", bingkai);
char c = cvwaitKey (33);
jika (c == 27) rehat;

cvReleaseCapture (& capture);
cvDestroyWindow ("Contoh2");

Perhatikan bahawa fungsi cvCreateCamerAcapture () tidak mengambil sebarang fail atau hujah peranti tertentu. Dalam kes ini OpenCV akan mula menggunakan kamera pertama yang tersedia dalam sistem anda. Menyusun dan melaksanakan program ini dan jika semuanya sampai ke tahap ini, anda harus melihat diri anda di skrin anda.

CATATAN: Kembali ke bahagian Penukaran Imej di atas, jika anda memerlukan bantuan mengenai cara menyusun program OpenCV ini.

Tulis fail avi dari kamera

Contoh terakhir akan cuba membaca input dari kamera dan menuliskannya ke fail. Sementara itu, program ini juga akan memaparkan tetingkap dengan aliran video input kamera. Input video disimpan ke fail yang dibekalkan sebagai hujah pada baris arahan. Codec yang digunakan ditentukan oleh Fourcc (empat kod aksara) mjpg yang dalam kes ini adalah gerakan jpeg. Program sampel ini sangat asas dan terdapat banyak ruang untuk penambahbaikan:

#include 
#include
utama (int argc, char* argv [])
Cvcapture* capture = null;
menangkap = cvCreateCamerAcapture (0);
IpLimage *bingkai = cvQueryFrame (menangkap);
// Dapatkan saiz bingkai yang akan digunakan oleh struktur penulis
Saiz cvsize = cvsize (
(int) cvgetCaptureProperty (menangkap, CV_CAP_PROP_FRAME_WIDTH),
(int) cvgetCaptureProperty (menangkap, cv_cap_prop_frame_height)
);
// mengisytiharkan struktur penulis
// Gunakan empatcc (empat kod aksara) mjpg, gerakan jpeg codec
// fail output ditentukan oleh hujah pertama
Cvvideowriter *writer = cvCreateVideoWriter (
argv [1],
Cv_fourcc ('m', 'j', 'p', 'g'),
30, // Tetapkan FPS
saiz
);
// Buat tetingkap baru
CvnamedWindow ("Rakaman ... tekan ESC untuk Berhenti !", Cv_window_autosize);
// Tunjukkan penangkapan di tetingkap dan rekod ke fail
// rekod sehingga pengguna memukul kunci ESC
sementara (1)
bingkai = cvQueryFrame (menangkap);
jika ( !bingkai) rehat;
cvshowimage ("Rakaman ... tekan ESC untuk berhenti !", bingkai);
cvWriteFrame (penulis, bingkai);
char c = cvwaitKey (33);
jika (c == 27) rehat;

CvReleAsEvideOwriter (& Writer);
cvReleaseCapture (& capture);
CVDestroyWindow ("Rakaman ... tekan ESC untuk Berhenti !");
pulangan0;

Dengan mengandaikan bahawa anda menyimpan dan menyusun program ini sebagai "simpan kamera-input" anda boleh merakam video ke fail video.avi dengan arahan ini:
CATATAN: Kembali ke bahagian Penukaran Imej di atas, jika anda memerlukan bantuan mengenai cara menyusun program OpenCV ini.

$ ./Simpan-kamera-input video-fail-fail.avi

Kesimpulan

Artikel ini harus memberi anda permulaan yang baik ke perpustakaan OpenCV dari perspektif pemasangan. Contoh yang dibentangkan tidak banyak kaitan dengan penglihatan komputer itu sendiri, tetapi mereka memberikan ujian yang baik untuk pemasangan openCV anda. Walaupun dari contoh -contoh OpenCV mudah ini juga jelas bahawa OpenCV adalah perpustakaan yang sangat bertamadun kerana dengan hanya beberapa baris kod opencv, anda dapat mencapai hasil yang hebat. Komen anda mengenai artikel ini sangat dihargai kerana ia mungkin memberi kesan yang besar terhadap kualiti artikel. Terdapat lebih banyak lagi mengenai OpenCV, jadi tunggu dengan subcribing ke Linuxconfig.suapan rss org (sudut kiri atas).

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Cara Dual Boot Kali Linux dan Windows 10
  • Perisian penyuntingan video terbaik di Linux
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Pembaca PDF Terbaik untuk Linux
  • Cara Mendapatkan Alamat MAC di Linux
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Manjaro Linux Windows 10 Dual Boot
  • Fail Konfigurasi Linux: 30 teratas yang paling penting