Hướng dẫn image processing and computer vision with python and opencv - xử lý hình ảnh và thị giác máy tính với python và opencv

Bài viết này đã được xuất bản như một phần của & NBSP; Data Science Blogathon

Giới thiệu

Có thể có rất nhiều thông tin ẩn bên trong một hình ảnh và chúng tôi có thể diễn giải nó theo những cách và quan điểm khác nhau. Vì vậy, một hình ảnh là gì và làm thế nào để đối phó với một hình ảnh? Nói một cách đơn giản, chúng ta có thể nói rằng một hình ảnh là một biểu diễn trực quan của một cái gì đó và nó có thể được xử lý dễ dàng bằng cách sử dụng tầm nhìn máy tính [từ góc độ học máy]. Còn video thì sao? Một video có thể được mô tả như là một bản ghi của một bộ hình ảnh hoặc khung liên tục chuyển động. Nhưng chúng ta có thể đối phó với các video bằng cách sử dụng Vision Computer trong một blog khác! 🙂

Một số bạn có thể đã biết về tầm nhìn máy tính bây giờ và có thể bỏ qua đoạn này, nhưng đối với những người không có ý tưởng về nó, tầm nhìn máy tính, chủ yếu được biết đến ở dạng viết tắt 'CV', có thể được nói như một lĩnh vực trong lĩnh vực Trí tuệ nhân tạo trích xuất thông tin hữu ích nhất tất cả các lĩnh vực trong thời đại hiện đại này bao gồm lĩnh vực y tế, ô tô, sản xuất, nông nghiệp, v.v.

Hình 1

Là một con người, người hiện đang đọc bài đăng này, bạn sẽ có thể phân biệt giữa những thứ hoặc các yếu tố có trong một hình ảnh. Nhưng, những gì về máy móc? Họ có thể nhìn thấy và suy nghĩ để phân biệt nó một mình? KHÔNG? Sau đó, hãy để cho máy của bạn làm điều đó.

Trong blog này, bạn sẽ làm quen với những điều cơ bản về tầm nhìn máy tính bằng Python.

Tôi tin rằng bạn đã cài đặt Python Shell/Jupyter Notebook/Pycharm hoặc & NBSP; Mã Visual Studio [để đặt tên cho một số] để lập trình trong Python. Hãy để cài đặt gói được sử dụng rộng rãi [OpenCV] để bắt đầu và chúng tôi sẽ chạy các mã trong mỗi ô trong một máy tính xách tay Jupyter.

Cài đặt gói OpenCV để tiền xử lý hình ảnh

OpenCV là một thư viện chỉ dành cho CPU [gói] được xây dựng sẵn, được sử dụng rộng rãi cho & NBSP; Tầm nhìn máy tính, học máy và các ứng dụng xử lý hình ảnh. Nó hỗ trợ một loạt các ngôn ngữ lập trình tốt bao gồm Python.

Cài đặt gói OpenCV bằng cách sử dụng:

pip install opencv-python

HOẶC

pip install opencv-contrib-python

Chạy bất kỳ lệnh nào trong số các lệnh này trên thiết bị đầu cuối của bạn hoặc nếu bạn đang sử dụng Anaconda Navigator - Jupyter Notebook, bạn có thể thay đổi PIP PIP với lệnh của Conda Conda và cài đặt tương tự.

Nhập gói

Gói trong Python là gì? Một gói trong Python là một tập hợp các mô-đun có chứa các tập lệnh viết sẵn. Các gói này giúp chúng tôi nhập các mô -đun hoàn toàn hoặc thậm chí cá nhân. Chúng tôi có thể nhập gói bằng cách gọi mô -đun CV2 CV2 như thế này:

import cv2

Đọc một hình ảnh

Hình ảnh kỹ thuật số có thể được phân loại thành; Hình ảnh màu, hình ảnh quy mô màu xám, hình ảnh nhị phân và hình ảnh đa năng. Một hình ảnh màu bao gồm thông tin màu cho mỗi pixel. Hình ảnh có sắc thái màu xám như màu duy nhất của chúng là hình ảnh thang độ xám trong khi hình ảnh nhị phân có chính xác hai màu, chủ yếu là màu đen và trắng. Hình ảnh đa bán cầu là hình ảnh chụp dữ liệu hình ảnh nằm trên phổ điện từ trong một số bước sóng cụ thể.

Ví dụ, chúng ta hãy quay lại phần mã hóa và đọc một hình ảnh, hình ảnh được hiển thị bên dưới:

Đây là một hình ảnh của một mandrill. Tôi hiện đang đọc hình ảnh từ thư mục địa phương của tôi.

# cv2.imread[path_to_image_with_file_extension, flag]

Mã sử ​​dụng trông thích điều này:

img = cv2.imread["mandrill.jpg", 1]

Ở đây chúng tôi đang sử dụng phương thức IMREAD của IMREAD của gói CV2 để đọc hình ảnh và tham số đầu tiên tương ứng với đường dẫn của hình ảnh với tên tệp và phần mở rộng của nó, và cái thứ hai là cờ mà bạn có thể đặt cho cách nói, cách đó Làm thế nào để đọc trong hình ảnh. Nếu bạn thích, bạn có thể thay thế đường dẫn tuyệt đối vào hình ảnh ở đây và thử đọc nó từ máy tính cục bộ của bạn hoặc thậm chí từ internet! Nếu hình ảnh có trong thư mục làm việc hiện tại của bạn, bạn chỉ cần chỉ định tên hình ảnh với loại mở rộng của nó.

Theo như tham số thứ hai có liên quan, nếu bạn muốn đọc nó dưới dạng hình ảnh thang độ xám, bạn có thể chỉ định tham số thành 0, -1 để đọc hình ảnh là không thay đổi [đọc hình ảnh dưới dạng alpha hoặc kênh trong suốt nếu ở đó] Và theo mặc định, nó là 1, như một hình ảnh màu. Bạn cũng có thể thử các tham số khác từ liên kết này:

//docs.opencv.org/4.5.2/d8/d6a/group__imgcodecs__flags.html#ga61d9b0126a3e57d9277ac48327799c80

Dưới các iMreadModes.

Thuộc tính của một hình ảnh

Shape:

Mỗi hình ảnh có một hình dạng. Độ dài của các ranh giới được thể hiện bởi hình ảnh có thể được gọi là hình dạng i.e, chiều cao và chiều rộng. Bây giờ bạn đã biết cách đọc một hình ảnh, làm thế nào về chúng tôi kiểm tra hình dạng của hình ảnh?

print[img.shape]

là cách cơ bản để in hình dạng của hình ảnh, nhưng chúng ta có thể trích xuất hình dạng bằng cách sử dụng:

h, w, c = img.shape
print["Dimensions of the image is:nnHeight:", h, "pixelsnWidth:", w, "pixelsnNumber of Channels:", c]

để có được một sự hiểu biết tốt hơn.

Đối với màu sắc và chế độ không thay đổi, nó sẽ trả về 3 giá trị bao gồm chiều cao, chiều rộng và số lượng kênh có trong hình ảnh. Nếu bạn đã sử dụng chế độ thang độ xám, hình dạng sẽ là 2, sẽ trả về chiều cao và chiều rộng của hình ảnh, nhưng sau đó bạn chỉ phải sử dụng các biến H và W [không bao gồm sử dụng C C C] Một lỗi giá trị nói rằng không đủ giá trị để giải nén [dự kiến ​​3, có 2].

Type:

Chúng ta có thể biết loại hình ảnh bằng phương pháp loại hình kiểu. Sử dụng phương pháp này giúp chúng tôi biết cách biểu diễn dữ liệu hình ảnh. Chạy mã như sau:

print[type[img]]

Kết quả có thể như thế này:

là loại hình ảnh. Nó là một thùng chứa đa chiều của các mặt hàng cùng loại và kích thước. Bạn có thể tham khảo nhiều hơn đến mảng N chiều tại liên kết sau:

//numpy.org/doc/stable/reference/arrays.ndarray.html

Kiểu dữ liệu của hình ảnh bạn vừa đọc:

Vì hình ảnh là một mảng N chiều, chúng tôi có thể kiểm tra kiểu dữ liệu của hình ảnh:

print[img.dtype]

Giá trị pixel hình ảnh:

Chúng ta có thể nghĩ về một hình ảnh như một tập hợp các mẫu nhỏ. Những mẫu này được gọi là pixel. Để hiểu rõ hơn, hãy thử phóng to hình ảnh càng nhiều càng tốt. Chúng ta có thể thấy giống nhau được chia thành các hình vuông khác nhau. Đây là những pixel và khi chúng được kết hợp với nhau, chúng tạo thành một hình ảnh.

Một trong những cách đơn giản để thể hiện hình ảnh là, dưới dạng ma trận. Chúng ta thậm chí có thể tạo một hình ảnh bằng ma trận và lưu nó! Sẽ chỉ cho bạn cách, sau trong bài viết này. Hãy xem hình ảnh này dưới đây:

Hình 2

Hình ảnh này là một ví dụ về cách biểu diễn ma trận của một hình ảnh trông như thế nào. Ở bên trái, là hình ảnh của Lincoln, ở giữa, các giá trị pixel được dán nhãn với các số từ 0 đến 255, biểu thị cường độ hoặc độ sáng của chúng và bên phải, các số trong ma trận tự tạo thành chính chúng. Mỗi giá trị trong ma trận tương ứng với một pixel, là yếu tố nhỏ nhất của thông tin có trong một hình ảnh. Kiểm tra các giá trị pixel hình ảnh bằng cách chỉ in biến mà bạn đã tải hình ảnh!

print[img]

Độ phân giải hình ảnh:

Độ phân giải hình ảnh có thể được định nghĩa là số lượng pixel có trong một hình ảnh. Chất lượng của hình ảnh tăng lên khi số lượng pixel tăng lên. Chúng ta đã thấy trước đó, hình dạng của hình ảnh cung cấp số lượng hàng và cột. Điều này có thể được nói như là độ phân giải của hình ảnh đó. Một số độ phân giải tiêu chuẩn là hầu hết mọi người đều biết là & nbsp; 320 x 240 pixel [chủ yếu phù hợp trên các thiết bị màn hình nhỏ], & nbsp; Xem trên các bộ TV định nghĩa tiêu chuẩn có tỷ lệ khung hình 4: 3], 1280 x 720 pixel [để xem trên màn hình màn hình rộng], 1280 x 1024 pixel [tốt để xem kích thước màn hình đầy đủ trên màn hình LCD với tỷ lệ 5: 4] , 1920 x 1080 pixel [để xem trên HD TV's] và bây giờ chúng tôi thậm chí có độ phân giải 4k, 5k và 8k là & nbsp; 3840 x 2160 pixel, & nbsp; 5120 × 2880 pixel Màn hình và TV.

Khi chúng ta nhân số lượng cột và số lượng hàng, chúng ta có thể thu được tổng số pixel có trong hình ảnh. Ví dụ, trong hình ảnh 320 x 240, tổng số pixel có trong đó là 76.800 pixel.

Xem hình ảnh

Hãy cho chúng tôi xem cách hiển thị hình ảnh trong cửa sổ. Đối với điều đó, chúng tôi phải tạo một cửa sổ GUI để hiển thị hình ảnh trên màn hình. Tham số đầu tiên phải là tiêu đề của màn hình cửa sổ GUI, được chỉ định ở định dạng chuỗi. Chúng ta có thể hiển thị hình ảnh trong một cửa sổ bật lên bằng phương thức cv2.imshow []. Nhưng, khi bạn cố gắng đóng nó, bạn có thể cảm thấy bị mắc kẹt với cửa sổ của nó. Vì vậy, để chống lại điều đó, chúng ta có thể sử dụng một phương pháp đơn giản của Wait Waitkey. Hãy thử phần mã này trong New A Cell:

pip install opencv-contrib-python
0

Ở đây, chúng tôi đã chỉ định tham số ‘0, trong Wait Waitkey, để giữ cho cửa sổ mở cho đến khi chúng tôi đóng nó. . Q '. Phương thức CV2.destroallWindows [] được sử dụng để đóng hoặc xóa các cửa sổ GUI khỏi màn hình/bộ nhớ.

Lưu hình ảnh

Trước khi lưu hình ảnh, làm thế nào về việc chuyển đổi hình ảnh thành thang độ xám và sau đó lưu nó? Chuyển đổi hình ảnh thành thang độ xám bằng cách sử dụng:

pip install opencv-contrib-python
1

Bây giờ chúng ta có thể lưu hình ảnh:

pip install opencv-contrib-python
2

và kiểm tra hình ảnh được lưu trong thư mục làm việc hiện tại. Tham số đầu tiên tương ứng với tên của tệp trong đó hình ảnh sẽ được lưu và tham số thứ hai là biến chứa hình ảnh [thông tin pixel].

Trích xuất các mặt phẳng bit hình ảnh và xây dựng lại chúng

Chúng ta có thể chia một hình ảnh thành các cấp độ khác nhau của các mặt phẳng bit. Ví dụ, chia một hình ảnh thành các mặt phẳng 8 bit [0-7], trong đó một vài mặt phẳng cuối cùng chứa phần lớn thông tin cho một hình ảnh.

Hình 3

Để làm điều này, chúng tôi có thể nhập thêm hai gói:

pip install opencv-contrib-python
3

Nếu bạn gặp lỗi trong khi nhập bất kỳ gói nào, bạn có thể cài đặt chúng bằng cách sử dụng:

pip install opencv-contrib-python
4

Bây giờ chúng tôi đang xác định một hàm để trích xuất từng mặt phẳng bit 8 cấp của hình ảnh.

pip install opencv-contrib-python
5

Bây giờ chúng tôi đã sẵn sàng để gọi chức năng.

pip install opencv-contrib-python
6

Chúng tôi đã xây dựng lại hình ảnh [gần giống nhau] bằng cách sử dụng ba mặt phẳng bit cuối cùng, tức là các mặt phẳng thứ sáu, thứ bảy và thứ tám. Và kết quả trông như thế này:

Làm thế nào về việc chúng ta tự xây dựng một hình ảnh nhỏ? Hãy để thử nó ngay bây giờ!

Xây dựng một hình ảnh tổng hợp nhỏ

Chúng ta có thể cố gắng tạo ra một hình ảnh tổng hợp chứa bốn hình vuông đồng tâm với bốn giá trị cường độ pixel khác nhau,

40, 80, 160 và 220.

pip install opencv-contrib-python
7

Hình ảnh kết quả sẽ trông như thế này:

Chúng ta có thể xem xét bằng cách sử dụng các bộ lọc và biến đổi khác nhau trên hình ảnh trong một bài viết khác.

Cảm ơn bạn đã đọc bài viết.

Hình 4

Hãy thoải mái thêm các đề xuất của bạn dưới các ý kiến ​​và chia sẻ nếu bạn thích bài viết này. Mã lập trình Python hoàn chỉnh trong Notebook Jupyter, được đề cập trong bài viết này có sẵn trên kho lưu trữ GitHub của tôi:

//github.com/jissdeodates/beginner-s-guide-to-computer-vision

References:

  1. Hình ảnh 1-//sevisionc.blogspot.com/2013/09/computer-vision-is-hulerwher.html
  2. Hình ảnh 2- & NBSP; //towardsdatascience.com/everything-you-ever-wanted-to-kning-about-computer-vision-heres-a-look-why-it-so-awese-e8a58dfb641e
  3. Hình ảnh 3- //nptel.ac.in/content/storage2/courses/117104069/chapter_8/8_13.html
  4. Hình ảnh 4- //memegenerator.net/instance/21508026/willy-wonka-oh-o-you-breated-a-computer-vision-algorithm-you-must-never-lose-the-remote

//docs.opencv.org/4.5.2/d1/dfb/intro.html

//docs.opencv.org/4.5.2/db/deb/tutorial_display_image.html

Các phương tiện truyền thông được hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của tác giả.

OpenCV trong Python để xử lý hình ảnh là gì?

OpenCV là một thư viện chỉ dành cho CPU [Gói] được xây dựng sẵn, được sử dụng rộng rãi cho tầm nhìn máy tính, học máy và các ứng dụng xử lý hình ảnh. Nó hỗ trợ một loạt các ngôn ngữ lập trình tốt bao gồm Python. Cài đặt gói OpenCV bằng cách sử dụng: PIP Cài đặt OpenCV-Python.a pre-built, open-source CPU-only library [package] that is widely used for computer vision, machine learning, and image processing applications. It supports a good variety of programming languages including Python. Install the OpenCV package using: pip install opencv-python.

OpenCV có tốt cho tầm nhìn máy tính không?

OpenCV là một thư viện rất nổi tiếng cho các nhiệm vụ xử lý hình ảnh và tầm nhìn máy tính.Nó là một trong những thư viện nguồn mở được sử dụng nhiều nhất cho dữ liệu hình ảnh và tầm nhìn máy tính.. It one of the most used pythons open-source library for computer vision and image data.

OpenCV và tầm nhìn máy tính có giống nhau không?

OpenCV [Thư viện tầm nhìn máy tính nguồn mở] là một thư viện phần mềm máy tính và máy tính mở nguồn mở.OpenCV được xây dựng để cung cấp một cơ sở hạ tầng phổ biến cho các ứng dụng tầm nhìn máy tính và để đẩy nhanh việc sử dụng nhận thức máy trong các sản phẩm thương mại.. OpenCV was built to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in the commercial products.

OpenCV có tốt nhất để xử lý hình ảnh không?

OpenCV - Tầm nhìn máy tính nguồn mở.Đây là một trong những công cụ được sử dụng rộng rãi nhất cho các tác vụ xử lý hình ảnh và tầm nhìn máy tính.one of the most widely used tools for computer vision and image processing tasks.

Bài Viết Liên Quan

Chủ Đề