Ich versuche, Vorlage Matching auf einem Bild zu machen, um alle Übereinstimmungen zu finden. Um dies zu erreichen, möchte ich einen Schwellenwert zwischen 0 und 1 verwenden, um den Prozess zu stoppen. Ich verwende den folgenden Code ein:Ruby OpenCv Template entspricht Schwellenwert
require 'opencv'
include OpenCV
template_filename = (ARGV.size == 2) ? ARGV[0] : File.expand_path(File.dirname(__FILE__) + '/lena-eyes.jpg')
match_image_filename = (ARGV.size == 2) ? ARGV[1] : File.expand_path(File.dirname(__FILE__) + '/lena-256x256.jpg')
template = CvMat.load(template_filename)
match_image = CvMat.load(match_image_filename)
10.times.each do |t|
result = match_image.match_template(template, :sqdiff_normed)
#result = result.normalize(0, 1, CV_NORM_MINMAX, -1, nil)
pt1 = result.min_max_loc[2]
pt2 = CvPoint.new(pt1.x + template.width, pt1.y + template.height)
match_image.rectangle!(pt1, pt2, :color => CvColor::Black, :thickness => 3)
end
window = GUI::Window.new('Display window')
window.show(match_image)
Das Problem ist, dass die minimalen und maximalen Werte, die ich mit dem match_template erhalten nicht zwischen 0 und 1, also bin ich nicht in der Lage, die Schwelle zu verwenden. Das erste Ergebnis hat folgende Min- und Max-Werte: [0.00011, 0.4955]. Die anderen Ergebnisse, die ungültig sind, haben die folgenden Min- und Max-Werte: [0.1190, 0.5369], [0.1296, 0.5369] ...
Ich habe versucht, die Normalize-Methode mit dem Ergebnis zu verwenden, aber es gibt mir immer 0 und 1 als Min- und Max-Werte.
Ich habe im Internet surfen und ich kann den Fehler auf meinem Code nicht finden. Gibt es eine Möglichkeit, die Min- und Max-Werte des Ergebnisses zwischen 0 und 1 zu normalisieren?
Ich bin mir nicht sicher, ob ich das verstehe. Könnten Sie nicht einige arithmetische und boolesche Logik mit Min und Max anwenden, um zu prüfen, ob Sie die Schleife unterbrechen sollten? –
Ich möchte die Schleife unterbrechen, wenn ein Ergebnis niedriger oder höher als ein Schwellenwert ist, aber die Werte von Min- und Max-Werten erlauben es mir nicht, dies zu tun. – ReyLitch
Sie meinen, dass Sie nicht wissen, was die Grenzen sein sollten? Sie würden erwarten, dass min und max außerhalb von (0..1) fallen, wenn etwas schief geht? –