存储图片:https://drive.google.com/open?id=1uNx_6KeQaNtKNj1Y2Npd-vOvJ4Pf-X4m 产品图片:https://drive.google.com/open?id=1bev8AjajqbaceUPxVs2Z3iuqUOZaeoE-
我必须在商店图片中找到产品图片 如果仔细看,appy会有所不同。 产品图片为2D,商店图片为3D
还有其他方法吗?
我尝试过opencv的模板匹配功能
import cv2
import numpy as np
img_rgb = cv2.imread('C:\\Users\\ambuj\\Desktop\\NIFLR\\store1.png')
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('C:\\Users\\ambuj\\Desktop\\NIFLR\\appy1.png',0)
template= cv2.resize(template,(25,65))
w,h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_SQDIFF)
threshold = 0.1
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 2)
break
cv2.imshow('Detected',img_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()
预期结果:在有图片的图像中,应该有一个矩形
实际结果:https://drive.google.com/open?id=18QiX4MWa90jIGdvhfRn5dEOwIA6SHYlx
最左上角有一个红色矩形。
答案 0 :(得分:0)
我认为您无法通过模板匹配来检测到它,因为模板与商店图像上的对象太不同了。使用级联训练找到该对象。
https://docs.opencv.org/3.4.1/dc/d88/tutorial_traincascade.html