Suppose I want to detect if jam jar is there in an image or not. Eg in the following table, I've a jam jar on a table among other things. The code will detect the image have jam jar. If there's no jam jar in the image, the code will highlight that, there's not images.
I want to create a code using openCV in python to detect the image.
I came across that "Template Matching" is a way to do it. The code I'm using are the following:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('flower.jpg',0)
img2 = img.copy()
template = cv2.imread('jam_image.jpg',0)
w, h = template.shape[::-1]
# All the 6 methods for comparison in a list
methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR',
'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED']
for meth in methods:
img = img2.copy()
method = eval(meth)
# Apply template Matching
res = cv2.matchTemplate(img,template,method)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]:
top_left = min_loc
else:
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, 255, 2)
plt.subplot(121),plt.imshow(res,cmap = 'gray')
plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img,cmap = 'gray')
plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
plt.suptitle(meth)
plt.show()
There are 2 issues with this approach:
1) It doesn't detect actual object properly. 2) I want the code to tell me which are the image that are not matching.
Please find the images I used below.
Can anyone please help? Any coding example reference will do.
Thank you!
也许您可以尝试使用Google Vision API来确定问题的一部分: https : //cloud.google.com/vision/
Use machine learning for detecting jam jars in the image. First train your system using positive and negative training examples and then use that trained model to predict whether image contain jam jars or not.
You can use CNNs, SVM for that purpose. see links:
http://www.pyimagesearch.com/2015/11/09/pedestrian-detection-opencv/
HOG training and detection in Python using OpenCV
http://docs.opencv.org/2.4/modules/gpu/doc/object_detection.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.