Python tạo hình ảnh mặt nạ

Hướng dẫn trước đây của tôi đã thảo luận về các hoạt động bitwise, một bộ kỹ thuật rất phổ biến được sử dụng rất nhiều trong xử lý hình ảnh

Và như tôi đã gợi ý trước đây, chúng ta có thể sử dụng cả các hoạt động và mặt nạ bitwise để xây dựng các ROI không phải là bản gốc. Điều khoản này cho phép chúng tôi trích xuất các vùng từ ảnh có định dạng hoàn toàn tùy ý

Đơn giản thôi;

Ví dụ, hãy nói rằng chúng tôi đã xây dựng một hệ thống tầm nhìn máy tính để nhận dạng khuôn mặt. Phần duy nhất của hình ảnh chúng tôi quan tâm đến việc tìm kiếm và mô tả là các phần của hình ảnh chứa khuôn mặt - chúng tôi chỉ đơn giản là không quan tâm đến phần còn lại của nội dung hình ảnh. Với điều kiện là chúng ta có thể tìm thấy các khuôn mặt trong hình ảnh, chúng ta có thể xây dựng một mặt nạ để chỉ hiển thị các khuôn mặt trong hình ảnh. Với điều kiện là chúng ta có thể tìm thấy các khuôn mặt trong ảnh, chúng ta có thể tạo mặt nạ để chỉ hiển thị các khuôn mặt trong ảnh

Một ứng dụng mặt nạ khác mà bạn gặp phải là sự kết hợp và minh bạch alpha [ví dụ:. in direction this direction về việc tạo GIF với openCV]. Khi áp dụng tính minh bạch cho hình ảnh với OpenCV, chúng ta cần nói OpenCV những phần nào của độ trong suốt hình ảnh nên được áp dụng cho nên không - Mặt nạ cho phép chúng ta tạo ra sự khác biệt đó

Để tìm hiểu cách thực hiện mặt nạ hình ảnh với OpenCV, chỉ cần tiếp tục đọc

Trong phần đầu tiên của hướng dẫn này, chúng tôi sẽ định cấu hình môi trường phát triển của chúng tôi và xem xét dự án cấu trúc cấu trúc của chúng tôi

Sau đó, chúng tôi sẽ thực hiện một lệnh Python file để đánh dấu ảnh với OpenCV

Your setting your development environment setting

Để làm theo hướng dẫn này, bạn cần cài đặt thư viện OpenCV trên hệ thống của bạn

May mắn thay, OpenCV không thể cài đặt được

$ pip install opencv-contrib-python

Nếu bạn cần giúp định cấu hình môi trường phát triển của mình cho OpenCV, tôi khuyên bạn nên đọc hướng dẫn cài đặt OpenCV đặt PIP của tôi - nó sẽ giúp bạn và chạy trong vài phút. hướng dẫn pip cài đặt OpenCV — hướng dẫn này sẽ giúp bạn thiết lập và chạy trong vài phút

Có vấn đề về cấu hình môi trường phát triển của bạn?

Hình 1. Khó khăn trong việc cấu hình môi trường phát triển của bạn? . Gặp sự cố khi định cấu hình môi trường phát triển của bạn?

Tất cả những gì đã nói, là bạn

  • Shortcut about time?
  • Học trên hệ thống khóa hành động chính của nhà tuyển dụng?
  • Muốn bỏ qua những rắc rối khi chiến đấu với dòng lệnh, người quản lý gói và môi trường ảo?
  • Bạn có sẵn sàng để chạy mã ngay bây giờ trên các hệ thống Windows, MacOS hoặc Linux của bạn không?

Sau đó tham gia PyimageSearch Plus ngay hôm nay

Có quyền truy cập vào máy tính xách tay Jupyter để hướng dẫn này và hướng dẫn PyimageSearch khác được cấu hình sẵn để chạy trên hệ sinh thái Google Colab, ngay trong trình duyệt web của bạn. Không cần cài đặt. Không cần cài đặt

Và tốt nhất, những chiếc máy tính xách tay Jupyter này sẽ chạy trên Windows, MacOS và Linux

Cấu hình dự án

Thực hiện mặt nạ hình ảnh với OpenCV nhanh hơn bạn nghĩ. Nhưng trước khi chúng tôi viết bất kỳ mã nào, trước tiên hãy xem xét cấu trúc thư mục dự án của chúng tôi

Bắt đầu bằng cách sử dụng phần Tải xuống của Hướng dẫn này trong Hướng dẫn này để truy cập mã nguồn và hình ảnh ví dụ. Phần “Tải xuống” của hướng dẫn này để truy cập mã nguồn và hình ảnh ví dụ

Thư mục dự án của bạn sẽ trông giống như sau

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files

Lệnh

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
0 của chúng tôi sẽ tải hình ảnh đầu tiên vào
# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
1 từ đĩa. Sau đó, chúng tôi sử dụng mặt nạ để trích xuất cả cơ thể và mặt từ hình ảnh bằng cách sử dụng mặt nạ chữ nhật và hình tròn tương ứng

Thực hiện mặt nạ hình ảnh với OpenCV

Hãy cùng học cách áp dụng mặt nạ hình ảnh bằng OpenCV

Mở tệp

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
0 trong cấu trúc thư mục dự án của bạn và hãy để Lừa làm việc

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]

Dòng 2-4 Nhập các gói Python yêu cầu của chúng tôi. Sau đó, chúng tôi phân tích các đối số dòng lệnh của chúng tôi trên các dòng 7-10. nhập các gói Python cần thiết của chúng tôi. Sau đó, chúng tôi phân tích các đối số dòng lệnh của mình trên Dòng 7-10

Chúng ta chỉ cần một công tắc duy nhất ở đây,

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
3, đó là đường dẫn đến hình ảnh chúng ta muốn che dấu. Chúng tôi tiếp tục và mặc định đối số
# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
3 đối với tệp
# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
1 trong thư mục dự án của chúng tôi

Bây giờ hãy tải hình ảnh này từ đĩa và thực hiện mặt nạ

# load the original input image and display it to our screen
image = cv2.imread[args["image"]]
cv2.imshow["Original", image]

# a mask is the same size as our image, but has only two pixel
# values, 0 and 255 -- pixels with a value of 0 [background] are
# ignored in the original image while mask pixels with a value of
# 255 [foreground] are allowed to be kept
mask = np.zeros[image.shape[:2], dtype="uint8"]
cv2.rectangle[mask, [0, 90], [290, 450], 255, -1]
cv2.imshow["Rectangular Mask", mask]

# apply our mask -- notice how only the person in the image is
# cropped out
masked = cv2.bitwise_and[image, image, mask=mask]
cv2.imshow["Mask Applied to Image", masked]
cv2.waitKey[0]

Các dòng 13 và 14 Tải

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
02 ban đầu từ đĩa và hiển thị nó trên màn hình của chúng tôi. tải bản gốc
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
2 từ đĩa và hiển thị nó trên màn hình của bạn

Hình 2. Tải hình ảnh đầu vào của chúng tôi từ đĩa. Đang tải hình ảnh đầu vào của chúng tôi từ đĩa

Sau đó, chúng tôi xây dựng một mảng numpy, chứa đầy đủ các số không, cùng chiều rộng và chiều cao với hình ảnh gốc của chúng tôi trên dòng 20. Dòng 20

Như tôi đã đề cập trong hướng dẫn trước đây của chúng tôi về cắt hình ảnh với OpenCV, chúng tôi có thể sử dụng các phương thức phát hiện đối tượng để tự động phát hiện các đối tượng/người trong hình ảnh. Tuy nhiên, chúng tôi sẽ sử dụng kinh nghiệm thực tế của chúng tôi về hình ảnh ví dụ của chúng tôi cho thời điểm hiện tại

Chúng tôi biết rằng khu vực chúng tôi muốn trích xuất ở góc dưới bên trái hình ảnh. Dòng 21 vẽ một hình chữ nhật màu trắng trên mặt nạ của chúng tôi, tương ứng với khu vực chúng tôi muốn trích xuất từ ​​ảnh gốc của chúng tôi. Dòng 21 vẽ một hình chữ nhật màu trắng trên mặt nạ của chúng ta, tương ứng với vùng mà chúng ta muốn trích xuất từ ​​hình ảnh ban đầu của mình

Bạn có nhớ chức năng xem xét

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3 trong hướng dẫn hoạt động bitwise của chúng tôi không?

Chúng tôi áp dụng mặt nạ của chúng tôi trên dòng 26 bằng hàm

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3. Dòng 26 sử dụng hàm the
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3

Hai tham số đầu tiên là chính

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
2 [nghĩa là, hình ảnh mà chúng tôi muốn áp dụng thao tác bitwise]

Tuy nhiên, phần quan trọng của hàm này là từ khóa

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
6. Khi được cung cấp, hàm
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
7 là
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
8 khi các giá trị pixel của hình ảnh bắt đầu bằng nhau và mặt nạ khác nhau không ở mỗi [x, y] -Phối hợp [trong trường hợp này, chỉ có pixel là một phần của hình chữ nhật màu]

Sau khi áp dụng mặt nạ của chúng tôi, chúng tôi hiển thị đầu ra trên dòng 27 và 28 mà bạn có thể thấy trong Hình 3. Dòng 27 và 28, bạn có thể thấy trong Hình 3

Hình 3. trái. Xây dựng mặt nạ chữ nhật. must. Áp dụng mặt nạ chữ nhật cho hình ảnh với OpenCV. Trái. Cấu tạo mặt nạ hình chữ nhật. Đúng. Áp dụng mặt nạ hình chữ nhật cho hình ảnh bằng OpenCV

Sử dụng mặt nạ chữ nhật của chúng tôi, chúng tôi chỉ có thể trích xuất vùng hình ảnh có chứa người đó và bỏ qua các phần còn lại

Chúng ta hãy nhìn vào một ví dụ khác, nhưng lần này bằng cách sử dụng mặt nạ không có nguồn gốc

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3

On line 32, we started restart

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
6 của chúng tôi để được bù đắp đầy đủ bằng các số không và cùng kích thước như hình ảnh gốc của chúng tôi. Dòng 32, chúng tôi khởi tạo lại
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
6 của chúng tôi để lấp đầy các số không và cùng kích thước với hình ảnh ban đầu của chúng tôi

Sau đó, chúng tôi vẽ một vòng tròn màu trắng trên hình ảnh mặt nạ của chúng tôi, bắt đầu từ trung tâm của khuôn mặt tôi với bán kính

# import the necessary packages
import numpy as np
import argparse
import cv2

# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser[]
ap.add_argument["-i", "--image", type=str, default="adrian.png",
	help="path to the input image"]
args = vars[ap.parse_args[]]
0 điểm ảnh

Áp dụng mặt nạ tròn sau đó được thực hiện trên dòng 34, một lần nữa sử dụng hàm

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3. Dòng 34, một lần nữa sử dụng hàm the
$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
3

Kết quả của mặt nạ tròn của chúng tôi có thể được nhìn thấy trong Hình 4. hinh 4

Hình 4. trái. Tạo mặt nạ tròn. must. trích xuất khuôn mặt từ hình ảnh đầu vào bằng mặt nạ tròn thay vì hình chữ nhật. Trái. Tạo mặt nạ hình tròn. Đúng. Trích xuất khuôn mặt từ hình ảnh đầu vào bằng mặt nạ hình tròn thay vì hình chữ nhật

Ở đây, chúng ta có thể thấy rằng mặt nạ tròn của chúng ta được hiển thị ở bên trái và ứng dụng của mặt nạ ở bên phải. Không giống như đầu ra từ Hình 3, khi chúng tôi trích xuất một vùng hình chữ nhật, lần này, chúng tôi đã trích xuất một vùng tròn tương ứng với khuôn mặt của tôi trong hình ảnh. Hình 3, khi chúng tôi trích xuất một vùng hình chữ nhật, lần này, chúng tôi đã trích xuất một vùng hình tròn chỉ tương ứng với khuôn mặt của tôi trong ảnh

Hơn nữa, chúng ta có thể sử dụng phương pháp này để trích xuất các vùng từ hình ảnh có hình dạng tùy chọn [hình chữ nhật, hình tròn, đường, đa giác, v. v. ]

Kết quả mặt nạ hình ảnh openCV

Để thực hiện mặt nạ hình ảnh với OpenCV, hãy đảm bảo truy cập vào phần Tải xuống của Google trong hướng dẫn này để truy xuất mã nguồn và hình ảnh ví dụ. Phần “Tải xuống” của hướng dẫn này để truy xuất mã nguồn và hình ảnh ví dụ

Từ đó, mở shell và thực hiện lệnh sau

$ tree . --dirsfirst
.
├── adrian.png
└── opencv_masking.py

0 directories, 2 files
9

Đầu ra mặt nạ của bạn nên khớp với tôi từ phần trước

Cái gì tiếp theo?

Thông tin khóa học. 53+ Tổng số lớp • 57 giờ video hướng dẫn theo yêu cầu • Cập nhật lần cuối. Tháng 10 năm 2022
Tổng cộng hơn 53 lớp • Hơn 57 giờ video hướng dẫn về mã theo yêu cầu • Cập nhật lần cuối. Tháng 10 năm 2022
★★★★★ 4. 84 [128 Xếp hạng] • Hơn 15.800 Học sinh Ghi danh

Tôi tin tưởng mạnh mẽ rằng nếu bạn có một giáo viên phù hợp, bạn có thể làm chủ tầm nhìn máy tính và học sâu

Bạn có cho rằng việc học tầm nhìn máy tính và học tập chuyên sâu phải tốn thời gian, quá sức và phức tạp?

That is not a field HỢP HỢP

Tất cả những gì bạn cần để làm chủ tầm nhìn máy tính và học tập sâu là để ai đó giải thích mọi thứ với bạn bằng thuật ngữ đơn giản, trực quan. Và đó chính xác là những gì tôi làm. Nhiệm vụ của tôi là thay đổi giáo dục và các chủ đề trí tuệ nhân tạo phức tạp được dạy như thế nào

Nếu bạn nghiêm túc với công việc học tầm nhìn máy tính, điểm dừng tiếp theo của bạn sẽ là Đại học Pyimagesearch, tầm nhìn máy tính toàn diện nhất, học sâu và khóa học OpenCV trực tuyến ngày hôm nay. Tại đây, bạn sẽ học cách áp dụng thành công và tự tin tầm nhìn máy tính vào công việc, nghiên cứu và dự án của bạn. Tham gia với tôi trong Mastery Mastery Mastery

Bên trong Đại học Pyimagesearch, bạn sẽ thấy

  • ✓ Hơn 53 khóa học về tầm nhìn máy tính thiết yếu, học tập sâu và chủ đề Các khóa học OpenCV53+ về chủ đề tầm nhìn máy tính thiết yếu, học sâu và OpenCV
  • ✓ 53+ Giấy chứng nhận hoàn thành53+ Giấy chứng nhận hoàn thành
  • ✓ Hơn 57 giờ video theo yêu cầu57+ giờ video theo yêu cầu
  • ✓ Các khóa học hoàn toàn mới được phát hành thường xuyên, đảm bảo bạn có thể theo kịp các kỹ thuật tiên tiến Các khóa học hoàn toàn mới được phát hành thường xuyên, đảm bảo bạn có thể theo kịp các kỹ thuật tiên tiến nhất
  • ✓ Sổ tay Jupyter được cấu hình sẵn trong Google ColabMáy tính xách tay Jupyter được cấu hình sẵn trong Google Colab
  • ✓ Chạy tất cả các ví dụ mã hóa trong trình duyệt web của bạn - hoạt động trên Windows, MacOS và Linux [không yêu cầu cấu hình môi trường Dev. ]
  • ✓ Truy cập vào các kho mã tập trung cho tất cả hơn 450 hướng dẫn về các kho mã pyimagesearch tập trung cho tất cả hơn 450 hướng dẫn trên PyImageSearch
  • ✓ Dễ dàng tải xuống một lần nhấp chọn mã, bộ dữ liệu, mô hình được đào tạo trước đó, v. v. Dễ dàng tải xuống bằng một cú nhấp chuột đối với mã, bộ dữ liệu, mô hình được đào tạo trước, v.v.
  • ✓ Truy cập trên thiết bị di động, máy tính xách tay, máy tính để bàn, v. v. Truy cập trên thiết bị di động, máy tính xách tay, máy tính để bàn, v.v.

Bấm vào đây để tham gia Đại học Pyimagesearch

BẢNG XÁC SUẤT

Trong hướng dẫn này, bạn đã học được những điều cơ bản về mặt nạ bằng OpenCV

Điểm chốt của mặt nạ là chúng cho phép chúng tôi chỉ tập trung tính toán vào các vùng của hình ảnh mà chúng tôi quan tâm. Tập trung tính toán của chúng tôi vào các khu vực quan tâm đến chúng tôi tác động đáng kể khi chúng tôi khám phá các chủ đề như học máy, phân loại hình ảnh và phát hiện đối tượng

Ví dụ: hãy cho rằng chúng tôi muốn xây dựng một hệ thống để phân loại các loại hoa

Trong thực tế, có lẽ chúng ta chỉ quan tâm đến các màu cánh hoa và kết cấu để thực hiện phân loại. Nhưng vì chúng tôi đang chụp ảnh trong một môi trường tự nhiên, chúng tôi cũng sẽ có nhiều khu vực khác nhau trong ảnh của chúng tôi, bao gồm bụi bẩn từ mặt đất, côn trùng và những bông hoa khác đang thu hút tầm nhìn. Làm thế nào chúng ta sẽ định lượng và phân loại chỉ là bông hoa mà chúng ta quan tâm? . Như chúng ta sẽ thấy, câu trả lời là mặt nạ

Để tải xuống mã nguồn cho bài đăng này [và được thông báo khi các hướng dẫn trong tương lai được xuất bản tại đây trên PyimageSearch], chỉ cần nhập địa chỉ email của bạn trong biểu mẫu bên dưới

Tải xuống mã nguồn và hướng dẫn tài nguyên 17 trang miễn phí

Nhập địa chỉ email của bạn dưới đây để nhận. Mã zip và hướng dẫn tài nguyên 17 trang miễn phí về tầm nhìn máy tính, openCV và học sâu. Bên trong bạn sẽ tìm thấy các hướng dẫn, sách, khóa học và thư viện được lựa chọn bằng tay của tôi để giúp bạn sử dụng CV và DL. Hướng dẫn tài nguyên 17 trang MIỄN PHÍ về Thị giác máy tính, OpenCV và Học sâu. Bên trong, bạn sẽ tìm thấy các hướng dẫn, sách, khóa học và thư viện được chọn lọc thủ công của tôi để giúp bạn thành thạo CV và DL

Làm cách nào để đánh dấu một hình ảnh trong Python?

Mặt nạ hình ảnh bằng Python Opencv. .

Tạo một khung vẽ màu đen với cùng kích thước với hình ảnh và đặt tên cho nó là mặt nạ

Thay đổi giá trị của mặt nạ bằng cách vẽ bất kỳ hình dạng nào trong hình ảnh và cung cấp cho nó một màu trắng

Thực hiện thao tác thêm bitwise trên hình ảnh với mặt nạ

Làm thế nào để bạn tạo mặt nạ trong Python?

Để tạo boolean mặt nạ từ một mảng, hãy sử dụng phương thức Ma. Make_make[] trong Python Numpy. Hàm có thể chấp nhận bất kỳ chuỗi nào có thể chuyển đổi cho các số nguyên hoặc danh nghĩa. Không yêu cầu nội dung phải là 0 và 1, giá trị 0 được hiểu là sai, mọi thứ khác là đúng. sử dụng ma. phương thức make_mask[] trong Python Numpy . Hàm có thể chấp nhận bất kỳ chuỗi nào có thể chuyển đổi thành số nguyên hoặc danh nghĩa. Không yêu cầu nội dung phải là 0 và 1, giá trị 0 được hiểu là Sai, mọi thứ khác là Đúng.

Làm thế nào để làm mặt nạ ảnh?

Mở một trình soạn thảo cấu hình hỗ trợ các lớp. Mở ảnh mà bạn muốn áp dụng mặt nạ. Lưu tệp với tên mới dưới dạng trùng lặp để bạn không ghi đè lên bản gốc. Tạo một lớp mới và sơn màu trắng cho lớp đó, đồng thời điều chỉnh độ trong suốt của lớp để bạn có thể nhìn thấy hình ảnh bên dưới

Chủ Đề