我正在開發一個 python 程式來檢測與另一張圖片相比,一張圖片中是否缺少某些東西。基本上,它應該拍攝一個地方的照片,保存它,然后每當我們運行程式時,它應該從同一個地方的相機拍攝照片,并將它們與我們之前保存的照片進行比較,以檢測是否缺少物體圖片。
要求:
例如,我們拍攝了一張地板上的參考照片,地上放著兩個蘋果和一個橙子,然后保存該照片以備將來參考。之后,我們從地板上拿了一個蘋果,現在地板上只有一個蘋果和一個橙子。當我們運行該程式時,它應該使用相機拍攝一張照片,并將該照片與我們之前拍攝的照片進行比較。它應該檢測到圖片的某個區域(放置丟失的蘋果的地方)在新圖片中有所不同,并提醒用戶(列印一條訊息)......這就是整個想法。
這是我到目前為止所取得的成就:
我使用了 Pillow 庫中名為 ImageChops 的工具。它的問題在于它甚至可以檢測到由于噪聲而可能發生的非常小的變化。但我希望它能夠檢測到重大變化,例如缺少或添加到圖片中的物件。我也想用一個閾值來控制它。我在互聯網上搜索這樣做,但找不到任何有用的東西。這是我使用的代碼
from PIL import Image, ImageChops
import cv2
import os
import sys
img1 = Image.open('1.jpg')
img2 = Image.open('2.jpg')
diff = ImageChops.difference(img1, img2)
if diff.getbbox():
print("Total {} differences found".format(diff.getbbox()))
diff.show()
else:
print('No difference found')
如果有人能指出我正確的方向,我將不勝感激。謝謝
uj5u.com熱心網友回復:
您描述的一般問題稱為“特征匹配”。OpenCV 有很多工具可以用于這個確切目的:一種簡單的方法是https://docs.opencv.org/4.x/dc/dc3/tutorial_py_matcher.html,它比較兩個之間的 ORB 特征(基本上是廣義角)圖片。與直接比較像素值相比,這些型別的特征對光照和噪聲更加魯棒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/447016.html
