Opencv moruq pi quraşdırma. OpenCV (Linux) quraşdırılması

10.09.2021

Bu yaxınlarda təsvirin tanınması ilə bağlı layihələrdən birini həyata keçirərkən, Raspberry PB2 tək lövhəli mikrokompüterdə OpenCV kompüter görmə kitabxanasını quraşdırmaq ehtiyacımız yarandı.

İnterneti araşdırdıqdan və təcrübələrə bir az vaxt sərf etdikdən sonra bu problemi uğurla həll etdik. Nəticə, Raspberry-də OpenCV-dən istifadə etməyə qərar verən hər kəslə bölüşməkdən məmnun olduğumuz kiçik bir təlimatdır.

Beləliklə: OpenCV-nin quraşdırılması:

Nümunədə biz opencv 2.4.9 versiyasından istifadə edirik.

Əvvəlcə sistemimizi yeniləməliyik:

sudo apt-get yeniləməsi sudo apt-get yeniləməsi

İndi əlavə kitabxanalar quraşdırmalıyıq:

sudo apt-get -y install build-essential cmake cmake-curses-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngffffff4lib libf4xti alətlər libeigen3-dev sudo apt-get -y install libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbgstreamer0.libgstream.libg10-dev -ffmpeg libxine-dev libxine1- Bin libunicap2 libunicap2-dev swigi-0 libv4l-0 libv4l-0 dev python-libpy-0.6-dev libgtk2.0-dev libgtk2.0-dev swig -0 libgtk2.0-dev pkg-config libxvidcore-dev libx264-dev libavcodec-dev libavformat-dev libqt4-dev libqt4-opengl-dev libjasper-dev

Kitabxanaların quraşdırılmasını bitirdikdən sonra OpenCV-nin quraşdırılmasına keçirik. Quraşdırma zamanı elə bir vəziyyət yarana bilər ki, sisteminiz üçün bəzi kitabxanalar olmaya bilər və siz nəyin çatışmadığına baxmaq və əlavə olaraq çatdırmaq lazımdır.

Arxivimizi yükləyəcəyimiz bir qovluq yaradaq:

mkdir~/opt/opencv/cd ~/opt/opencv wget-O openCV-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download

İndi arxivimizi açmalıyıq. Bunu etmək üçün əmrdən istifadə edirik:

açın openCV-2.4.9.zip

Nəticədə biz openCV-2.4.9 qovluğunu yaradacağıq. Ona gedin və buraxılış qovluğunu yaradın

CD openCV-2.4.9 mkdir azad edin CD azad edin

OpenCV-ni konfiqurasiya etməyin vaxtı gəldi. Üçüncü tərəf parametrlərinə ehtiyacınız yoxdursa, standart konfiqurasiyadan istifadə edə bilərsiniz (bunu etmək üçün sadəcə "c" düyməsini basın). Siz cmake-i işə saldığınız zaman təyin edə biləcəyiniz parametrlərin siyahısı görünəcək (aşağıdakı şəkildə göstərildiyi kimi)

Beləliklə, başlayaq:

cmake ../

(Keş konfiqurasiyası boşdursa, "c" düyməsini basın)

"c" düyməsini basın

Quraşdırma tamamlandıqdan sonra davam etmək üçün yenidən “c” düyməsini və makefile yaratmaq üçün “g” düyməsini sıxın.

İndi hər şey konfiqurasiya olunub və siz etmək lazım olan tək şey etməkdir. Bu proses orta hesabla təxminən 10 saat çəkəcək.

etmək sudo quraşdırmaq

Bu quraşdırmanı tamamlayır. Yalnız funksionallığı yoxlamaq qalır.

main.cpp faylını yaradın

#daxildir #daxildir ad sahəsi cv istifadə; int main(int argc, char** argv) ( if (argc != 2) ( printf("istifadə: n"); return -1; ) Mat şəkli; şəkil = imread(argv, 1); if (!image.data) ( printf("Şəkil datası yoxdur n"); return -1; ) imshow("Şəkil göstər" , image waitKey(0);

İndi CMakeLists.txt faylı yaratmalı və ona aşağıdakıları daxil etməlisiniz:

Cmake_minimum_required(VERSION 2.8) project(DisplayImage) find_package(OpenCV LAZIMDIR) add_executable(DisplayImage main.cpp) target_link_libraries(DisplayImage $(OpenCV_LIBS))

Etməli olduğumuz yeganə şey tərtib etmək və işə salmaqdır

cmake . etmək

başlayaq

./DisplayImage path_to_foto.jpg

Hər şey qaydasındadırsa, nəticədə fayl yolu parametrində göstərdiyiniz şəkli görəcəyik.

Leonid, Sidstudio-da proqramçı

Bir vaxtlar Arduino və Raspberry Pi istifadə edərək robot avtomobillərin yığılması ilə maraqlanırdım. Tikinti dəsti ilə oynamağı xoşlayırdım, amma daha çox şey istəyirdim.

Və bir gün Aliexpress-də gəzərkən tank üçün alüminium şassi ilə qarşılaşdım. Bu yaradılış plastik avtomobillərlə müqayisədə araba ilə müqayisədə Ferrari kimi görünürdü.

üçün özümə hədiyyə verdim Yeni il, tank gəldi, yığıldı və sonra onu canlandırmaq lazım idi. Raspberry-nin özünü, güc çeviricisini, motor kontrollerini və batareyanı maşından çıxartdım. Bütün bunlar tanka quraşdırıldı və xoşbəxt işləyirdi.

Tank çəkilməlidir və növbəti addım kameranın görünüşü idi. Kamera qutusu ilə təxmin edə bilmədim - açıq olanda kameranı saxlamırdı, lakin bərk-bərk bağlananda kamera o qədər sıx idi ki, kameranın obyektivi uçdu. Əzab çəkdikdən sonra mən sadəcə kameranı izolyasiya lenti ilə korpusun qapağına yapışdırdım. İndi tank nəinki otağı gəzə, həm də fotoşəkil çəkə bilərdi.

Evdəki avtomobillər üzərində bir tankın ciddi üstünlüyünü qeyd etmək lazımdır - tırtıl yollarında onun sərt döşəmədə və ya xalçada sürməsinin heç bir fərqi yoxdur. Təkərli nəqliyyat vasitələri yumşaq xalçanın üzərində sürüşərək dönə bilməyəcək dərəcədə olur.

Sonra kameranın fotoşəkillərinə əsaslanaraq tankı avtonom naviqasiya istiqamətində inkişaf etdirmək istədim. Mən kompüter görmə dünyasına dalmalı və OpenCV-ni kəşf etməli oldum. Hər şey rəngin və konturun tanınması ilə başladı - kağıza qırmızı dairə çap etdim, onu televizora yapışdırdım və dairə tapılana qədər robotu fırladım.

İdeya otaqdakı nəzərə çarpan obyektləri (divan, televizor, stol) çoxrəngli dairələrlə işarələmək və robota rənglə hərəkət etməyi öyrətmək idi.

OpenCV-dən istifadə edərək, istədiyiniz rəngin konturları axtarıldı (məqbul tolerantlıqla), sonra konturlar arasında bir dairə axtarıldı.

Görünürdü ki, əsas problem obyektlərdən birində istədiyiniz rəngin təsadüfi bir dairəsi ola bilər.

Bununla birlikdə, əsas problem rəngin işıqlandırmadan asılı olaraq çox dəyişkən görünməsi oldu, buna görə də qırmızının (məsələn) tanındığı diapazon orijinal rəngə çox qeyri-müəyyən şəkildə bənzəyən çalarlara qədər uzanmalı idi. Və ya şəkildən istədiyiniz rəngi seçin, lakin hər halda qırmızı deyil, qəhvəyi bir kölgə idi.

Qırmızı dairə axtarın:

Import cv2 import numpy as np import sys def mask_color(img, c1, c2): img = cv2.medianBlur(img, 5) hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) maskası = cv2.inRange(c1,s) c2) maska ​​= cv2.erode(maska, Yoxdur, təkrarlamalar=2) maska ​​= cv2.dilat(maska, Yoxdur, təkrarlamalar=2) qaytarma maskası def find_contours(img): boz = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) blurred = cv2.GaussianBlur(boz, (5, 5), 0) thresh = cv2.threshold(blurred, 30, 255, cv2.THRESH_BINARY) thresh = cv2.bitwise_not(thresh) im2, cnts, hier2sfind(cnts, hier2sfind) thresh, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SADE) cp_img = img.copy() cv2.drawContours(cp_img, cnts, -1, (0,255,0), 3) qaytarın cp_img def find_circles(cv2):grayclor img, cv2.COLOR_BGR2GRAY) bulanıq = cv2.medianBlur(boz,5) dairələr = cv2.HoughCircles(tulanık,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius = img əgər dairələr yoxdursa: dairələr = np.uint16(np.around(dairələr)) i üçün dairələrdə: cv2.circle(img,(i,i),i,(255,0,0),2) cv2 .circle(img,(i,i),2,(0,0,255),3) çap "C", i,i,i qaytarın cimg def find_circle(img, rgb): dözümlülük = 4 hsv = cv2.cvtColor( rgb, cv2.COLOR_BGR2HSV) H = hsv c1 = (H - dözümlülük, 100, 100) c2 = (H + tolerantlıq, 255, 255) c_mask = mask_color(img, c1, c2) rgb = cv2.cvtColor,(v2) .COLOR_GRAY2RGB) cont_img = find_contours(rgb) circ_img = find_circles(cont_img) cv2.imshow("Şəkil", circ_img) cv2.waitKey(0) əgər __name__ == "__main__name": =s2v.ad_adı: c2.vgim img_name) rgb = np.uint8([[]]) find_circle(img, rgb)
Rəng tanınması çıxılmaz nöqtəyə çatmağa başladı, məni Haar Cascades ilə yayındırdı, bir pişik şəklini çəkmək üçün tankdan istifadə etdi. Pişik yaxşı maskalanıb, kaskadın yarı vaxtda səhv etməsinə səbəb olub (əgər kimsə bilmirsə, OpenCV xüsusi olaraq pişiklər üçün öyrədilmiş Haar kaskadı ilə gəlir - götür və istifadə et).

Bir pişiyi ovlamaq robot üçün faydalı nəticələr verdi - ov obyektini statik kamerada tutmaq həmişə mümkün olmadığı üçün iki servomotorlu ştativ (və onları Moruq vasitəsilə idarə etmək üçün PWM modulu) quraşdırdım.

Bir otağın fotoşəkillərindən nəyin sıxışdırıla biləcəyi ilə bağlı araşdırmalarımı davam etdirərək, təbii olaraq neyron şəbəkələrinə gəldim. Tensorflow dərsliyini mənimsədikdən sonra onu bir tank foto detektoru ilə emal etdim və nəticələr ümidverici idi - televizor, stol, divan, pişik və soyuducu birmənalı şəkildə tanındı.

Bu təcrübələr kompüterdə aparıldı və yalnız Raspberry Pi-yə TF-ni köçürmək qaldı. Xoşbəxtlikdən, Github-da yaşayan unikal bir insan var, o, səbirli olub, bütün asılılıqları quraşdırmaq və çoxlu saatlar toplamaq vaxtı keçib və onu sayta yerləşdirib. ümumi giriş Raspberry Pi üçün Tensorflow tərəfindən tərtib edilmişdir.

Bununla belə, mövzunun sonrakı tədqiqi aşkar etdi ki, OpenCV hələ də dayanmır və onun töhfəçiləri TensorFlow-da öyrədilmiş neyron şəbəkələri ilə inteqrasiyanı təklif edən DNN (Deep Neural Networks) modulunu buraxıblar. Bu həlli inkişaf etdirmək daha rahatdır, üstəlik TF-nin özünə ehtiyac yoxdur. Mən bir az sehr etməli oldum, çünki TF üçün Mobil SSD neyron şəbəkəsinin ən son versiyası artıq OpenCV-nin ən son versiyası tərəfindən seçilmədi. baxmalı idim
və Mobil SSD-nin işlək versiyasını yoxlayın. Üstəlik, DNN yalnız OpenCV 3.4 altında normal işləyir və mən Raspberry üçün bu versiyanı tapmadım. Mən onu özüm yığmalı oldum, çünki bu, TensorFlow ilə qarışmaqdan daha asandır. Eyni zamanda, Raspbian (Stretch) proqramının ən son versiyası üçün OpenCV tərtib etmək mümkün olmadı, lakin son versiya əvvəlki nəsil(Jessie) hər şey lazım olduğu kimi getdi.

DNN istifadə edən və Tensorflow istifadə etməyən nümunə kod.

Obyekt adlarına cavabdeh olan bir neçə fayl TF-dən çıxarıldı və TF-nin özündən asılılıq aradan qaldırıldı (yalnız fayldan oxuma var idi).
GitHub-da mənbə kodu.

Cv2-ni cv olaraq idxal edin import tf_labels import sys DNN_PATH = "---path-to:ssd_mobilenet_v1_coco_11_06_2017/frozen_inference_graph.pb" DNN_TXT_PATH = "--path-to:ssd_mobilenet_v1PATH-" _label _map.pbtxt " tf_labels.initLabels(PATH_TO_LABELS) cvNet = cv.dnn.readNetFromTensorflow(pb_path, pb_txt) img = cv.imread(sys.argv) sətirləri = img.shape cols = img.shape cvnblmc(img.setd.IvNet) , 1.0/127.5, (300, 300), (127.5, 127.5, 127.5), swapRB=Doğru, crop=Yanlış)) cvOut = cvNet.forward() cvOut-da aşkarlanması üçün: xal = float(aşkar).2 əgər xal 5 > 0 olarsa : sol = int(aşkarlama * cols) yuxarı = int(aşkarlama * sıra) sağ = int(aşkarlama * cols) aşağı = int(aşkarlama * sıra) etiket = tf_labels.getLabel(int(aşkar)) çap (etiket, xal, sol , yuxarı, sağ, aşağı) text_color = (23, 230, 210) cv.rectangle(img, (sol, yuxarı), (sağ, aşağı), text_color, qalınlıq=2) cv.putText(img, label, () sol , yuxarı), cv.FONT_HERSHEY_SIMPLEX, 1, text_color, 2) cv.imshow("img", img) cv.waitKey()
Ümumiyyətlə, tank fotoşəkilləri artıq neyron şəbəkə tərəfindən tanınır və bu, oriyentirlərin tanınması baxımından naviqasiyada çox mühüm addımdır. Ancaq tam naviqasiya üçün yalnız şəkillər kifayət deyildi; maneələrə qədər olan məsafələri ölçmək lazım idi. Robot əks-səda siqnalını belə əldə etdi. Balıq tapançasını Raspberry-yə qoşmaq üçün bir az işləmək lazımdır - balıq axtaran 5V-də siqnal qaytarır, Raspberry isə 3,3V alır. Dizdə bu problem əsasən beyin lövhəsindəki rezistorlarla həll olunur, amma robotda belə səs-küy yaratmaq istəmədim. Nəticədə, lazım olan hər şeyi edən və dırnaq ölçüsündə olan Level Shifter çipi tapıldı.

Bundan əlavə, mən narahatam görünüş robot - Mikrosxemlərin və əks-səda siqnalı olan kameranın kartona yapışdırılması çox xoşuma gəlmədi. Dünyamızda texnologiyanın inkişafı bizə vaxt və pul sərf edərək lazerlə plastik kəsməyə imkan verir. Ümumiyyətlə, bir lazer maşını olan bir atelye tapdım, bu gözəl maşın üçün təlimatları öyrənmək üçün bir az vaxt sərf etdim və ilk cəhddə deyil, mikrosxemlər üçün panelləri və əks-səda siqnalı olan bir kameranı kəsdim.

Hər şey avtonom naviqasiya üçün hazırdır, lakin tapşırıq o qədər də sadə deyildi və ilk cəhddə bir az itirdim. Fasilə vermək, hər şeyi düşünmək və analoqları öyrənmək qərarına gəldim. Bəlkə də bu naviqasiya ayrı bir məqalə üçün bir mövzu kimi xidmət edəcəkdir.

Robotun sonrakı istifadə üçün əsas kimi təqdim etdiyi REST interfeysi:

GET /ping GET /versiya GET /name GET /dist POST /fwd/on POST /fwd/off POST /geri/on POST /geri/off POST /sol/on POST /sol/off POST /sağ/on POST /sağ /off POST /şəkil/make GET /photo/:phid GET /photo/list POST /cam/up POST /cam/down POST /cam/sağ POST /cam/left POST /detect/haar/:phid POST /detect/ dnn/:phid

Kod birləşməsini xatırlamadan və ya açardan istifadə etmədən sinənizi yad gözlərdən qoruyun. Üzünüz sinəni açmaq üçün açar rolunu oynayacaq!

IN bu layihəüz tanıma texnologiyasından istifadə edərək sinəni açmaq üçün Raspberry Pi mikrokompüterindən və Pi kamerasından necə istifadə olunacağını göstərir.

Bu layihənin proqram hissəsi OpenCV kompüter görmə kitabxanasında təqdim olunan alqoritmə əsaslanır. Raspberry Pi bu layihə üçün ideal platformadır, çünki o, OpenCV-ni işə salmaq üçün kifayət qədər emal gücünə malikdir və ölçüsü kiçikdir, ona görə də istənilən yerə sığa bilər.

Bu layihə orta mürəkkəblikdədir. Kompilyasiya edir və quraşdırır proqram təminatı Raspberry Pi mikrokompüterində. Bənzər şeylər yaratmaq təcrübəniz varsa və komanda xəttindən istifadə etməklə probleminiz yoxdursa, bu layihənin bütün mərhələlərini keçməyə tam hazırsınız. Hər hansı bir problemlə qarşılaşsanız, Adafruit öyrənmə sisteminin yardım materiallarına da müraciət edə bilərsiniz.

Addım №1: Sinə hazırlanması

  • Pi kamerasını daxil etmək üçün sinənin yuxarı hissəsində 7/16" deşik qazın.
  • Düyməni və elektrik kabellərini daxil etmək üçün sinənin arxasında daha böyük bir deşik qazın.

Addım №2: Kilidin hazırlanması

  • Servo çevrildikdə mandala tutulacaq sinənin ön hissəsində bir sancaq quraşdırın.
  • Pi və servo mandalı dəstəkləmək üçün kiçik bir çərçivə düzəldin. Servo taxta boşqab və yivli baş vintlərindən istifadə edərək çərçivəyə bərkidilir.
  • Düz bucaq altında bir-birinə yapışdırılmış və servo qoluna bərkidilmiş iki ağac parçasından bir mandalı düzəldin.

Addım №3: Sinəni bitirmək

  • Çərçivənin, Pinin və sinənin yuxarı hissəsindəki kilidin düzgün təmasda olub olmadığını yoxlayın. Servo kilidin aşağı döndüyünə və sinənin ön hissəsindəki sancağa daxil olduğuna əmin olun.
  • Çərçivəni dəstəkləmək üçün sinənin yuxarı hissəsindən keçən sancaqlar quraşdırın.
  • Törpü və zımpara istifadə edərək sinədəki qüsurları aradan qaldırın və sonra taxta səthi istədiyiniz kimi ləkələyin.

Addım №4: Elektron komponentləri birləşdirin

  • Servo siqnal xəttini Raspberry Pi-də GPIO pin 18-ə qoşun. Servo üçün güc və torpaq batareyanın güc terminallarına qoşulmalıdır.
  • Təkan düyməsinin bir pinini Pi-nin GPIO 25 pininə və 10k ohm rezistor vasitəsilə Pi-nin 3.3V təchizatı gərginliyi pininə qoşun. Düymənin ikinci pinini Pi-nin yer pininə qoşun.
  • Batareyanın və Pi-nin torpaq kabellərini birləşdirin.
  • Pi kamerasını sinənin yuxarı hissəsindəki dəlikdən quraşdırın və kabeli Pi mikrokompüterinə qoşun.

Addım #5: OpenCV-nin tərtib edilməsi

  • Bu nöqtədə, Raspberry Pi-də OpenCV-nin ən son versiyasını quraşdırmalısınız. Təəssüf ki, əvvəlcə mənbədən OpenCV tərtib etməlisiniz, çünki köhnə binar versiyada layihədə istifadə olunan üz tanıma alqoritmləri yoxdur. Pi-də OpenCV-nin tərtib edilməsi təxminən 5 saat çəkir.
  • Pi-ni gücləndirin və terminal seansı vasitəsilə ona qoşulun.
  • OpenCV asılılıqlarını quraşdırmaq üçün aşağıdakı əmrləri yerinə yetirin:

sudo apt-get yeniləmə && sudo apt-get install build-essential cmake pkg-config python-dev libgtk2.0-dev libgtk2.0 zlib1g-dev libpng-dev libjpeg-dev libtiff-dev libjasper-dev-libavdec

  • OpenCV-nin ən son versiyası üçün mənbə kodunu yükləmək və açmaq üçün aşağıdakı əmrləri yerinə yetirin:

wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.7/opencv-2.4.7.tar.gz && tar zxvf opencv-2.4.7.tar.gz

  • OpenCV mənbə kodunu tərtib etməyə hazırlamaq üçün aşağıdakı əmrləri yerinə yetirin:

cd opencv-2.4.7 && cmake -DCMAKE_BUILD_TYPE=BURAX -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ocl=OFF

  • İcra et bu əmr OpenCV tərtibini işə salmaq üçün (nəzərə alın ki, tərtib təxminən 5 saat çəkir):
  • OpenCV tərtibini tamamladıqdan sonra Pi-ni quraşdırmaq üçün bu əmri yerinə yetirin:

Addım #6: Üzün tanınmasını sınayın

  • Bu mərhələdə sinəni açmağa imkan verəcək üz tanıma alqoritmlərini sınaqdan keçirəcəyik.
  • Bu layihə üçün proqram təminatını github deposundan endirin (haşiyə: https://github.com/tdicola/pi-facerec-box).
  • Arxivi açın və məzmunu Pi-dəki qovluğa köçürün.
  • Pi-də terminal seansı zamanı qovluğu gözdən keçirin və test skriptini işə salmaq üçün aşağıdakı əmri yerinə yetirin:

sudo python capture-positives.py

  • Skript işləyərkən, siz Pi kamerasından istifadə edərək şəkil çəkmək üçün sinə üzərində yerləşən düyməni basa bilərsiniz. Skript çəkilmiş şəkildəki bir üzü müəyyən etməyə və onu ./training/pozitiv alt kataloqunda düzgün çəkilmiş çərçivə kimi saxlamağa çalışacaq.
  • Hər dəfə şəkil çəkiləndə capture.pgm faylına çərçivə yazılır. ünvanında baxa bilərsiniz qrafik redaktoru Pi kamerasının üzünüzün şəklini necə çəkdiyini və müəyyən etdiyini müəyyən etmək üçün.
  • Düzgün nəticələr əldə etmək üçün üzünüzün 5 və ya daha çox şəklini çəkmək üçün düymədən istifadə edin. Müxtəlif bucaqlardan, fərqli işıqlandırmadan və s. şəkillər əldə etməyə çalışın. Fotolarda siz mənim əldə etdiyim üz şəkillərini görə bilərsiniz.
  • Əgər maraqlanırsınızsa, AT&T-nin sifətin tanınması verilənlər bazasından sinənin açılmasına icazəsi olmayan insanlara nümunə kimi istifadə edilə bilən şəkillərin yer aldığı ./training/negative kataloquna baxa bilərsiniz.
  • Düzgün şəkilləri qəbul etdikdən sonra düzgün və yanlış sınaq şəkillərini emal etmək və üz tanıma alqoritmini yoxlamaq üçün aşağıdakı əmrləri yerinə yetirin (qeyd edək ki, bu sınaq əməliyyatı təxminən 10 dəqiqə çəkir):

python train.py

Addım №7: Servo Konfiqurasiyası

  • Bu mərhələdə mandalı bağlamaq və açmaq üçün servo impuls genişliklərini müəyyən etmək lazımdır.
  • Raspberry Pi mikrokompüterinə və latch servoya verilən enerji ilə terminal seansında Pi-yə qoşulun. Sinənin açıq olduğundan əmin olun ki, tıxanmadan servo hərəkətini görə biləsiniz.
  • Kök kimi interaktiv Python sessiyasına başlamaq üçün aşağıdakı əmri yerinə yetirin (GPIO pinlərinə və servo hərəkət etmək imkanına malik olmalısınız):

sudo python

  • IN komanda xətti Python >>>, RPIO servo kitabxanasını yükləmək üçün bu əmri daxil edin:

RPIO idxal PWM-dən

  • Sonra, aşağıdakı əmri daxil edin:

servo = PWM.Servo()

  • Nəhayət, servo kilidini mərkəz vəziyyətinə keçirmək üçün bu əmri yerinə yetirin:

servo.set_servo(18, 1500)

  • set_servo üçün parametr 1500 mikrosaniyələrdə sürücü üçün impuls genişliyini müəyyən edir. Ekstremal dəyərlər 1000 ilə 2000 arasında dəyişir.
  • Şəkillərdə göstərildiyi kimi kilidin düzgün bağlanmasına və açılmasına səbəb olan dəyərləri əldə edənə qədər set_servo funksiyasını müxtəlif impuls genişlikləri ilə sınayın.
  • Unutmayın ki, siz servo rokkeri çıxarıb, kilidi servoda düzgün istiqamətləndirmək üçün onu yenidən qoşa bilərsiniz.
  • Dəyərlər təxmin edildikdən sonra config.py-i açın mətn redaktoru super istifadəçi hüquqları ilə və aşağıdakı dəyərləri dəyişdirin:
  • LOCK_SERVO_UNLOCKED-i mandal mövqeyinin kilidini açmaq üçün impuls eni dəyərinə bərabər təyin edin - kilidin açılması. Aparatımda düzgün dəyər 2000-dir.
  • Mandal mövqeyinin kilidli olub-olmadığını müəyyən etmək üçün LOCK_SERVO_LOCKED seçin. Mənim vəziyyətimdə bu dəyər 1100-dür.

Addım №8: Proqram təminatını işə salın

  • Üz tanınmasını yoxladıqdan və servonu kalibrlədikdən sonra proqram kodunu işə sala bilərsiniz!
  • Raspberry Pi mikrokompüterinə və latch servoya verilən enerji ilə terminal sessiyasında Pi-yə qoşulun və layihənin kök kataloquna baxın.
  • Kodu işlətmək üçün aşağıdakı əmri yerinə yetirin (diqqətli olun, çünki o, dərhal sinəni kilidləyəcək):

sudo python box.py

  • Test məlumatlarını endirdikdən sonra (bu, bir neçə dəqiqə çəkir) kameranı üzünüzə yönəldin və sifətin tanınmasına cəhd etmək üçün düyməni basın.
  • Sinə üzünüzü tanıyarsa, servo işləyəcək və kilidi açacaq. Üzünüz tanınmırsa, terminal üzünüzün test şəklinə nə qədər yaxın olduğunu göstərən bir mesaj göstərəcək.
  • Üzü tanımaq üçün çəkilmiş şəklin 2000 və ya daha az etibarlılıq səviyyəsinə malik test şəklinə uyğun olması lazımdır. Əgər üzünüz nümunə şəkil datasına uyğun gəlirsə, lakin inam aşağıdırsa, config.py-də güvən həddini dəyişə bilərsiniz (POSITIVE_THRESHOLD ayarı altında). Əgər tanınma hələ də etibarlı deyilsə, daha uyğun çəkilmiş şəkilləri yükləyin və tanınma testini yenidən həyata keçirin. Bu layihədə sifətin tanınması alqoritmi üzün işıqlandırılmasından çox asılıdır, ona görə də sınaq cəhdlərinizlə eyni işıqlandırma mənbəyinə sahib olmağa çalışın (və ya müxtəlif işıqlandırma şəraitində bir neçə əlavə şəkil əlavə edin).
  • Sinəni açdıqdan sonra onu bağlamaq üçün düyməni yenidən basın. Bunun üçün üz tanıma əməliyyatı tələb olunmur.
  • Sinə açılmaqda çətinlik çəkirsə və üzünüzü tanımırsa, set_servo əmrindən istifadə edərək servonu əl ilə kiliddən çıxarmaq vəziyyətinə keçirmək üçün servo konfiqurasiya addımlarını izləyin.

OpenCV məşhur funksiyalar kitabxanasıdır maşın görmə, robotlara ətraf aləmdəki obyektləri tanımağa imkan verir. OpenCV naviqasiya, maneələrin aşkarlanması, üz və jestlərin tanınması üçün istifadə olunur. Bu məqalə təklif edəcəkdir addım-addım təlimat Raspberry Pi 3 tək lövhəli kompüterdə OpenCV-nin quraşdırılması haqqında.

Addım 1. Boş yer

OpenCV və müxtəlif dəstək paketləri birlikdə olduqca çox yer tutur. Ən azı 16 GB-lıq bir SD kartdan istifadə etmək tövsiyə olunur. OpenCV-ni quraşdırmadan əvvəl etməli olduğunuz ilk şey fayl sistemini SD kartın bütün tutumunu əhatə edəcək şəkildə genişləndirməkdir. Bu, Raspbian konfiqurasiya menyusundan istifadə etməklə edilir. Terminala gedirik və əmri daxil edirik: $ sudo raspi-config Ən yuxarı elementi seçmək lazım olan menyu açılacaq: Enter düyməsini və sonra düyməni basın. . Bundan sonra sistemi komanda ilə yenidən başladın: $ sudo reboot Əgər SD kartınızın ölçüsü cəmi 8 GB-dırsa, lazımsız bir şeyi, məsələn, wolfram-mühərrik paketini silə bilərsiniz.

Addım 2: Asılılıqları quraşdırın

üçün tam hüquqlu iş OpenCV ilə biz mövcud paketləri yeniləməli və bir sıra yenilərini quraşdırmalıyıq. Yeniləmə ilə başlayaq.

$ sudo apt-get update $ sudo apt-get upgrade İnternet sürətindən asılı olaraq bu əməliyyatlar təxminən 5-10 dəqiqə çəkəcək. Sonra, sistemə cmake və bir neçə faydalı şey quraşdırın: $ sudo apt-get install build-essential cmake pkg-config Sonrakı məlum şəkil formatları ilə işləmək üçün paketlərdir: $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper -dev libpng12- dev Video ilə işləmək üçün paketlər: $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev Sadə ekran formaları yaratmaq üçün paketlər. Bütün bunlara sonra da lazım olacaq.

$ sudo apt-get install libgtk2.0-dev Matrislər üzərində xüsusi sürətləndirilmiş əməliyyatlar.

$ sudo apt-get install libatlas-base-dev gfortran Python başlıq faylları 2.7 və 3 $ sudo apt-get quraşdırma python2.7-dev python3-dev

Addım 3. OpenCV-ni depodan yükləyin Əvvəlcə arxivi OpenCV-nin özü ilə yükləyin. Bunun üçün /home/pi/Yükləmələr qovluğuna keçin: $ cd ~/Yükləmələr wget istifadə edərək arxivi endirin və arxivdən çıxarın: $ wget -O opencv.zip https://github.com/opencv/opencv/archive/ master .zip $ unzip opencv.zip Sonra, paketi əlavə materiallarla yükləyin - opencv_contrib.$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/master.zip $ unzip opencv_contrib.zip Addım 4: Virtual Mühit OpenCV-ni daha da quraşdırmadan əvvəl biz hər şeyi bir az təmizləyəcəyik. Gəlin gələcək təcrübələrimizi əsas hissədən qoruyacaq virtual mühit yaradaq
  1. əməliyyat sistemi
  2. . Bu, çıxarmaq lazım olduqda faydalıdır
  3. cari versiya
  4. opencv və yenisini quraşdırın. Pip paket menecerini quraşdırmaqla başlayaq: $ wget https://bootstrap.pypa.io/get-pip.py $ sudo python get-pip.py Sonra virtual mühit menecerini quraşdırın: $ sudo pip install virtualenv virtualenvwrapper $ sudo rm -rf ~ /.cache/pip ~/.profile faylında saxlanılan istifadəçi profilinə bir neçə sətir əlavə edək: $ echo -e "\n# virtualenv və virtualenvwrapper" >> ~/.profile $ echo "export WORKON_HOME=$HOME/.virtualenvs " >> ~/.profile $ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile İndi aşağıdakı üç addımı yerinə yetirməlisiniz:
bütün terminal pəncərələrini bağlayınÜmumiyyətlə, indi hər girişdə bu əmri daxil etmək tövsiyə olunur. Sonra “cv” adı ilə virtual mühit yaradırıq: $ mkvirtualenv cv -p python3 Virtual mühitin düzgün qurulduğunu yoxlamaq üçün Raspberry Pi-ni yenidən başladın: $ sudo reboot Terminal açın və ətraf mühitə daxil olun: $ source ~ /.profile $ workon cv Virtual mühitdə olduğumuzu göstərən göstərici komanda xəttinin əvvəlində bir prefiks (cv) olacaq.
OpenCV qurmazdan əvvəl ediləcək ən son şey NumPy riyaziyyat paketini quraşdırmaqdır: $ pip install numpy

Addım 5. OpenCV-ni tərtib edin və quraşdırın

Əvvəllər yaradılmış virtual mühitdə olarkən, ilə qovluğa keçək mənbə kodları OpenCV-ni açın və aşağıdakı əmrləri işə salın: $ cd ~/Yükləmələr/opencv-master $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMDESPA_D=MOTO_VAC=OVAC___ Yükləmələr /opencv_contrib-master/modules -D BUILD_EXAMPLES=ON .. Prosedurun sonunda quraşdırma üçün hazır olan OpenCV komponentlərinin siyahısı görünəcək.
Python-a həsr olunmuş bölmə qırmızı rənglə vurğulanır. Yaxşı, indi ən maraqlı hissə - ikili faylların yığılması. Cari qovluğu tərk etmədən make əmrini yerinə yetirin: $ make -j4 j4 paketi bütün 4 Raspberry Pi nüvəsindən istifadə edərək quracağımız deməkdir. Bu, proseduru çox sürətləndirəcək, lakin belə şərtlərdə belə montaj təxminən bir saat yarım çəkəcəkdir. Quraşdırma bu kimi bir şeylə bitməlidir:
bütün terminal pəncərələrini bağlayınŞəxsən, montaj zamanı sistem bir neçə dəfə dondu. Yəni siçan belə yerindən tərpənmirdi. Gücü söndürmək/yanmaq və -j2 açarı ilə quruluşu yenidən başlatmaq kömək etdi. Ediləcək son şey tərtib edilmiş binari python qovluğuna quraşdırmaqdır: $ sudo make install $ sudo ldconfig

Addım 6: Quraşdırmanı tamamlayın

Quraşdırıldıqdan sonra python iş qovluğunda cv2.cpython-34m.so faylı görünəcək, onun adını daha euphony bir şeyə dəyişdirmək lazımdır: $ cd /usr/local/lib/python3.4/site-packages/ $ sudo mv cv2.cpython -34m.so cv2.so Virtual mühitdə olarkən OpenCV-dən istifadə edə bilməmiz üçün oradan cv2.so ilə nəticələnən keçid yaradacağıq: $ cd ~/.virtualenvs/cv/lib/python3.4/ site paketləri/ $ ln -s /usr/local/lib/python3.4/site-packages/cv2.so cv2.so

Addım 7: Yoxlayın

Quraşdırmanın düzgünlüyünü yoxlamaq üçün virtual mühitə keçək, python interpretatorunu işə salaq və cv2 modulunu idxal etməyə çalışaq: $ source ~/.profile $ workon cv $ python >>> import cv2 >>> cv2.__version__ "3.1 .0" >>> Hamısı budur - OpenCV uğurla quraşdırılıb! Növbəti dərslərdə biz robototexnika ilə bağlı videokameradan şəkillərin işlənməsi ilə məşğul olacağıq.

Açıq Mənbəli Kompüter Görmə Kitabxanası

Bu, Python proqramlaşdırma dili üçün kitabxanadır və kompüter görmə ilə işləməyi asanlaşdırır (maşın öyrənmə bölməsi).
Anlamaq üçün, OpenCV olmasaydı, üzün tanınması (klassik) prosesini nəzərdən keçirməyi təklif edirəm:
  1. Hər şeydən əvvəl, insanların üzləri olan və olmayan böyük bir şəkillər kolleksiyasına sahib olmalısınız.
  2. Bu dəsti strukturlaşdırmaq - hər bir təsviri izahatla əlaqələndirmək: onun üzərində insan simasının olub-olmaması.
  3. Strukturlaşdırılmış kolleksiyanı təlim və nəzarət dəstinə bərabər və düzgün şəkildə bölün.
  4. Sonra, həm təlimdə, həm də testdə məqbul tanınma nəticəsini verən neyron şəbəkə yaratmaq üçün müxtəlif maşın öyrənmə üsullarını ("ağac", "təsadüfi meşə", "qradiyent eniş", "ən yaxın qonşular" və s.) axtarıb birləşdirərək nümunələr. Bu mərhələ aylar çəkə bilər(!) (mövcud hesablama resurslarından asılı olaraq)
OpenCV tərtibatçıları isə hər kəsə müxtəlif proqramlar üçün pulsuz birinci dərəcəli kompüter görmə alqoritmləri dəsti təqdim edirlər - götürün və istifadə edin!)

XƏBƏRDARLIQ:

  • Aşağıda Raspbian-da OpenCV-nin quraşdırılmasının incəlikləri müzakirə olunur, lakin təlimatlar Debian ailəsinin bütün paylamaları üçün olduqca universaldır.
  • OpenCV-nin quraşdırılması uzun vaxt aparır (2-3 saat), lakin bir gedişdə bütün yolu keçmək lazım deyil - dayanıb eyni yerdən davam edə bilərsiniz.
  • Tələb olunacaq.
  • Raspberry Pi 3-də quraşdırmanı ən son versiyanın təmiz, təzə quraşdırılmış Raspbian Desktop-da həyata keçirəcəyik. sm.

Hazırlıq

7 GB tələb edir boş yer flash sürücüdə.
Fləş sürücüdə boş yerin mövcudluğunu yoxlamaq üçün terminalı açın (Ctrl + Alt + T) və əmri daxil edin
df -h
Kifayət qədər yer yoxdursa, flash sürücünün ölçüsü buna imkan verməli olsa da, genişləndiyini yoxlamağa dəyər. fayl sistemi bütün mövcud həcm üçün (paylamanın yeni versiyalarında bu, indi standart olaraq edilir - 2018-ci ilin aprelindən).
Sistem çox yeni deyilsə, o zaman əsas parametrlər bölməsinə keçə bilərsiniz
sudo raspi-konfiqurasiya
və birinci elementi seçin “1. Fayl Sistemini genişləndirin" və sonra Raspberry-ni yenidən başladın

Tələb olunan paketlərin quraşdırılması

Yeniləmələr uzun müddət həyata keçirilməyibsə, onları indi etmək məsləhətdir
sudo apt-get update -y && sudo apt-get upgrade -y
Mənbədən proqramlar qurmaq üçün paketlər toplusunu quraşdırın
sudo apt-get install build-essential cmake pkg-config -y
Sonra müxtəlif formatların qrafik məzmunu ilə işləmək üçün bir sıra kitabxanalar quraşdırırıq
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev -y
Sonra, eyni video məzmunu üçün.
sudo apt-get quraşdırma libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y sudo apt-get quraşdırma libxvidcore-dev libx264-dev -y
Ekranda şəkilləri və interfeysləri göstərmək üçün highgui modul kompilyasiya paketini quraşdırın
sudo apt-get install libgtk2.0-dev -y
Və nəhayət, xətti cəbr kitabxanası və Fortran tərtibçisi:
sudo apt-get install libatlas-base-dev gfortran -y

Python

Sonra Python (və ya Python) quraşdırın. Əsas versiyalar 2,7 və 3 artıq Raspbian-da qurulub, lakin əlavə paketlərə ehtiyac olacaq:
sudo apt-get quraşdırma python2.7-dev python3-dev -y
Sonra, Python (və ya Python) üçün virtualenv və virtualenvwrapper utilitlərini quraşdırmağı məsləhət görürəm - bu, "və yalnız Python üçün, seçilmiş "virtual mühitdə" Python ilə işləməyə imkan verir - müəyyən paketlər toplusudur. versiyalar (Ruby qiymətli dəstlərinin analoqları) - bu, müxtəlif kitabxana dəstləri (və xüsusən də kitabxanaların müxtəlif versiyaları) ilə bir neçə layihə üzərində işləyərkən rahatdır: məsələn, OpenCV 3.1 ilə Python 2.7-yə keçmək üçün yalnız birini daxil etməlisiniz. terminalda əmr. Quraşdırın:
sudo pip virtualenv virtualenvwrapper quraşdırma sudo rm -rf ~/.cache/pip echo -e "\n# virtualenv və virtualenvwrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile source ~/.profile
Bu, asılılıqları tamamlayır.
virtualenv istifadə edərək virtual mühit yaradırıq. Və sonra Python versiyasına qərar verməlisiniz - əgər məqsəd sıfırdan layihə yaratmaqdırsa, o zaman python3-ü seçməlisiniz, əks halda - python2
Python dilinin tarixi inkişafı prosesində 2.7 versiyasının aktuallığı zamanı çox şey yazılmışdır. yaxşı proqramlar. Və hətta indi, Python 2.7-nin sabit 3.5 versiyaları zamanı, hələ də unudulmur və fəal şəkildə istifadə olunur və dəstəklənir - bir filial meydana gəldi. Python kitabxanaları ilə eynidir - hamısı həm 2.7, həm də 3.5-də eyni dərəcədə yaxşı işləməyəcək.
mkvirtualenv cv -p python3
İndi yaradılmış virtual cv mühitində olduğumuza əminik. Bu, cari aktiv xəttin yanındakı konsolda “(cv)” kombinasiyası ilə müəyyən edilə bilər: Və nəhayət, massivlər və böyük ölçülü matrislərlə rahat işləmək üçün Numpy kitabxanasını quraşdırın
pip install numpy

Açıq CV-nin depodan endirilməsi

Ev kataloqunuzda kitabxana üçün bir qovluq yaradın və ona keçin
cd ~ mkdir opencv cd opencv/
OpenCV versiyasına qərar verək.
3.0 versiyasının buraxılmasından bəri, 2.4.x-in köhnə versiyaları dəstəklənməyə və buraxılmağa davam edir və onlar arasında əhəmiyyətli fərqlər var. Məsələn, əlavə modulların "töhfə" paketi yalnız 3+ yeni versiyaları üçün mövcuddur.
Gəlin “Relizlər” bölməsində layihənin ana səhifəsinə keçək. Ən son versiyanı (2.4.x.x deyil, 3+) quraşdırmağı və ən son buraxılışı götürməməyi təklif edirəm:
Beləliklə, seçim 3.4.0 versiyasına düşdü.
Yükləmə linkini əldə etmək üçün oflayn səhifəyə keçin. Relizlər bölməsinə CV deposunu açın: https://github.com/opencv/opencv/releases və keçidi seçilmiş versiyanın zip arxivinə köçürün:
Raspberry-ə qayıdaq.
/opencv qovluğunda olarkən, mənbələri yükləmək üçün əmri işlədin:
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip
bu əmr arxivi endirəcək və adını dəyişəcək opencv.zip
Gəlin yüklənmiş arxivi çıxaraq və sonra onu silək:
opencv.zip rm opencv.zip faylını açın
Əlavə modulların eyni versiyasını yükləyin və açın töhfə(bu halda - 3.4.0). Buraxılış səhifəsi. depo: https://github.com/opencv/opencv_contrib/releases
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip kilidini açın opencv_contrib.zip rm opencv_contrib.zip
Nəticə aşağıdakı kimi olmalıdır (ls əmri cari qovluğun məzmununu göstərir):

OpenCV-nin tərtibi və quraşdırılması

Gəlin bir daha əmin olaq ki, biz OpenCV üçün yaradılmış virtual mühitdəyik (Python quraşdırma bölməsi). Əgər mühit artıq yaradılıbsa, o zaman workon cv əmri ilə ona keçə bilərsiniz
Açılmış OpenCV arxivinin qovluğuna keçin (versiya və müvafiq olaraq qovluğun adı fərqli ola bilər):
cd opencv-3.4.0/
Sonra, quraşdırıcının qurulması prosesini başlamaq üçün bir sıra əmrləri yerinə yetiririk.
Bunlar 3 əmrdir - sonuncusu çox sətirlidir, içərisində XÜSUSİ Paketdən çıxarılan töhfə arxivinin qovluğuna gedən yola diqqət yetirin:
mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH= ~/opencv/opencv_contrib-3.4.0/modullar\ -D BUILD_EXAMPLES=ON ..
Quraşdırma uğurlu olarsa, aşağıdakıları görəcəyik. Aktiv hal-hazırda biz indicə OpenCV quraşdırıcısını tərtib etmək üçün bütün şərtləri yerinə yetirdik, buna görə də Python3 (və ya Python2) bölməsinə diqqət yetirin, ekran görüntüsündə olduğu kimi olmalıdır, əks halda (və ya uğursuzluq halında) yoxlayın:
  • ola bilsin ki, virtual mühit (cv) montaj zamanı işə salınmayıb - workon cv
  • Daha çox mümkün səbəb uğursuz: əlavə modullar qovluğuna yanlış mütləq yol töhfə
  • Son çarə olaraq, cari kataloqu yoxlaya bilərsiniz - seçilmiş versiyanın açılmamış OpenCV arxivinin qurma qovluğunda olmalısınız.
  • Nəhayət, əsas və töhfə paketlərinin buraxılış versiyalarının uyğun olduğundan əmin olun
Hər halda, yaxşıdır) Hər şeyi iki dəfə yoxlamalı və yenidən qurmağa başlamalısınız
Əgər montaj rəvan keçibsə, onda OpenCV quraşdırıcısını tərtib etmək üçün bütün şərtlər təmin olunub və biz indi mənbə kodundan əlavə modullarla öz təzə, sabit OpenCV paylamamızı yığacağıq!
Kompilyasiyaya başlayaq
Parametr -j4 cəlb olunan prosessor nüvələrinin sayı deməkdir, Raspberry Pi 3-də 4 var.
DİQQƏT!! Bu proses ən yaxşı halda təxminən 1,5 saat çəkəcək!!!
etmək -j4
Kompilyasiyanın ilk 5 dəqiqəsində qəza müşahidə etsək, bu, hətta ideal şəraitdə də baş verə bilər, sonra nəticəni sıfırlayırıq və kompilyasiyanı bir nüvədə işə salırıq:
təmiz etmək
Uğurlu olarsa, aşağıdakıları görəcəyik - tərtib prosesi 100% tamamlandı
Qalan şey yığılmış quraşdırıcını əmrlə işə salmaqdır
sudo make install sudo ldconfig
Budur, Raspberry-də OpenCV quraşdırılıb! İstifadəsini rahat etmək üçün onu OpenCV-yə yaradılmış Python virtual mühitinə (cv) yönləndirmək qalır. Bir kataloq müəyyən edək - OpenCV Python kitabxanası olduğundan o, digər kitabxanaların qovluğunda olmalıdır, yoxlayaq:
  • komanda ls terminalda göstərilən kataloqun məzmununu göstərir
  • komandada həqiqətən OpenCV quraşdırdığınız versiya ilə Python qovluğunu göstərməyi unutmayın
ls /usr/local/lib/python3.5/site-packages/
İstisna hallarda kitabxana yaxınlıqdakı qovluqda yerləşə bilər dist-paketlər:
ls /usr/local/lib/python3.5/dist-packages/
Gəlin bu qovluğa gedək
cd /usr/local/lib/python3.5/site-packages/
Kitabxana faylının adını dəyişdirək - bu, onu Python kodunda çağırmağı asanlaşdıracaq
sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
Faylın tam yolunu kopyalayaq.

Virtual mühit cv-nin kitabxana kataloquna keçək:
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
OpenCV-də burada simvolik əlaqə yaradaq:
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
Nəticəni ls əmri ilə yoxlayaq:

İmtahan

Yeni terminal pəncərəsi açın
source ~/.profile workon cv python import cv2 cv2.__version__
Hər şey düzgün aparılırsa, OpenCV kitabxanası səhvsiz Python konsoluna idxal olunur

İdxal xətası baş verdikdə, kitabxana faylının adının düzgün dəyişdirildiyini və ona simvolik linkin (genişləndirmə - .so) yaradıldığını, həmçinin cv virtual mühitinə uğurlu keçidi diqqətlə yoxlayın.