Как найти объект на фотографии?
Программа находит разницу между двумя фотографиями, но показывает множество лишних пикселей. Как правильно нормализовать изображение?
Мой код:
import cv2
import math
import numpy as np
# load images
image1 = cv2.imread("image/test1.1.jpg")
image2 = cv2.imread("image/original.jpg")
#Normalized
#image1 = cv2.normalize(image1, image1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX,
dtype=cv2.CV_32F)
#image2 = cv2.normalize(image2, image2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX,
dtype=cv2.CV_32F)
# compute difference
difference = cv2.subtract(image1, image2)
# color the mask red
Conv_hsv_Gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU)
difference[mask != 255] = [0, 0, 255]
# add the red mask to the images to make the differences obvious
image1[mask != 255] = [0, 0, 255]
image2[mask != 255] = [0, 0, 255]
# store images
cv2.imwrite('df/diffOverImage1.png', image1)
cv2.imwrite('df/diff.png', difference)
im=cv2.imread('df/diff.png')
im_gray=cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
bw=cv2.threshold(im_gray, 19, 255, cv2.THRESH_BINARY)[1]
retval, labels, stats, centroids = cv2.connectedComponentsWithStats(bw, connectivity=8)
for i in range(45):
x,y,w,h,s=stats[i+1,:]
cv2.rectangle(im, (x, y), (x+w, y+h),(255, 255, 255), -1)
cv2.imwrite('df/name.png', im)
font = cv2.FONT_HERSHEY_COMPLEX
img2 = cv2.imread('df/name.png', cv2.IMREAD_COLOR)
img = cv2.imread('df/name.png', cv2.IMREAD_GRAYSCALE)
_, threshold = cv2.threshold(img, 110, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE,
cv2.CHAIN_APPROX_SIMPLE)
xx = []; yy = []
for cnt in contours:
approx = cv2.approxPolyDP(cnt, 0.009 * cv2.arcLength(cnt, True), True)
cv2.drawContours(img2, [approx], 0, (0, 0, 255), 5)
n = approx.ravel()
xc = (((n[0]+n[6])/2)-375)/10
xx.append(xc)
yc = (((n[1]+n[7])/2)-375)/10
yy.append(yc)
На этом этапе программа находит 3 объекта, но не три выбранные точки разницы.
Оригинал

Изображение с 3 точками для нахождения программой
