Hướng dẫn mask python - mặt nạ trăn

Trong phần thứ 5 này của chuỗi xử lý hình ảnh, chúng tôi thảo luận thêm về các hoạt động số học và bitwise, và che giấu hình ảnh trong Python.

Nội phân Chính showShow

  • Thiết lập môi trường
  • Các hoạt động số học trên hình ảnh sử dụng Python
  • Hoạt động bitwise
  • Kết hợp với và hoạt động
  • Đưa ra lựa chọn với hoặc hoạt động
  • Độc quyền với hoạt động XOR
  • Phủ định bằng cách sử dụng hoạt động không
  • Mặt nạ hình ảnh bằng python opencv

Chúng tôi khuyên bạn nên chạy qua, trước khi bắt đầu cuộc phiêu lưu học tập đeo mặt nạ của bạn ở đây.

Thiết lập môi trường

Các hoạt động số học trên hình ảnh sử dụng Python

Hoạt động bitwise

# importing numpy to work with pixels
import numpy as np

# importing argument parsers
import argparse

# importing the OpenCV module
import cv2


# initializing an argument parser object
ap = argparse.ArgumentParser()

# adding the argument, providing the user an option
# to input the path of the image
ap.add_argument("-i", "--image", required=True, help="Path to the image")

# parsing the argument
args = vars(ap.parse_args())

# reading the image location through args
# and reading the image using cv2.imread
image = cv2.imread(args["image"])

Các hoạt động số học trên hình ảnh sử dụng Python

Hoạt động bitwise

Kết hợp với và hoạt động

Đưa ra lựa chọn với hoặc hoạt động

Độc quyền với hoạt động XOR

Phủ định bằng cách sử dụng hoạt động không

# printing out details of image min, max and the wrap around
print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))

print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
print("wrap around :", str(np.uint8([50]) - np.uint8([100])))

Mặt nạ hình ảnh bằng python opencv

# adding pixels of value 255 (white) to the image
M = np.ones(image.shape, dtype="uint8") * 100
added = cv2.add(image, M)
cv2.imshow("Added", added)
cv2.waitKey(0)

Chúng tôi khuyên bạn nên chạy qua, trước khi bắt đầu cuộc phiêu lưu học tập đeo mặt nạ của bạn ở đây.

Các dòng mã sau đây được sử dụng trong tất cả các ứng dụng được đưa ra dưới đây. Thay vào đó, chúng tôi bao gồm những người ở đây để bạn không phải đọc qua một khối mã khổng lồ.

# adding pixels of value 0 (black) to the image
M = np.ones(image.shape, dtype="uint8") * 50
subtracted = cv2.subtract(image, M)
cv2.imshow("Subtracted", subtracted)
cv2.waitKey(0)

Giúp giảm sự lộn xộn :)

Hoạt động bitwise

Kết hợp với và hoạt động

Đưa ra lựa chọn với hoặc hoạt động

Độc quyền với hoạt động XOR

Phủ định bằng cách sử dụng hoạt động không

Mặt nạ hình ảnh bằng python opencv

Chúng tôi khuyên bạn nên chạy qua, trước khi bắt đầu cuộc phiêu lưu học tập đeo mặt nạ của bạn ở đây.

# creating a square of zeros using a variable
rectangle = np.zeros((300, 300), dtype="uint8")
cv2.rectangle(rectangle, (25, 25), (275, 275), 255, -1)
cv2.imshow("Rectangle : ", rectangle)

# creating a circle of zeros using a variable
circle = np.zeros((300, 300), dtype="uint8")
cv2.circle(circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle : ", circle)

Các dòng mã sau đây được sử dụng trong tất cả các ứng dụng được đưa ra dưới đây. Thay vào đó, chúng tôi bao gồm những người ở đây để bạn không phải đọc qua một khối mã khổng lồ.

Giúp giảm sự lộn xộn :)

Kết hợp với và hoạt động

Đưa ra lựa chọn với hoặc hoạt động

# the bitwise_and function executes the AND operation
# on both the images
bitwiseAnd = cv2.bitwise_and(rectangle, circle)
cv2.imshow("AND", bitwiseAnd)
cv2.waitKey(0)

Độc quyền với hoạt động XOR

Phủ định bằng cách sử dụng hoạt động không

Đưa ra lựa chọn với hoặc hoạt động

Độc quyền với hoạt động XOR

# the bitwise_or function executes the OR operation
# on both the images
bitwiseOr = cv2.bitwise_or(rectangle, circle)
cv2.imshow("OR", bitwiseOr)
cv2.waitKey(0)

Phủ định bằng cách sử dụng hoạt động không

Mặt nạ hình ảnh bằng python opencv

Độc quyền với hoạt động XOR

Phủ định bằng cách sử dụng hoạt động không

# the bitwise_xor function executes the XOR operation
# on both the images
bitwiseXor = cv2.bitwise_xor(rectangle, circle)
cv2.imshow("XOR", bitwiseXor)
cv2.waitKey(0)

Mặt nạ hình ảnh bằng python opencv

Phủ định bằng cách sử dụng hoạt động không

Mặt nạ hình ảnh bằng python opencv

Chúng tôi khuyên bạn nên chạy qua, trước khi bắt đầu cuộc phiêu lưu học tập đeo mặt nạ của bạn ở đây.

Các dòng mã sau đây được sử dụng trong tất cả các ứng dụng được đưa ra dưới đây. Thay vào đó, chúng tôi bao gồm những người ở đây để bạn không phải đọc qua một khối mã khổng lồ.

# the bitwise_not function executes the NOT operation
# on both the images
bitwiseNot = cv2.bitwise_not(rectangle, circle)
cv2.imshow("NOT", bitwiseNot)
cv2.waitKey(0)

Giúp giảm sự lộn xộn :)

Các hoạt động số học cho phép chúng tôi tăng cường rất nhiều khía cạnh của một hình ảnh.

Mặt nạ hình ảnh bằng python opencv

Chúng tôi khuyên bạn nên chạy qua, trước khi bắt đầu cuộc phiêu lưu học tập đeo mặt nạ của bạn ở đây.

Các dòng mã sau đây được sử dụng trong tất cả các ứng dụng được đưa ra dưới đây. Thay vào đó, chúng tôi bao gồm những người ở đây để bạn không phải đọc qua một khối mã khổng lồ.

Giúp giảm sự lộn xộn :)

Các hoạt động số học cho phép chúng tôi tăng cường rất nhiều khía cạnh của một hình ảnh.

Chúng ta có thể làm việc với ánh sáng, bóng tối, cải tiến màu đỏ, xanh dương và xanh lá cây.

  1. Rất nhiều bộ lọc hình ảnh trên các ứng dụng sử dụng cùng một phương pháp để thay đổi và làm đẹp các bức ảnh.black canvas with the same dimensions as the image, and naming it as
    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    9.
  2. Vì vậy, hãy để bắt đầu với tất cả các mã!white color.
  3. Đầu tiên, để hiểu liệu giới hạn có thể vượt quá 255 hoặc 0 hay không, chúng ta có thể tiến hành một bài kiểm tra đơn giản, cung cấp cho chúng ta
    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    1 và
    # printing out details of image min, max and the wrap around
    print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
    print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))
    
    print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
    print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
    
    2.

Trong ví dụ này, chúng tôi đang tăng cường độ của tất cả các pixel trong hình ảnh lên 100.

Điều này được thực hiện bằng cách xây dựng một ma trận có cùng kích thước với hình ảnh của chúng tôi bằng mô -đun

# printing out details of image min, max and the wrap around
print("max of 255 :", str(cv2.add(np.uint8([200]), np.uint8([100]))))
print("min of 0 :", str(cv2.subtract(np.uint8([50]), np.uint8([100]))))

print("wrap around :", str(np.uint8([200]) + np.uint8([100])))
print("wrap around :", str(np.uint8([50]) - np.uint8([100])))
3 và thêm nó vào hình ảnh của chúng tôi.

# creating a mask of that has the same dimensions of the image
# where each pixel is valued at 0
mask = np.zeros(image.shape[:2], dtype="uint8")

# creating a rectangle on the mask
# where the pixels are valued at 255
cv2.rectangle(mask, (0, 90), (290, 450), 255, -1)
cv2.imshow("Mask", mask)

# performing a bitwise_and with the image and the mask
masked = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow("Mask applied to Image", masked)
cv2.waitKey(0)

Trong trường hợp chúng tôi muốn làm tối một hình ảnh, chúng tôi trừ đi các giá trị pixel của hình ảnh, như hình dưới đây,

Điều này sẽ cung cấp cho bạn hai biến thể khác nhau của hình ảnh gốc, một cái sáng hơn và các biến thể khác.

Chúng tôi sử dụng các hoạt động bitwise rất nhiều thời gian trong khi cố gắng che dấu hình ảnh.

Tính năng này của OpenCV cho phép chúng tôi lọc ra một phần của hình ảnh có liên quan đến chúng tôi.

Đang cài đặt

Để hoạt động trên các hoạt động bitwise, trước tiên chúng tôi cần hai biến hoặc hình ảnh mà chúng tôi có thể tiến hành các hoạt động trên.

Vì vậy, hãy để tạo ra một hình vuông bitwise và một vòng tròn bitwise thông qua đó chúng ta có thể sử dụng các hoạt động bitwise.

Chúng tôi tiến hành với một tốc độ tốt, nhưng, trong trường hợp bạn muốn bỏ qua thời gian và đi đến cuối cùng, hãy là khách của tôi!

Ở đây, các bài viết cho phép bạn xem xét OpenCV và nhận dạng khuôn mặt, và việc triển khai Java của Android và Camerax Opencv.

Người giới thiệu

  • Trang web OpenCV chính thức
  • Giới thiệu để bắt đầu với OpenCV
  • Kho lưu trữ github của tôi để xử lý hình ảnh
  • Mã hoạt động số học
  • Mã hoạt động bitwise
  • Mã mặt nạ