Spis treści:

Kurs z zatrudnieniem: „Profession Data naukowiec»
Dowiedz się więcejPodczas nauczania małych dzieci rodzice korzystają z książek z jasnymi i kolorowymi ilustracjami, takimi jak koty, kwiaty i samochody. Te jasne obrazy pomagają dzieciom rozpoznawać i odróżniać obiekty, rozwijając ich percepcję wzrokową i umiejętności poznawcze. Korzystanie z takich książek sprzyja kształtowaniu podstawowych pojęć i wzbogaca słownictwo dziecka, co jest ważnym etapem w jego rozwoju.
Komputery uczą się rozpoznawać obrazy, wykorzystując znacznie więcej danych niż ludzie. Proces ten odbywa się za pomocą technologii znanej jako widzenie komputerowe. Wizja komputerowa pozwala maszynom analizować i interpretować informacje wizualne, co otwiera nowe możliwości automatyzacji i zwiększania wydajności różnych procesów.
- Jak działa widzenie komputerowe
- Czym jest OpenCV
- Gdzie wykorzystuje się widzenie komputerowe i OpenCV
- Jak pracować z OpenCV w Pythonie
- Instalacja OpenCV
- Jak działa OpenCV widzi obrazy
- Czytanie, tryby wyświetlania i pisanie
- Zmiana koloru pikseli
- Zmiana rozmiaru obrazu
- Kadrowanie
- Obracanie
- Przykłady skryptów OpenCV
- Wyświetlanie współrzędnych punktów
- Rozpoznawanie twarzy
- Co dalej
Jak działa widzenie komputerowe Widzenie komputerowe to ważna dziedzina sztucznej inteligencji, która koncentruje się na pozyskiwaniu, przetwarzaniu i analizowaniu informacji wizualnych, w tym obrazów i wideo. Technologia ta ma szerokie zastosowanie w różnych dziedzinach, takich jak medycyna, bezpieczeństwo, pojazdy autonomiczne i przemysł. Postęp w dziedzinie widzenia komputerowego umożliwia ulepszoną analizę danych, automatyzację procesów i zwiększoną wydajność w różnych branżach. Nowoczesne algorytmy i metody uczenia maszynowego ułatwiają dokładniejsze rozpoznawanie obiektów i scen, otwierając nowe horyzonty dla innowacyjnych rozwiązania.
Przyjrzyjmy się konkretnemu przykładowi, aby zilustrować tę definicję. Spójrz na obrazek i opisz, co na nim widzisz.

Wzrok kieruje się ku poszczególnym obiektom. Okulary przeciwsłoneczne odbijają osobę trzymającą czerwoną pigułkę w jednym z soczewek, a w drugim – tę samą osobę trzymającą niebieską pigułkę w drugim. Ten kontrast między czerwonymi i niebieskimi pigułkami tworzy poczucie wyboru i symbolizuje różne ścieżki życiowe.
Matrix to jeden z najsłynniejszych filmów w świecie kina. Jeśli znasz ten film, z łatwością rozpoznasz jego tytuł, głównych bohaterów, a być może nawet przypomnisz sobie nazwiska aktorów, którzy odegrali kluczowe role. Poziom znajomości filmu często zależy od Twojej pasji do kina i liczby obejrzanych filmów. Matrix odcisnął znaczące piętno na popkulturze i nadal inspiruje widzów i filmowców na całym świecie.
Percepcja obrazu przez program zależy od jego algorytmów i bazy danych, a także od złożoności użytego kodu. Program analizuje elementy wizualne w oparciu o dostępne informacje i predefiniowane reguły, co determinuje jego interpretację i zdolność rozpoznawania obiekty.
- Prosty program rozpozna jedynie, że jest to plik z rozszerzeniem .jpg — czyli obraz.
- Bardziej złożony program otworzy plik i zrozumie, że składa się on ze zbioru pikseli o różnych kolorach. Będzie mógł wyświetlić obraz na ekranie, a nawet go edytować: zmienić kolor niektórych pikseli na inny, przyciąć obraz itd.
- Jeśli program korzysta z sieci neuronowych, przeanalizuje obraz i wyodrębni z niego dodatkowe informacje wykraczające poza techniczne: określi, gdzie na zdjęciu znajdują się okulary, dłonie, pigułki i twarze, znajdzie podobne obrazy i rozpozna film, z którego pochodzi dana klatka, oraz aktorów w niej występujących. To jest widzenie komputerowe. Zestaw wyodrębnionych informacji będzie zależał od tego, w czym program został wyszkolony.
Uczenie maszynowe służy do umożliwienia programowi analizy obrazu nie tylko jako zbioru pikseli, ale jako zbioru znanych obiektów. Ta metoda pozwala systemowi rozpoznawać i klasyfikować obiekty na obrazach, co poprawia jego zdolność postrzegać informacje wizualne. Zastosowanie algorytmów uczenia maszynowego w przetwarzaniu obrazu otwiera nowe możliwości automatyzacji i poprawy dokładności analizy danych wizualnych.

Czytaj także:
Uczenie maszynowe to dziedzina sztucznej inteligencji skupiająca się na Opracowywanie algorytmów, które mogą uczyć się na podstawie danych i poprawiać swoją wydajność w czasie. Jest to technologia, która pozwala komputerom rozpoznawać wzorce i formułować przewidywania bez konieczności programowania.
Badania uczenia maszynowego stają się coraz bardziej istotne we współczesnym świecie, ponieważ znajdują zastosowanie w różnych dziedzinach, takich jak medycyna, finanse, marketing i wiele innych. Dzięki uczeniu maszynowemu firmy mogą analizować duże ilości danych, optymalizować procesy, poprawiać doświadczenia użytkowników i podejmować bardziej świadome decyzje.
Istnieje wiele źródeł informacji na temat uczenia maszynowego, w tym kursy online, książki i społeczności specjalistyczne. Jeśli planujesz karierę w branży technologicznej, studiowanie uczenia maszynowego otworzy przed Tobą nowe możliwości i zwiększy Twoją konkurencyjność na rynku pracy. Ta wiedza będzie cennym atutem w kontekście szybkiego rozwoju cyfrowego i rosnącej ilości danych.
Widzenie komputerowe i widzenie maszynowe to dwa powiązane ze sobą pojęcia, ale ich zastosowania różnią się. Widzenie maszynowe to specjalistyczne wykorzystanie technologii widzenia komputerowego do rozwiązywania konkretnych problemów. Na przykład kamery są instalowane na liniach produkcyjnych w celu monitorowania jakości produktów na przenośniku. Jeśli kamera wykryje wadę, sygnalizuje operatorowi interwencję. Widzenie maszynowe koncentruje się zatem w wąskich zadaniach, w przeciwieństwie do szerszego podejścia do wizji komputerowej, które obejmuje różnorodne zastosowania, w tym rozpoznawanie obiektów, analizę obrazów i automatyzację procesów.
Czym jest OpenCV
OpenCV (Open Source Computer Vision Library) to potężna biblioteka open source przeznaczona do zadań wizji komputerowej. Pierwotnie została opracowana w języku C++, ale obecnie jest dostępna do użytku w językach takich jak Python, C, Java i MATLAB. OpenCV oferuje szeroki wachlarz narzędzi i algorytmów do przetwarzania obrazu i wideo, co czyni go popularnym wyborem zarówno wśród badaczy, jak i programistów. OpenCV może być używany do realizacji projektów z zakresu rozpoznawania twarzy, śledzenia obiektów, a także uczenia maszynowego i sztucznej inteligencji.
OpenCV oferuje zestaw wbudowanych algorytmów wizji komputerowej opartych na uczeniu maszynowym. Algorytmy te są prezentowane jako oddzielne moduły, każdy o unikalnej funkcjonalności. Wśród nich znajduje się kilka kluczowych rozwiązań, które znacznie upraszczają zadania przetwarzania obrazu i wideo. analiza.
- Podstawowa funkcjonalność (podstawowa funkcjonalność) — definiuje główne struktury danych i funkcje biblioteczne używane w innych modułach.
- Przetwarzanie obrazu (przetwarzanie obrazu) — umożliwia pracę ze statycznymi obrazami: prostymi zdjęciami w formatach PNG, JPG i innych.
- Analiza wideo (analiza wideo) — służy do śledzenia ruchu obiektów i pracy z tłem.
- Kalibracja kamery i rekonstrukcja 3D (kalibracja kamery i rekonstrukcja 3D) — działa na geometrii obiektów, umożliwiając tworzenie ich modeli 3D na podstawie wielu obrazów lub filmów.
- Struktura funkcji 2D (2D Features Framework) — identyfikuje fragmenty obrazu, które różnią się od innych, zapamiętując ich kontury i może znaleźć wśród nich podobne.
- Wykrywanie obiektów (wykrywanie obiektów) — znajduje obiekty takie jak twarze, samochody, ptaki itp. i inne.
- Wysoki poziom graficznego interfejsu użytkownika — umożliwia rysowanie graficznych interfejsów do wykonywania prostych operacje.
- Wejście/wyjście wideo — umożliwia odczyt i przetwarzanie plików wideo.
To tylko niewielki wybór modułów OpenCV. Aby uzyskać bardziej szczegółowe informacje na ich temat, a także na temat innych funkcji biblioteki, zalecamy zapoznanie się z oficjalną dokumentacją. OpenCV oferuje szeroką gamę narzędzi do przetwarzania obrazu i wizji komputerowej, co czyni go niezbędnym w różnych dziedzinach, takich jak uczenie maszynowe, analiza wideo i rozpoznawanie obiektów.
Gdzie wykorzystuje się wizję komputerową i OpenCV
Wizja komputerowa stała się integralną częścią naszego codziennego życia. Jest wykorzystywana w robotycznych odkurzaczach, które skutecznie omijają przeszkody, a także w nowoczesnych samochodach, które mogą samodzielnie jeździć i unikać kolizji. Co więcej, media społecznościowe wykorzystują technologię wizji komputerowej do rozpoznawania twarzy na zdjęciach, pytając, czy to naprawdę Ty. Te postępy pokazują, jak wizja komputerowa zmienia różne branże, poprawiając wygodę i bezpieczeństwo naszego życia.
Wizja komputerowa jest wykorzystywana do rozwiązywania różnych problemów, w tym Rozpoznawanie obiektów, analiza obrazu i wideo oraz automatyzacja procesów. Technologia ta jest szeroko stosowana w różnych dziedzinach, takich jak medycyna, bezpieczeństwo, motoryzacja i produkcja. Wykorzystanie wizji komputerowej znacząco zwiększa wydajność i dokładność przetwarzania informacji wizualnych, co przyczynia się do rozwoju innowacyjnych rozwiązań i poprawy jakości życia.
Rozpoznawanie tekstu na urządzeniach mobilnych stało się dostępne dzięki nowoczesnym aplikacjom. Na przykład, aby przetłumaczyć etykiety, wystarczy otworzyć aplikację tłumacza i skierować kamerę na tekst. Program automatycznie rozpozna tekst i zapewni tłumaczenie na żądany język. Jest to wygodne i skuteczne, zwłaszcza w sytuacjach, gdy trzeba szybko zrozumieć informacje w obcym języku. Korzystanie z technologii rozpoznawania tekstu znacznie upraszcza komunikację i pomaga w codziennym życiu, czyniąc podróże międzynarodowe bardziej komfortowymi.
Wyszukiwanie obrazem pozwala szybko zidentyfikować nieznane kwiaty. Wystarczy zrobić zdjęcie rośliny i przesłać je do wyszukiwarek, takich jak Google lub Yandex. Platformy te wykorzystują technologię rozpoznawania obrazu, aby dostarczyć informacji o nazwie i cechach kwiatu. Ta metoda wyszukiwania jest wygodna i skuteczna dla botaników i miłośników roślin, którzy chcą poszerzyć swoją wiedzę na temat flora.
Moderacja treści jest ważnym elementem wielu forów i sieci społecznościowych. Platformy te wykorzystują zautomatyzowane systemy do analizowania przesyłanych treści i usuwania ich, jeśli naruszają ustalone zasady. Proces moderacji pomaga utrzymać porządek i bezpieczeństwo w społecznościach internetowych oraz chroni użytkowników przed niechcianymi informacjami. Skuteczna moderacja pomaga stworzyć komfortowe środowisko do komunikacji i wymiany opinii, co czyni platformy bardziej atrakcyjnymi dla użytkowników.
Dane biometryczne umożliwiają odblokowanie telefonu lub dostęp do usług za pomocą odcisku palca lub rozpoznawania twarzy. Dane są przetwarzane za pomocą algorytmów wizji komputerowej, zapewniając wysoki poziom bezpieczeństwa i wygody. Biometria staje się niezbędnym narzędziem w nowoczesnej technologii, ułatwiając dostęp do urządzeń i chroniąc dane osobowe.
Tworzenie modeli 3D stało się możliwe dzięki wizji komputerowej, która pozwala na generowanie obiektów trójwymiarowych z wielu zdjęć lub filmów. Technologia ta jest szeroko stosowana w przywracaniu wyglądu obiektów i krajobrazów. W dziedzinie robotyki modelowanie 3D pomaga robotom poruszać się w przestrzeni, usprawniając ich nawigację i interakcję z otoczeniem. Wykorzystanie wizji komputerowej do tworzenia modeli 3D otwiera nowe horyzonty w różnych dziedzinach, takich jak architektura, design i rzeczywistość wirtualna.
Rozwój rolnictwa dzięki wykorzystaniu wizji komputerowej otwiera nowe możliwości efektywnego zarządzania zasobami. Technologie wizji komputerowej umożliwiają dokładne liczenie zwierząt gospodarskich i monitorowanie upraw. Mogą być używane do oceny zdrowia roślin i identyfikacji szkodników i chorób na wczesnym etapie, znacznie zwiększając plony i redukując ryzyko strat. Wdrożenie takich rozwiązań pomaga agronomom i rolnikom podejmować bardziej świadome decyzje, optymalizując procesy rolnicze i zwiększając ogólną wydajność produkcji. Zarządzanie produkcją: Zamiast polegać na ludziach w wykonywaniu rutynowych zadań, technologie wizji komputerowej mogą samodzielnie analizować produkty i procesy. Instalacja kamer na przenośnikach pozwala na szybką identyfikację wadliwych produktów. Taki system nie jest podatny na zmęczenie ani rozproszenie uwagi, co znacznie zwiększa skuteczność kontroli jakości na linii produkcyjnej. Wdrożenie wizji komputerowej w procesach produkcyjnych pomaga zmniejszyć liczbę błędów i zwiększyć wydajność, zapewniając wysoki poziom niezawodności i dokładności. Istnieje wiele narzędzi do tworzenia systemów wizji komputerowej, a jednym z najpopularniejszych jest OpenCV. To narzędzie biblioteczne jest aktywnie wykorzystywane przez takich gigantów technologicznych, jak Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda i Toyota. OpenCV oferuje zaawansowane możliwości przetwarzania obrazów i wideo, umożliwiając skuteczne rozwiązywanie szerokiego zakresu problemów z zakresu wizji komputerowej.
OpenCV jest aktywnie wykorzystywany w różnych dziedzinach, między innymi w monitorowaniu stanu sprzętu w kopalniach w Chinach oraz rozpoznawaniu twarzy w Japonii. Można również stworzyć program do rozpoznawania twarzy. W tym przewodniku przedstawimy podstawowe kroki, które pomogą Ci w opracowaniu takiego programu.
Jak pracować z OpenCV w Pythonie
Biblioteka OpenCV to darmowe narzędzie dostępne do użytku osobistego, edukacyjnego i komercyjnego. W tym przeglądzie omówimy główne funkcje OpenCV na przykładzie języka programowania Python i opracujemy skrypt, który będzie rozpoznawał twarze ludzi.
Aby uruchomić OpenCV, musisz zainstalować jeden z obsługiwanych języków programowania, w tym przypadku Pythona. Jeśli Python nie jest jeszcze zainstalowany na Twoim komputerze, zapoznaj się z naszym przewodnikiem instalacji. Po zainstalowaniu Pythona możesz efektywnie korzystać z biblioteki OpenCV do przetwarzania obrazów i wideo.
Bibliotekę można pobrać za pomocą narzędzi zintegrowanego środowiska programistycznego (IDE) lub z wiersza poleceń.
Zaimportuj moduł i zacznij z nim pracować.
Zanim przejdziesz do praktycznych zastosowań, ważne jest, aby zrozumieć, jak OpenCV przetwarza obrazy. Ta biblioteka traktuje obrazy jak tablice NumPy. Pozwala to na efektywną manipulację pikselami i wykonywanie różnych operacji, takich jak filtrowanie, transformacja i analiza obrazu. Zrozumienie sposobu pracy z tablicami NumPy jest kluczem do skutecznego wykorzystania OpenCV w zadaniach przetwarzania obrazu.

Przeczytaj także:
Biblioteka NumPy: kluczowe aspekty Początkujący
NumPy to jedna z najpopularniejszych bibliotek do pracy z tablicami i macierzami w języku programowania Python. Oferuje wygodne narzędzia do wykonywania obliczeń numerycznych i przetwarzania danych. Osoby rozpoczynające przygodę z NumPy powinny znać podstawowe koncepcje i możliwości tej biblioteki.
Podstawowym obiektem NumPy są tablice wielowymiarowe, które pozwalają na efektywne przechowywanie i przetwarzanie dużych ilości danych. NumPy obsługuje również operacje wektorowe, co znacznie przyspiesza obliczenia w porównaniu ze standardowymi pętlami Pythona.
Biblioteka zawiera wiele funkcji do wykonywania operacji matematycznych, takich jak dodawanie, mnożenie, mnożenie macierzy i obliczanie wskaźników statystycznych. Do pracy z tablicami NumPy oferuje różne metody zmiany wymiaru, wyodrębniania podtablic i wykonywania wycinków.
Ponadto NumPy integruje się z innymi bibliotekami, takimi jak SciPy i Pandas, co czyni ją niezbędnym narzędziem do analizy danych i obliczeń naukowych. Opanowując podstawy NumPy, początkujący programiści mogą znacznie zwiększyć swoją produktywność w dziedzinie analizy danych i uczenia maszynowego.
Nauka NumPy otwiera drzwi do bardziej zaawansowanych koncepcji, takich jak algebra liniowa i przetwarzanie danych wielowymiarowych, co czyni ją ważnym krokiem w kierunku rozwijania profesjonalnych umiejętności programowania i analizy danych.
Obraz w skali szarości jest reprezentowany jako dwuwymiarowa tablica. Każdy piksel na obrazie jest zakodowany jako liczba od 0 do 255, gdzie 0 odpowiada czerni, 255 bieli, a wartości pomiędzy reprezentują różne odcienie szarości. Takie podejście pozwala na efektywne przechowywanie i przetwarzanie obrazów przy użyciu minimalnej ilości danych do reprezentowania informacji o kolorze.
Każdy wiersz piksela jest reprezentowany jako jednowymiarowa tablica. Na przykład tablica [255, 255, 77, 77, 77, 255, 255] składa się z siedmiu pikseli, w tym dwóch białych, trzech szarych i dwóch białych. Ta metoda reprezentacji danych umożliwia wydajne przetwarzanie i analizę informacji graficznych, upraszczając pracę z obrazami cyfrowymi.
Każdy wiersz pikseli jest uporządkowany w tablicę drugiego poziomu. Na przykład, tablica ta zawiera dane o kolorze i jasności pikseli, co umożliwia wydajne przetwarzanie i wyświetlanie obrazu. Wykorzystanie tablic do przechowywania informacji o pikselach zapewnia szybki dostęp do danych i optymalizację przetwarzania grafiki. Jest to szczególnie ważne w kontekście tworzenia aplikacji wizualnych i gier, gdzie wydajność odgrywa kluczową rolę.
W rezultacie otrzymujemy pomniejszony obraz, który jest 100 razy mniejszy od oryginału.

Praca z kolorowymi obrazami wymaga użycia tablicy trójwymiarowej. Kolor każdego piksela jest reprezentowany przez trzy wartości z zakresu od 0 do 255, co odpowiada modelowi RGB. W tym modelu kolejność kolorów jest odwrócona: pierwsza liczba odpowiada niebieskiemu, druga zielonemu, a trzecia czerwonemu, co tworzy model BGR.
Przykłady pikseli o różnych kolorach w języku OpenCV demonstrują możliwości pracy z obrazami i kolorami w tej bibliotece. OpenCV ułatwia manipulowanie pikselami, zmianę ich wartości kolorów i przeprowadzanie analizy obrazu. Kolory podstawowe, takie jak czerwony, zielony i niebieski, mogą być reprezentowane w formacie BGR, który jest standardem dla OpenCV. Nauka pracy z pikselami i ich kolorami pozwala programistom tworzyć efektywne algorytmy przetwarzania obrazu, rozpoznawania obiektów i przetwarzania obrazu. Wykorzystanie OpenCV w projektach przetwarzania obrazu otwiera szeroką gamę możliwości dla programistów i badaczy zajmujących się informatyką i technologią.
- [0, 0, 0] — czarny.
- [255, 255, 255] — biały.
- [255, 0, 0] — niebieski.
- [0, 255, 0] — zielony.
- [0, 0, 255] — czerwony.
- [0, 255, 255] — żółty.
- [203, 192, 255] — różowy.
Tabelę popularnych kolorów RGB można znaleźć tutaj. Należy pamiętać, że w bibliotece OpenCV kolejność kolorów jest odwrócona: pierwszy i trzeci kolor są zamienione miejscami.
Podobnie jak w przypadku obrazów w skali szarości, wielowymiarowa tablica następnego poziomu łączy rzędy pikseli, podczas gdy tablica najwyższego poziomu reprezentuje cały obraz. Takie podejście zapewnia wydajne przechowywanie i przetwarzanie danych, co jest szczególnie ważne w aplikacjach graficznych i systemach rozpoznawania obrazu. Optymalizacja struktury danych umożliwia szybkie wyszukiwanie i analizę informacji, poprawiając wydajność algorytmów przetwarzania obrazu.
W OpenCV tablica reprezentująca obraz składający się z dziewięciu kolorowych pikseli wyglądałaby następująco:
Obraz jest prezentowany w powiększonym formacie dla wygody użytkownika. Pozwala to na lepsze przyjrzenie się szczegółom i cechom, co jest szczególnie ważne podczas analizy lub oceny zawartości obrazu. Powiększone obrazy pomagają użytkownikom bliżej przyjrzeć się prezentowanemu materiałowi, co może być przydatne w różnych kontekstach, takich jak nauka, praca czy kreatywność. Rozważ użycie większych obrazów, aby poprawić wrażenia wizualne.

Pobierz dowolny obraz, najlepiej jasny i o wysokim kontraście i otwórz go w swoim kodzie. To pomoże poprawić atrakcyjność wizualną treści i przyciągnąć uwagę odwiedzających. Żywe obrazy mogą znacznie zwiększyć zainteresowanie Twoją witryną i poprawić jej pozycję w wynikach wyszukiwania (SEO). Prezentujemy przykładowy obraz ilustrujący kluczowe punkty naszego tematu. Ten obraz pomoże Ci lepiej zrozumieć materiały i idee, którymi się zajmujemy. Takie elementy wizualne odgrywają kluczową rolę w zrozumieniu informacji i sprawiają, że treści są bardziej przystępne dla odbiorców. Korzystanie z wysokiej jakości obrazów pomaga poprawić SEO, ponieważ wydłuża czas spędzony przez użytkownika na stronie i zmniejsza współczynnik odrzuceń. Zalecamy zwrócenie uwagi na jakość i trafność obrazów, aby harmonijnie uzupełniały tekst i wzmacniały jego znaczenie.

Sprawdź obraz i otwórz go w nowym oknie, aby lepiej go obejrzeć.
- cv2.imread — „odczytuje” obraz i zwraca tablicę NumPy, z którą biblioteka może pracować. Jako argument otrzymuje pełną lub względną ścieżkę do obrazu.
- cv2.imshow — otwiera obraz w osobnym oknie systemu operacyjnego. Pierwszym argumentem jest nazwa okna, drugim jest tablica NumPy, w naszym przypadku przechowywana w zmiennej „image”.
- cv2.waitKey — jeśli nie określisz tej funkcji, otwarte okno zamknie się natychmiast. Otrzymuje przycisk, który należy nacisnąć, aby zamknąć okno. Jeśli określisz 0, okno zamknie się po naciśnięciu dowolnego przycisku.
Funkcja cv2.imread w bibliotece OpenCV umożliwia ładowanie obrazów i przyjmuje opcjonalny drugi argument, który określa ich tryb wyświetlania. Ten argument może być użyty do określenia, jak dokładnie obraz ma być interpretowany podczas ładowania. Możesz na przykład wybrać wyświetlanie obrazu w kolorze, skali szarości lub z kanałem alfa. Wybór odpowiedniego trybu wyświetlania pozwala optymalnie wykorzystać pobrane dane do dalszego przetwarzania i analizy obrazu.
- cv2.IMREAD_COLOR (domyślnie) — wyświetlanie kolorów RGB.
- cv2.IMREAD_GRAYSCALE — wyświetlanie skali szarości.
Funkcja cv2.imread w bibliotece OpenCV umożliwia ładowanie obrazów i służy również do odbarwiania obrazów kolorowych. Podczas ładowania obrazu kolorowego za pomocą cv2.imread można użyć flagi, aby przekonwertować go na skalę szarości. Jest to przydatne w przypadku zadań przetwarzania obrazu, takich jak wykrywanie krawędzi czy stosowanie filtrów. Za pomocą cv2.cvtColor można łatwo przekonwertować obraz na skalę szarości, co upraszcza dalsze przetwarzanie i analizę. Zatem cv2.imread jest niezbędnym narzędziem do pracy z obrazami w OpenCV, umożliwiającym skuteczne odbarwianie fotografii.

Aby zapisać nowy obraz w osobnym pliku, użyj funkcji cv2.imwrite. Ta funkcja z biblioteki OpenCV umożliwia zapisanie obrazu i utworzenie jego kopii na urządzeniu. Wystarczy określić nazwę pliku i ścieżkę, w której chcesz zapisać obraz, a także tablicę obrazów do zapisania. Upewnij się, że format pliku spełnia wymagania, aby uniknąć błędów podczas zapisywania. Użycie funkcji cv2.imwrite to prosty i skuteczny sposób na zapewnienie dostępności przetworzonych obrazów do dalszego użytku lub analizy.
Funkcja przyjmuje dwa argumenty: pierwszy to nazwa nowego pliku, w którym ma zostać zapisany obraz, a drugi to tablica NumPy zawierająca dane obrazu.
OpenCV umożliwia pracę z pikselami obrazu za pomocą tablic NumPy. Pozwala to na efektywną modyfikację i przetwarzanie obrazów, zapewniając dużą elastyczność w manipulowaniu grafiką. Dzięki tej funkcji możesz łatwo wykonywać operacje takie jak zmiana nasycenia kolorów, kontrastu i innych parametrów obrazu.
Najpierw musisz uzyskać dostęp do piksela. W tym celu używamy współrzędnych. Najpierw określamy współrzędną szerokości, a następnie współrzędną wysokości. Na przykład:
Zmieńmy kolor piksela na niebieski. Aby to zrobić, musisz uzyskać dostęp do piksela poprzez jego współrzędne i ustawić jego kolor na niebieski. Zwróć uwagę, że w tym systemie kolory niebieski i czerwony są rozmieszczone względem siebie.
Po otwarciu zmodyfikowanego obrazu zauważysz czarną kropkę o rozmiarze jednego piksela w prawym górnym rogu. Ta kropka może posłużyć do przetestowania jakości obrazu lub weryfikacji jego integralności. Zwróć uwagę na jej położenie, ponieważ może służyć jako wskaźnik zmian wprowadzonych w pliku.
Podczas ręcznej zamiany obrazów ważne jest, aby wziąć pod uwagę ich wymiary. W tym celu zalecamy użycie funkcji image.shape, która pozwala uzyskać niezbędne parametry obrazu. Informacje te pomogą Ci prawidłowo dostosować obrazy do Twoich potrzeb, zapewniając optymalną jakość i zgodność z formatem. Użycie image.shape jest kluczowym krokiem w efektywnym przetwarzaniu grafiki.
- image.shape[0] — wysokość obrazu w pikselach.
- image.shape[1] — szerokość obrazu w pikselach.
Pętle pozwalają na jednoczesną zmianę koloru dużej liczby pikseli. Na przykład, można utworzyć 10-pikselową czarną ramkę wokół obrazu. Takie podejście umożliwia efektywne zarządzanie grafiką i poprawia wydajność przetwarzania obrazu.
Pętle zewnętrzne iterują po każdym pikselu obrazu, zaczynając od poziomego (pierwsza pętla) i przechodząc do pionowego (druga pętla). Pętle wewnętrzne przesuwają się od krawędzi obrazu do jego środka, zmieniając kolor każdego piksela na czarny w każdym kroku. Ta metoda umożliwia wydajne przetwarzanie obrazu, zapewniając pełną zmianę rozmiaru kolorów przy każdym przejściu.
Rezultatem jest następujący obraz:

Aby zmienić rozmiar obrazu, użyj funkcji cv2.resize. Można jej użyć do zmniejszenia obrazu o połowę.
- image — tablica NumPy obrazu, którego rozmiar ma zostać zmieniony.
- (399, 368) — szerokość i wysokość nowego obrazu.
- cv2.INTER_AREA — metoda interpolacji, czyli algorytm, za pomocą którego OpenVC wybiera kolory, którymi mają zostać pomalowane piksele.
Istnieje kilka metod interpolacji, ale w większości przypadków wystarczy użyć tylko dwóch z nich: interpolacji liniowej i wielomianowej. Interpolacja liniowa pozwala na stworzenie prostego modelu poprzez połączenie dwóch znanych wartości, co czyni ją skuteczną w szybkim uzyskiwaniu danych przybliżonych. Interpolacja wielomianowa zapewnia dokładniejsze wyniki, zwłaszcza gdy trzeba wziąć pod uwagę więcej punktów. Te dwie metody interpolacji są szeroko stosowane w różnych dziedzinach, takich jak grafika komputerowa, metody numeryczne i przetwarzanie danych, co czyni je niezbędnymi narzędziami do analizy i prognozowania.
- cv2.INTER_LINEAR — do powiększania obrazu. Używana domyślnie, o ile nie zaznaczono inaczej.
- cv2.INTER_AREA — do pomniejszania obrazu.
Aby zachować proporcje obrazu i wyeliminować konieczność ich ręcznego obliczania, zaleca się korzystanie z danych uzyskanych metodą kształtu. Metoda ta automatycznie określa wymiary obrazu, upraszczając proces jego przetwarzania i wstawiania na strony internetowe. Prawidłowe wykorzystanie metody kształtu poprawia komfort użytkownika i optymalizuje ładowanie strony, co jest ważnym czynnikiem SEO.
W obu przypadkach wynik pozostaje taki sam:

Aby przyciąć obraz, należy określić zakresy współrzędnych, które definiują obszar, który chcesz zachować. Najpierw określ wysokość, a następnie szerokość. Na przykład, jeśli chcesz zachować określony fragment obrazu, określ odpowiednie wartości przycięcia. Pozwala to efektywnie zarządzać rozmiarem i formatem obrazów, poprawiając atrakcyjność wizualną treści i optymalizując ją pod kątem internetu. Prawidłowe przycinanie obrazów pomaga również szybciej ładować strony i poprawić SEO witryny.

Aby obrócić obraz, Użyj dwóch funkcji jednocześnie. Pozwala to na zmianę orientacji obrazu z dużą precyzją i kontrolą. Korzystanie z obu funkcji zapewnia elastyczność ustawień obrotu, co jest szczególnie przydatne podczas pracy z edytorami graficznymi lub aplikacjami internetowymi. Upewnij się, że parametry są poprawnie skonfigurowane, aby uzyskać pożądany efekt zmiany kąta obrazu.
Funkcja cv2.getRotationMatrix2D służy do tworzenia macierzy obrotu, która jest niezbędna do obracania obrazu. Akceptuje ona trzy główne argumenty: środek obrotu, kąt obrotu i skalę. Środek obrotu określa punkt, wokół którego nastąpi obrót, kąt określa stopień obrotu w stopniach, a skala odpowiada za zmianę rozmiaru obrazu po obrocie. Prawidłowe użycie tej funkcji pozwala uzyskać wysokiej jakości i dokładny obrót obrazu w aplikacjach graficznych.
- (399, 368) — współrzędne punktu, wokół którego nastąpi obrót.
- 60 — kąt obrotu w stopniach.
- 0,8 — współczynnik skalowania. W naszym przypadku zmniejszamy obraz tak, aby fragmenty logo nie wystawały poza krawędź.
Funkcja cv2.warpAffine w bibliotece OpenCV służy do obracania i przekształcania obrazów. Akceptuje ona kilka argumentów wymaganych do wykonania operacji. Głównymi parametrami są obraz źródłowy, macierz przekształceń i rozmiar obrazu wyjściowego. Za pomocą tej funkcji można zmienić orientację obrazu i zastosować inne przekształcenia afiniczne, takie jak ścinanie i skalowanie. Prawidłowe użycie cv2.warpAffine pozwala na osiągnięcie wysokiej jakości rezultatów w przetwarzaniu obrazu, co czyni ją niezbędnym narzędziem dla programistów zajmujących się przetwarzaniem obrazu i grafiką komputerową.
- image — sam obraz.
- matrix — macierz utworzona przez funkcję cv2.getRotationMatrix2D.
- (image.shape[1], image.shape[0]) — wymiary wynikowego obrazu. W naszym przypadku pozostawiamy te same, co poprzednio.

Skrypt Przykłady OpenCV
Utwórzmy kilka prostych skryptów przetwarzania obrazów przy użyciu biblioteki OpenCV w Pythonie. OpenCV udostępnia potężne narzędzia do pracy z obrazami, w tym ich ładowania, przetwarzania i zapisywania. W tym samouczku omówimy podstawowe funkcje OpenCV, które pomogą Ci rozpocząć pracę z obrazami, w tym zmianę rozmiaru, stosowanie filtrów i konwersję do różnych przestrzeni barw. Te proste skrypty pomogą Ci szybko opanować podstawy pracy z obrazami i wykorzystać możliwości OpenCV do rozwiązywania różnych problemów.
OpenCV umożliwia obsługę kliknięć obrazów wyświetlanych w oknie. Zaimplementujemy funkcjonalność, która pozwala na wyprowadzenie współrzędnych punktu i jego kodu koloru w formacie BGR do terminala po kliknięciu obrazu. Jest to przydatne do uzyskiwania informacji o pikselach i analizowania informacji o kolorach na obrazach.
Dodatkowo wyświetlimy informacje o punkcie, który został kliknięty, bezpośrednio na obrazie. Kliknięcie lewym przyciskiem myszy wyświetli współrzędne, a kliknięcie prawym przyciskiem myszy wyświetli kod koloru BGR. Umożliwi to użytkownikowi wizualną interakcję z obrazem i natychmiastowe uzyskanie pożądanych danych.
Utwórz funkcję click_event, która będzie obsługiwać zdarzenia kliknięcia obrazu. Funkcja ta powinna reagować na kliknięcia, wykonując określone czynności, takie jak zmiana stylu obrazu lub otwarcie wyskakującego okienka z dodatkowymi informacjami. Upewnij się, że funkcja jest poprawnie powiązana z elementem obrazu i wykonuje wszystkie niezbędne czynności, aby usprawnić interakcję użytkownika z treścią.
Funkcja click_event akceptuje pięć parametrów, które pozwalają dostosować jej działanie. Parametry te obejmują: zdarzenie kliknięcia, identyfikator elementu, do którego ma zostać dołączony obiekt obsługi, dodatkowe dane, które mogą być potrzebne do obsługi zdarzenia, funkcję zwrotną, która zostanie wykonana po wyzwoleniu zdarzenia, oraz kontekst, w którym ta funkcja zostanie wywołana. Prawidłowa konfiguracja tych argumentów zapewnia elastyczność i funkcjonalność funkcji click_event, umożliwiając programistom efektywne zarządzanie interakcjami użytkowników z elementami strony internetowej.
- event — zdarzenie, które wystąpiło (w naszym przypadku kliknięcie myszą).
- x i y — współrzędne klikniętego punktu.
- flags i params — argumenty narzędziowe potrzebne metodzie, której użyjemy do wywołania tej funkcji.
Po kliknięciu dowolnego przycisku myszy w terminalu muszą zostać wyświetlone współrzędne kursora i kod koloru BGR piksela w tym punkcie. Aby zaimplementować to zadanie, należy użyć odpowiedniego programu obsługi zdarzeń myszy. Program ten powinien odbierać współrzędne kursora, a następnie na ich podstawie określać kolor piksela. W rezultacie zarówno współrzędne, jak i kod koloru BGR zostaną wyświetlone w terminalu, umożliwiając wygodne śledzenie informacji o kolorze w różnych punktach ekranu.
Aby zaimplementować funkcję wyświetlającą współrzędne punktu na obrazie po naciśnięciu lewego przycisku myszy, należy użyć JavaScriptu. Przykład kodu, który dodaje obsługę zdarzeń kliknięcia do obrazu i rysuje punkt w określonym położeniu, wygląda następująco:
«`html
<!DOCTYPE html>
<html lang=»ru»>
<head>
<meta charset=»UTF-8″>
<meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
<title>Współrzędne punktu na obrazie</title>
<style>
#imageCanvas {
position: relative;
display: inline-block;
}
.dot {
position: absolute;
width: 5px;
height: 5px;
background-color: red;
border-radius: 50%;
}
</style>
</head>
<body>
<div id=»imageCanvas»>
<img src=»ścieżka/do/twojego/obrazu.jpg» alt=»Obraz» id=»obraz» />
</div>
<script>
const imageCanvas = document.getElementById(‘imageCanvas’);
imageCanvas.addEventListener(‘click’, function(event) {
const rect = imageCanvas.getBoundingClientRect();
const x = event.clientX — rect.left;
const y = event.clientY — rect.top;
const dot = document.createElement(‘div’);
dot.className = ‘dot’;
dot.style.left = `${x}px`;
dot.style.top = `${y}px`;
imageCanvas.appendChild(dot);
});
</script>
</body>
</html>
«`
W tym kodzie tworzymy kontener dla obrazu i dodajemy obsługę zdarzeń kliknięcia myszą. Po kliknięciu obrazu obliczane są współrzędne, a w tym miejscu tworzony jest mały czerwony okrąg, wskazujący punkt. Ten kod umożliwia wizualizację współrzędnych, co może być przydatne w różnych aplikacjach, takich jak edytory obrazów czy mapy interaktywne.
Funkcja cv2.putText to ważne narzędzie do dodawania tekstu do obrazów w bibliotece OpenCV. Funkcja akceptuje kilka argumentów, które pozwalają dostosować wyświetlanie tekstu. Główne argumenty funkcji obejmują obraz, tekst, współrzędne punktu początkowego, czcionkę, jej rozmiar, kolor tekstu i grubość linii. Prawidłowe użycie tych parametrów pozwala uzyskać wysokiej jakości tekst, co jest szczególnie ważne w przypadku zadań związanych z przetwarzaniem obrazu i rozpoznawaniem obrazu. Na przykład, za pomocą funkcji cv2.putText można dodawać adnotacje, etykiety i dowolne inne elementy tekstowe, co czyni tę funkcję niezastąpioną w wizualizacji danych.
- img to obraz, do którego dodawany jest podpis.
- f'{x}, {y}’ — podpis dodawany do obrazu.
- (x, y) — współrzędne punktu, z którego pochodzi podpis.
- czcionka — czcionka podpisu.
- 1 — skalowanie rozmiaru tekstu.
- (0, 0, 0) — kolor tekstu.
- 2 — grubość linii.
Aby zaimplementować drugi warunek, należy uzupełnić kod tak, aby wyświetlał kod BGR na obrazie po naciśnięciu prawego przycisku myszy. Należy upewnić się, że obsługa zdarzeń dla prawego przycisku myszy prawidłowo reaguje na działania użytkownika. Po naciśnięciu należy pobrać współrzędne kursora, przekonwertować je na kod BGR i wyświetlić ten kod na obrazie. Umożliwi to użytkownikom szybkie i wygodne zobaczenie koloru, na który wskazują, co usprawni interakcję z aplikacją i zwiększy jej funkcjonalność.
Funkcja jest teraz gotowa do użycia. Teraz musisz przenieść obraz i użyć wbudowanej funkcji OpenCV cv2.setMouseCallback. Ta metoda pozwala skonfigurować obsługę zdarzeń myszy, upraszczając interakcję z obrazami i poprawiając komfort użytkowania. Ważne jest, aby poprawnie skonfigurować obsługę zdarzeń myszy, aby skutecznie obsługiwać kliknięcia i ruchy myszy na obrazie.
Spróbuj przetestować kod. Otwórz obraz i kliknij prawym przyciskiem myszy każdy kształt, a następnie lewym przyciskiem myszy przestrzeń między nimi. W rezultacie otrzymasz oczekiwany wynik.

Następujący tekst jest wyświetlany w Terminal:
OpenCV oferuje zaawansowane narzędzia oparte na uczeniu maszynowym, w tym model Haara. Model ten skutecznie rozpoznaje twarze, co czyni go przydatnym w różnorodnych aplikacjach przetwarzania obrazu. Wykorzystanie technologii Haara pozwala programistom tworzyć systemy zdolne do identyfikacji i śledzenia twarzy w czasie rzeczywistym, otwierając nowe możliwości w takich dziedzinach jak bezpieczeństwo, medycyna i rozrywka.
Aby skorzystać z tej funkcji, pobierz plik haarcascade_frontalface_default.xml, który jest dostępny w repozytorium OpenCV na GitHubie. Plik ten jest wymagany do wykrywania twarzy na obrazach i filmach, co czyni go niezbędnym narzędziem do tworzenia aplikacji przetwarzania obrazu.
Aby skorzystać z tej funkcji, potrzebujesz obrazu z twarzami ludzkimi. W tym przykładzie użyliśmy kadru z filmu „Matrix”, o którym wspomniano już na początku artykułu.

Umieść te pliki w katalogu skryptów, aby mieć do nich dostęp po nazwie. Uprości to pracę z zasobami i poprawi ich użyteczność w projekcie. Prawidłowa organizacja struktury plików to ważny krok dla efektywnego rozwoju.
Zaimportuj bibliotekę OpenCV i utwórz zmienne dla modelu Haara i obrazu. Użyj OpenCV do przetwarzania obrazów i rozpoznawania obiektów za pomocą kaskadowych klasyfikatorów Haara. Upewnij się, że ścieżki do plików modelu i obrazu są poprawnie określone, aby zapewnić prawidłowe działanie aplikacji. Skonfiguruj parametry klasyfikatora zgodnie ze swoimi wymaganiami, aby uzyskać optymalne wyniki wykrywania obiektów.
Podczas pracy z rozpoznawaniem i porównywaniem obiektów często używa się odbarwionych wersji obrazów. Odbarwione obrazy podkreślają kluczowe cechy obiektów, ułatwiając ich analizę. Odbarwmy nasz obraz w celu dalszego przetwarzania i porównywania.
Aby wykryć twarze na obrazie, użyj metody detectMultiScale, opartej na modelu Haara. Metoda ta skutecznie wykrywa twarze poprzez analizę różnych skal i szczegółów obrazu, co zapewnia wysoką dokładność rozpoznawania. Użycie klasyfikatorów Haara w połączeniu z funkcją detectMultiScale sprawia, że proces wykrywania twarzy jest szybki i niezawodny.
Do metody przekazujemy następujące parametry:
- gray_image — obraz odbarwiony;
- scaleFactor=1.1 — krok skalowania obrazu. Model przechowuje dane o twarzach o określonym rozmiarze. Jeśli twarze na obrazie są większe lub mniejsze, algorytm ich nie wykryje. Dlatego podczas analizy rozmiar obrazu jest zmieniany tak, aby twarze w nim w pewnym momencie osiągnęły ten sam rozmiar, co w modelu. Im mniejszy scaleFactor, tym dokładniejsze rozpoznanie, ale tym wolniejsze;
- minNeighbors=5 — minimalna liczba dopasowań do modelu wymagana na obrazie do rozpoznania obiektu jako twarzy. Im większy ten argument, tym mniej twarzy wykryje algorytm, ale zmniejsza się ryzyko pomylenia innego obiektu z twarzą.
Metoda detectMultiScale zwraca współrzędne wykrytych obiektów, takich jak twarze. Aby je zwizualizować, można użyć funkcji cv2.rectangle do obrysowania twarzy kwadratami. Pomoże to lepiej zrozumieć, które obszary obrazu zostały rozpoznane. Użycie tych współrzędnych w połączeniu z funkcją cv2.rectangle pozwala na przejrzyste zademonstrowanie wyników algorytmu rozpoznawania twarzy, zapewniając bardziej efektywną prezentację danych.
Zmienna faces zawiera tablicę składającą się z czterech elementów. Każdy element to lista zbierająca dane ze wszystkich wykrytych obiektów.
- x — współrzędne poziome lewego górnego rogu obiektu.
- y — współrzędne pionowe lewego górnego rogu obiektu.
- w — szerokość obiektu.
- h — wysokość obiektu.
Funkcja cv2.rectangle w bibliotece OpenCV akceptuje kilka argumentów, które umożliwiają rysowanie prostokątów na obrazach. Główne parametry tej funkcji obejmują obraz, współrzędne lewego górnego i prawego dolnego rogu prostokąta, kolor i grubość linii. Obraz jest określony w formacie tablicowym, a współrzędne są zdefiniowane w pikselach. Kolor jest określony w formacie BGR, który jest standardem OpenCV. Grubość linii wskazuje, jak wyraźne będzie obramowanie prostokąta. W ten sposób cv2.rectangle zapewnia elastyczne narzędzie do adnotacji obrazów w systemach rozpoznawania obrazu, które może być przydatne w różnych zadaniach, takich jak przetwarzanie i wizualizacja obrazów.
- image to kolorowy obraz, na którym rysujemy kwadrat.
- (x, y) to współrzędne lewego górnego rogu kwadratu.
- (x+w, y+h) to współrzędne prawego dolnego rogu kwadratu.
- (0, 0, 255) to kolor kwadratu w formacie BGR.
- 2 to grubość linii kwadratu w pikselach.
Przeanalizujmy powstały obraz.

Zadziałało: twarze w odbiciu są obrysowane ramkami. Ten efekt dodaje głębi i podkreśla detale, tworząc niepowtarzalną percepcję wizualną. Ramki podkreślają indywidualność każdego obrazu i sprawiają, że jest on bardziej zapadający w pamięć. Zastosowanie takich technik w projektowaniu pomaga podkreślić kluczowe elementy i stworzyć harmonijną całość z otaczającą przestrzenią.
Co dalej
Aby lepiej zrozumieć przetwarzanie obrazu i OpenCV, zalecamy zapoznanie się z szeregiem dodatkowych zasobów i materiałów. Poznanie podstaw teoretycznych i praktycznych przykładów pomoże Ci lepiej opanować tę dziedzinę. Zwróć uwagę na kursy online, samouczki wideo i specjalistyczne książki, które obejmują zarówno podstawowe, jak i zaawansowane aspekty pracy z OpenCV. Warto również uczestniczyć w forach i społecznościach, gdzie omawiane są najnowsze osiągnięcia i zastosowania przetwarzania obrazu. To nie tylko poszerzy Twoją wiedzę, ale także pozwoli Ci uzyskać wsparcie od profesjonalistów w tej dziedzinie.
- samouczki z dokumentacji OpenCV (po angielsku);
- samouczek OpenCV Python z platformy GeeksforGeeks (po angielsku);
- Aniradh Cole, Meher Kazam, Siddha Ganju. „Sztuczna inteligencja i widzenie komputerowe”;
- Eduard Shakiryanov. „Widzenie komputerowe w Pythonie”;
- Kurs OpenCV — pełny samouczek z Pythonem (wideo, dostępne napisy w języku angielskim).
Przeglądaj dodatkowe materiały:
- Sztuczna inteligencja, uczenie maszynowe i głębokie uczenie: na czym polega różnica?
- „Ukończyłem moduł kursu i zacząłem wysyłać CV”: Muzyk, który został Pythonistą
- Tworzenie „Snake” — pierwszej gry w Pythonie i Pygame
Dowiedz się więcej o kodowaniu i pokrewnych tematach na naszym kanale Telegram. Subskrybuj, aby być na bieżąco z ważnymi aktualizacjami i ciekawymi treściami!

