Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh

Đối với bất cứ ai tình cờ gặp phải điều này trong tương lai.

Điều này có thể được thực hiện với khớp mẫu. Để tóm tắt (sự hiểu biết của tôi), khớp mẫu tìm kiếm một kết hợp chính xác của một hình ảnh trong một hình ảnh khác.

Đây là một ví dụ về cách thực hiện nó trong Python:

import cv2

method = cv2.TM_SQDIFF_NORMED

# Read the images from the file
small_image = cv2.imread('small_image.png')
large_image = cv2.imread('large_image.jpeg')

result = cv2.matchTemplate(small_image, large_image, method)

# We want the minimum squared difference
mn,_,mnLoc,_ = cv2.minMaxLoc(result)

# Draw the rectangle:
# Extract the coordinates of our best match
MPx,MPy = mnLoc

# Step 2: Get the size of the template. This is the same size as the match.
trows,tcols = small_image.shape[:2]

# Step 3: Draw the rectangle on large_image
cv2.rectangle(large_image, (MPx,MPy),(MPx+tcols,MPy+trows),(0,0,255),2)

# Display the original image with the rectangle around the match.
cv2.imshow('output',large_image)

# The image is only displayed if we call this
cv2.waitKey(0)

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh

Trong bài viết này, chúng tôi chỉ ra cách khớp một hình ảnh được nhúng trong một hình ảnh khác trong Python bằng mô -đun OpenCV.

OpenCV có các chức năng có thể thực hiện các tìm kiếm được nhắm mục tiêu trong suốt hình ảnh lớn hơn cho hình ảnh được nhúng trong đó, giả sử chúng tôi cung cấp cho nó hình ảnh đích để tìm kiếm.

Điều này được gọi là khớp mẫu.

OpenCV có chức năng, CV2.MatchTemplate (), cho phép chúng tôi tìm kiếm một hình ảnh được nhúng trong hình ảnh khác (lớn hơn) và chúng tôi có thể xem liệu chúng tôi có thể tìm thấy điều này không.

Điều này có thể có nhiều ứng dụng hữu ích như khám phá nếu một đối tượng nằm trong một hình ảnh rất cồng kềnh.

Vì vậy, trong ví dụ này, giả sử, chúng ta có hình ảnh sau đây được hiển thị bên dưới.

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh

Bây giờ chúng ta có một phần của hình ảnh này như một hình ảnh độc lập được hiển thị bên dưới. Chúng tôi đã lấy ra phần này ra khỏi hình ảnh gốc. Điều này đại diện cho lá vàng.

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh

Vì vậy, chúng tôi đã đưa phần này ra khỏi hình ảnh rừng nhiệt đới ban đầu. Hình ảnh này chứa một chiếc lá màu vàng.

Sử dụng OpenCV, chúng tôi định vị hình ảnh đích trong hình ảnh lớn hơn mà chúng tôi đang tìm kiếm và vẽ một hình chữ nhật xung quanh trận đấu.

Điều này cho chúng ta hình ảnh sau đây được hiển thị dưới đây.

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh

Vì vậy, bây giờ chúng ta hãy đi đến mã để xem cách này được thực hiện. Mã đầy đủ được hiển thị dưới đây.

Bây giờ chúng ta hãy xem qua mã này.

Chúng tôi nhập mô -đun OpenCV.

Sau đó, chúng tôi tạo một biến, hình ảnh, chứa hình ảnh chúng tôi muốn tìm kiếm. Trong trường hợp này, đó là 'Rainforest.png'.

Chúng tôi hiển thị hình ảnh này.

Sau đó chúng tôi tạo một phiên bản thang độ xám của hình ảnh này. Điều này đơn giản hóa hình ảnh.

Sau đó, chúng tôi tạo một biến khác, mẫu, đại diện cho hình ảnh tập hợp con mà chúng tôi muốn tìm kiếm trong hình ảnh lớn hơn, hình ảnh ('Rainforest.png'). Hình ảnh này được đặt tên là 'Yellowing-Leaf.png'.

Sau đó, chúng tôi có một biến khác, kết quả, lưu trữ về cơ bản liệu có một trận đấu nào được tìm thấy hay không.

Sau đó, chúng tôi tạo ra một bộ các giá trị cho phép chúng tôi có được vị trí của trận đấu, giả sử có một trận đấu. Biến, max_loc, đại diện cho

Tiếp theo, chúng ta có một tuple, chiều cao và chiều rộng khác, có chứa chiều cao và chiều rộng của hình ảnh mẫu hoặc hình ảnh đích mà chúng ta đang tìm kiếm trong hình ảnh lớn hơn. Chúng tôi có những giá trị này bởi vì chúng tôi sẽ làm nổi bật hình ảnh một khi được tìm thấy.

Sau đó, chúng ta có một biến, đối diện_corner, đại diện cho phía dưới bên phải của hình chữ nhật chúng ta sẽ tạo. Nếu chúng ta lấy MAX_LOC [0] và thêm chiều rộng và MAX_LOC [1] và thêm chiều cao, chúng ta đã đạt được góc dưới bên phải.

MAX_LOC đại diện cho góc trên cùng bên trái.

Sau đó, chúng tôi sử dụng hàm cv2.Rectangle () để vẽ một hình chữ nhật xung quanh khớp. Chúng tôi làm điều này với màu đỏ với độ dày đường 5.

Sau đó chúng tôi hiển thị hình ảnh.

Và đây là cách chúng ta có thể khớp một hình ảnh được nhúng trong một hình ảnh khác trong Python bằng OpenCV.

Tài nguyên liên quan

Trong bài viết này, chúng tôi sẽ nghiên cứu các cách khác nhau về cách bạn có thể đọc và hiển thị hình ảnh trong Python. Chúng ta có thể đạt được điều này theo nhiều cách. Lý do là do hỗ trợ thư viện phong phú. Chúng tôi cũng sẽ khám phá cách chúng tôi có thể sử dụng chúng trong việc lai tạo với nhau.how you can read and display images in Python. We can achieve this in numerous ways. The reason is due to the abundant library support. We will also explore how we can use them in crossbreeding with each other.

Sau đây là danh sách các thư viện của Python cho phép chúng tôi xử lý hình ảnh và thực hiện các tác vụ tương ứng.

  1. OpenCV
  2. Matplotlib
  3. Cái gối
  4. Scikit-Image
  5. Tensorflow

Bây giờ, hãy xem cách hiển thị một hình ảnh trong cửa sổ GUI Python một cách dễ dàng. Có thể có nhiều mô -đun và/hoặc hack khác để xem hình ảnh, vì vậy, don giới hạn bản thân chỉ là 5 mô -đun này!

1. OpenCV để hiển thị hình ảnh trong Python

Đây là một gói rất nổi tiếng, thân thiện với người mới bắt đầu và nguồn mở, và chịu trách nhiệm xử lý hình ảnh. Với một bộ lệnh nhỏ, chúng tôi có thể đưa hành trình về tầm nhìn máy tính của chúng tôi lên một tầm cao mới. Có hai chức năng chính cung cấp để đọc và hiển thị hình ảnh.Computer Vision journey to next level. There are two main functions OpenCV provides to read and display images.

  1. cv2.imread()
  2. cv2.imshow()

Code:

import sys # to access the system
import cv2
img = cv2.imread("sheep.png", cv2.IMREAD_ANYCOLOR)

while True:
    cv2.imshow("Sheep", img)
    cv2.waitKey(0)
    sys.exit() # to exit from all the processes

cv2.destroyAllWindows() # destroy all windows

Đầu ra:

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh
Hiển thị hình ảnh thông qua OpenCV

Explanation:

  1. Nhập gói & nbsp; opencv & nbsp; để truy cập các chức năng. Ngoài ra, nhập mô -đun & nbsp; sys & nbsp; cho các gói bổ sung.OpenCV package to access the functions. Also, import the sys module for additional packages.
  2. Tạo một biến AS & nbsp; img & nbsp; giữ hình ảnh của chúng tôi. Gọi & nbsp; cv2.Imread () & nbsp; function và cung cấp & nbsp; đường dẫn/hình ảnh & nbsp; tên dưới dạng tham số đầu tiên. Sau đó, đặt & nbsp; cv2.imread_anycolor & nbsp; là tham số tiếp theo để đọc mọi màu của hình ảnh.img that holds our image. Call the cv2.imread() function and deliver the image path/image name as a first parameter. Then set the cv2.IMREAD_ANYCOLOR is the next parameter to read every color of the image.
  3. Sau đó đặt a & nbsp; trong khi loop & nbsp; và điều đó sẽ giúp chúng tôi hiển thị hình ảnh số lần vô hạn cho đến khi chúng tôi thoát khỏi hệ thống.while loop and that will help us render the image an infinite number of times till we exit the system.
  4. Sau đó sử dụng chức năng & nbsp; cv2.imshow () & nbsp; bên trong vòng lặp trong khi. Nó lấy hai tham số, tiêu đề hình ảnh và biến đường dẫn hình ảnh & nbsp; img.cv2.imshow() function inside the while loop. It takes two parameters, the image title and the image path variable img.
  5. & Nbsp; cv2.waitkey () & nbsp; phương thức chờ cho đến khi chúng tôi thoát hoặc nhấp vào nút Đóng.cv2.waitkey() method waits till we exit or click on the close button.
  6. Sau đó gọi phương thức sys.exit () để thoát khỏi kỹ thuật một cách an toàn.
  7. Cuối cùng, chúng tôi phá hủy tất cả các cửa sổ được tạo bằng cách sử dụng & nbsp; cv2.destroyallwindows ().cv2.destroyAllWindows().

2. Matplotlib

Gói này chủ yếu để trực quan hóa dữ liệu. Nhưng, thông qua các kỹ thuật âm mưu, chúng ta có thể xem hình ảnh ở định dạng đồ họa trong đó mỗi pixel nằm trên trục 2D X-Y.graphical format where each pixel lies on 2D x-y axes.

Thư viện Thie cũng có các chức năng tương đương như của CV mở. Chỉ là tên gói thay đổi.

  1. matplotlib.image.imread()
  2. matplotlib.pyplot.imshow()

Code:

from matplotlib import pyplot as plt
from matplotlib import image as mpimg

plt.title("Sheep Image")
plt.xlabel("X pixel scaling")
plt.ylabel("Y pixels scaling")

image = mpimg.imread("sheep.png")
plt.imshow(image)
plt.show()

Output:

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh
Hiển thị hình ảnh thông qua matplotlib

Explanation:

  1. Nhập & nbsp; matplotlib & nbsp; gói, & nbsp; pylot & nbsp; và & nbsp; hình ảnh & nbsp; mô -đun.Matplotlib packages’ pylot and image modules.
  2. Đặt tiêu đề của hình ảnh AS & nbsp; hình ảnh cừu & nbsp; sử dụng & nbsp; plt.title () & nbsp; phương thức.Sheep Image using plt.title() method.
  3. Khi matplotlib đọc hình ảnh trong mặt phẳng & nbsp; x-y. Chúng tôi cần nhãn & nbsp; xlabel () & nbsp; và & nbsp; ylabel () & nbsp; các chức năng để đề cập đến các trục và pixel.x-y plane. We need labels xlabel() and ylabel() functions to mention the axes and the pixels.
  4. Tạo một biến AS & nbsp; một hình ảnh & nbsp; giữ hình ảnh của chúng tôi. Gọi & nbsp; mpimg.imread () & nbsp; function và đưa ra & nbsp; đường dẫn/hình ảnh & nbsp; name & nbsp; làm tham số đầu tiên.an image that holds our image. Call the mpimg.imread() function and give the image path/image name as a first parameter.
  5. Sau đó đặt a & nbsp; trong khi loop & nbsp; và điều đó sẽ giúp chúng tôi hiển thị hình ảnh số lần vô hạn cho đến khi chúng tôi thoát khỏi hệ thống.while loop and that will help us render the image an infinite number of times till we exit the system.
  6. Sau đó sử dụng chức năng & nbsp; plt.imshow () & nbsp; lấy biến hình ảnh & nbsp; img. Nhưng nó sẽ hiển thị nó trong & nbsp; phần phụ trợ.plt.imshow() function that takes image variable img. But it will show it in the backend.
  7. Để xem nó trên màn hình, hãy sử dụng phương thức & nbsp; plt.show () & nbsp; và chúng tôi có hình ảnh của chúng tôi với các tham số được chia tỷ lệ đúng trên màn hình.plt.show() method and we have our image with properly scaled parameters on the screen.

3. Gối

Thư viện này thường cung cấp các phương pháp đơn giản để thao tác hình ảnh. Chúng ta có thể nói rằng đó là một thư viện chỉ dành cho hình ảnh vì tính đơn giản và khả năng thích ứng của nó. Các chức năng chúng tôi sẽ sử dụng được mở () và hiển thị () từ mô -đun hình ảnh Pillow. Hành động này chỉ trong ba dòng mã.open() and show() from PILLOW’s Image module. This action is just within three lines of code.

Code:

from PIL import Image
img = Image.open("sheep.png")
img.show()

Output:

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh
Hiển thị hình ảnh qua gối

Explanation:

  1. Nhập mô -đun & nbsp; hình ảnh & nbsp; từ & nbsp; pil.Image from PIL.
  2. Tạo một biến & nbsp; img & nbsp; và sau đó gọi hàm mở () trong đó. Đưa ra đường dẫn có tệp hình ảnh.img and then call the function open() in it. Give the path that has the image file.
  3. Gọi & nbsp; show () & nbsp; hàm trong khớp với & nbsp; iMg & nbsp; biến thông qua toán tử & nbsp; dot.show() function in joint with img variable through the dot operator “.”.
  4. Nó hiển thị hình ảnh thông qua ứng dụng ảnh tích hợp trong hệ điều hành tương ứng của bạn.

4. Hình ảnh Scikit

SCIKIT-IMAGE là một mô-đun phụ của scikit-learn. Nó được xây dựng trên Python và thư viện hỗ trợ matplotlib do đó nó có được một số chức năng của nó. Các phương thức tương tự như các gói trước mà chúng tôi đã thấy trước đây.Scikit-Learn. It is built upon Python and supportive library Matplotlib thus it derives some of its functionalities. Methods are similar to that of the previous packages we saw before.

Code:

from skimage import io

img = io.imread("sheep.png")
io.imshow(img)

Output:

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh
Hiển thị hình ảnh thông qua lướt qua

5. Tensorflow

Đây là một thư viện máy học mạnh mẽ, đặc biệt là từ Google.inc. Nó hoạt động trên các khía cạnh khác nhau của học máy, học sâu và các khái niệm liên quan. Nó cũng có các bộ dữ liệu tích hợp để bắt đầu một hành trình không rắc rối của khoa học dữ liệu và kỹ thuật ML. Nó hoạt động cụ thể trên các lõi CUDA GPU của máy tính. Điều này làm cho việc đào tạo mô hình hiệu quả hơn và ít căng thẳng hơn cho CPU.Machine Learning library especially from Google.Inc. It works on different aspects of Machine Learning, Deep Learning, and related concepts. It also has built-in datasets to start a hassle-free journey of Data Science and ML engineering. It works specifically on the computer’s GPU CUDA cores. This makes the model training more efficient and gives less stress to the CPU.

Chúng tôi sẽ sử dụng thư viện này trong khớp với mô -đun matplotlib. Bởi vì điều này làm cho âm mưu hình ảnh và hiển thị dễ dàng hơn nhiều.

Code:

from warnings import filterwarnings
import tensorflow as tf
from tensorflow import io
from tensorflow import image
from matplotlib import pyplot as plt

filterwarnings("ignore") 
tf_img = io.read_file("sheep.png")
tf_img = image.decode_png(tf_img, channels=3)
print(tf_img.dtype)
plt.imshow(tf_img)
# plt.show()

Explanation:

  1. Nhập khẩu tenorflow. Sau đó từ TensorFlow & nbsp; cũng nhập IO và Image. & Nbsp; also import io and image. 
  2. Nhập khẩu & nbsp; Matplotlib từ & nbsp; mô -đun pyplot cho mục đích vẽ đồ thị.matplotlib’s pyplot module for plotting purposes.
  3. (Tùy chọn) & NBSP; Ngoài ra, hãy sử dụng gói cảnh báo để tránh các cảnh báo không cần thiết. also, use the warnings package to avoid unnecessary warnings.
  4. Tạo một biến hình ảnh tenorflow, tf_img và gọi phương thức io.Read_file (). Cho đường dẫn hình ảnh bên trong nó.
  5. Nó được đọc dưới dạng tệp mặc định & nbsp; Để xem nó là hình ảnh chúng ta cần sử dụng & nbsp; decode_png () & nbsp; hàm từ & nbsp; hình ảnh & nbsp; để được hệ thống công nhận. Hãy chắc chắn rằng bạn sử dụng chức năng quyết định chính xác. Chúng khác nhau cho từng loại hình ảnh. & NBSP; Sử dụng kênh = 3. Để sử dụng GPU mặc định.file. To view it as the image we need to use the decode_png() function from the image to get recognized by the system. Make sure you use the correct decider function. They are different for each image type. Use channels = 3. for default GPU usage.
  6. Cuối cùng, hiển thị hình ảnh đã chụp thông qua phương thức & nbsp; plt.imshow () & nbsp;plt.imshow() method.

Output:

Hướng dẫn python find image in image - trăn tìm hình ảnh trong hình ảnh
Hiển thị hình ảnh thông qua Tensorflow và Matplotlib

Sự kết luận

Vì vậy, đây là những cách khác nhau đáng kể thông qua đó chúng ta có thể thực hiện xử lý hình ảnh. Python có rất nhiều tùy chọn cho mỗi nhiệm vụ duy nhất. Nhận xét xuống phương thức và thư viện nào bạn thích nhiều nhất chúng tôi đã thực hiện trong bài viết này.

Làm cách nào để xác định một hình ảnh trong Python?

Làm thế nào để nhận dạng hình ảnh hoạt động trong Python..
Lớp tích chập: Mục đích: Phát hiện các tính năng nhất định trong hình ảnh. ....
Trở chỉnh Relu: Mục đích: Tăng tính phi tuyến tính của hình ảnh để chúng có thể dễ dàng tách rời. ....
Lớp gộp tối đa: Mục đích: Phân biệt các tính năng nếu chúng bị biến dạng. ....
Làm phẳng. ....
Lớp kết nối đầy đủ ..

Làm cách nào để tìm kiếm một bức ảnh của một bức ảnh khác?

Tất cả những gì bạn phải làm là truy cập hình ảnh.google.com, nhấp vào biểu tượng camera xuất hiện trong thanh tìm kiếm và: Dán vào URL của hình ảnh mà bạn đã thấy ở đâu đó trực tuyến, hoặc. Tải lên một cách thủ công một hình ảnh từ máy tính của bạn mà bạn đã lưu, hoặc. Kéo một hình ảnh từ một cửa sổ khác.

Làm thế nào để tôi tìm thấy một phần của một bức tranh?

Tìm kiếm với một hình ảnh được lưu trên điện thoại của bạn..
Trên điện thoại Android của bạn, hãy mở ứng dụng Google ..
Ở phía dưới, nhấn Khám phá ..
Trong thanh tìm kiếm, nhấn vào ống kính Google ..
Chụp hoặc tải lên ảnh để sử dụng cho tìm kiếm của bạn: ....
Chọn khu vực bạn muốn sử dụng cho tìm kiếm của bạn: ....
Ở phía dưới, cuộn để tìm kết quả tìm kiếm của bạn ..

Làm thế nào để bạn tìm thấy sự tương đồng giữa hai hình ảnh trong Python?

Đo điểm tương đồng trong hai hình ảnh bằng Python..
Lỗi bình phương trung bình (MSE).
Lỗi bình phương trung bình gốc (RMSE).
Tỷ lệ tín hiệu-nhiễu cực đại (PSNR).
Chỉ số tương tự cấu trúc (SSIM).
Chỉ số hình ảnh chất lượng phổ quát (UQI).
Chỉ số tương tự cấu trúc đa quy mô (MS-SSIM).
Erreur tương đối globale adimensionnelle de synthèse (ergas).