scipy
Das scipy-Paket enthält verschiedene Toolboxen, die sich häufigen Problemen im wissenschaftlichen Rechnen widmen. Seine verschiedenen Untermodule entsprechen unterschiedlichen Anwendungen. Wie Interpolation, Integration, Optimierung, Bildverarbeitung, Sonderfunktionen und so weiter.
scipy kann mit anderen Standardbibliotheken für wissenschaftliches Rechnen verglichen werden, wie etwa GSL (GNU C oder C++ Scientific Computing Library) oder der Matlab-Toolbox. scipy ist das Kernpaket für wissenschaftliche Rechenprogramme in Python; es wird zur effizienten Berechnung von Numpy-Matrizen verwendet, sodass Numpy und Scipy zusammenarbeiten können.
Vor der Implementierung eines Programms lohnt es sich zu prüfen, ob die erforderliche Datenverarbeitungsmethode bereits in scipy vorhanden ist. Als nicht-professionelle Programmierer erfinden Wissenschaftler das Rad immer wieder neu, was zu Code führt, der voller Fehler ist, nicht optimiert und schwer zu teilen und zu warten ist. Im Gegensatz dazu sind Scipy-Programme optimiert und getestet und sollten daher wann immer möglich verwendet werden.
Scipy besteht aus einigen Untermodulen mit spezifischen Funktionen. Sie hängen alle von Numpy ab, sind jedoch grundsätzlich unabhängig voneinander.
Geben Sie ein Beispiel für die Installation unter Debian Linux (obwohl ich es verwende – unter Windows):
Kopieren Sie den Code Der Code lautet wie folgt:
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Die Standardmethode zum Importieren von Numpy und diesen Scipy-Modulen ist:
import numpy as np from scipy import stats # 其它子模块相同
Der Haupt-Scipy-Namespace enthält hauptsächlich echte Numpy-Funktionen (versuchen Sie es mit scipy.cos, das np.cos ist). Dies hat lediglich historische Gründe. Im Allgemeinen gibt es keinen Grund, import scipy in Ihrem Code zu verwenden.
Verwenden Sie den Bildanpassungs-SIFT-Algorithmus zur Logo-Erkennung
Zuerst das Rendering:
Unter anderem Es ist die Logo-Marke,
Der Code lautet wie folgt.
#coding=utf-8 import cv2 import scipy as sp img1 = cv2.imread('x1.jpg',0) # queryImage img2 = cv2.imread('x2.jpg',0) # trainImage # Initiate SIFT detector sift = cv2.SIFT() # find the keypoints and descriptors with SIFT kp1, des1 = sift.detectAndCompute(img1,None) kp2, des2 = sift.detectAndCompute(img2,None) # FLANN parameters FLANN_INDEX_KDTREE = 0 index_params = dict(algorithm = FLANN_INDEX_KDTREE, trees = 5) search_params = dict(checks=50) # or pass empty dictionary flann = cv2.FlannBasedMatcher(index_params,search_params) matches = flann.knnMatch(des1,des2,k=2) print 'matches...',len(matches) # Apply ratio test good = [] for m,n in matches: if m.distance < 0.75*n.distance: good.append(m) print 'good',len(good) # ##################################### # visualization h1, w1 = img1.shape[:2] h2, w2 = img2.shape[:2] view = sp.zeros((max(h1, h2), w1 + w2, 3), sp.uint8) view[:h1, :w1, 0] = img1 view[:h2, w1:, 0] = img2 view[:, :, 1] = view[:, :, 0] view[:, :, 2] = view[:, :, 0] for m in good: # draw the keypoints # print m.queryIdx, m.trainIdx, m.distance color = tuple([sp.random.randint(0, 255) for _ in xrange(3)]) #print 'kp1,kp2',kp1,kp2 cv2.line(view, (int(kp1[m.queryIdx].pt[0]), int(kp1[m.queryIdx].pt[1])) , (int(kp2[m.trainIdx].pt[0] + w1), int(kp2[m.trainIdx].pt[1])), color) cv2.imshow("view", view) cv2.waitKey()
Weitere Details zur Verwendung der SIFT-Methode des Scipy-Pakets für Bilderkennung in Python Beispiele für verwandte Artikel finden Sie auf der chinesischen PHP-Website!