Я сталкиваюсь с проблемой, когда мне дают изображение, и мне нужно найти разницу между объектом на этом изображении и объектом передо мной, который я буду видеть через IP-камеру, используя python. это оригинальная фотография
![original handed photo](https://i.stack.imgur.com/rE8r2.png)
так выглядит канал с IP-камеры
![enter image description here](https://i.stack.imgur.com/hiq6a.png)
Теперь я должен написать программу для обнаружения различий между двумя объектами и цветовым кодом каждой отдельной детали. все просто, если в него включены только эти 2 изображения, но последнее должно быть в прямом эфире с камеры, поэтому написанная мною программа перегружена различиями из-за разного положения камеры или различной освещенности.
#!/usr/bin/env python
import cv2
from skimage import measure
import imutils
cap = cv2.VideoCapture(0)
img_gray = cv2.imread("pic1.png", 0)
img = cv2.imread("pic1.png")
while True:
_, frame = cap.read()
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
(score, diff) = measure.compare_ssim(img_gray, frame_gray, full=True)#we won't use the score
diff = (diff * 255).astype("uint8") # converting the float score from a (-1,1) range to 8 bit 0-255 range
thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
contours = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = imutils.grab_contours(contours)
for cnt in contours:
area = cv2.contourArea(cnt)
if 3150 < area:
(x,y,w,h) = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x,y), (x+w, y+h), (0,255,0))
cv2.imshow("Current", frame)
cv2.imshow("Back then", img)
cv2.imshow("mask", thresh)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
сейчас вывод на цветной видео поток должен быть как это
![enter image description here](https://i.stack.imgur.com/OMwuI.png)
цветное кодирование не является проблемой
я попытался дать нарисованным контурам заданную область для рисования, и, очевидно, это не сработало, равно как и вычисление баллов ssim. как мне подойти к этому, как будто я пытаюсь изобрести что-то уже построенное, но я не смог найти его через 2 недели.