scipy
scipy 패키지에는 과학 컴퓨팅의 일반적인 문제를 다루는 다양한 도구 상자가 포함되어 있습니다. 다양한 하위 모듈은 다양한 애플리케이션에 해당합니다. 보간, 통합, 최적화, 이미지 처리, 특수 기능 등과 같습니다.
scipy는 GSL(GNU C 또는 C++ 과학 컴퓨팅 라이브러리) 또는 Matlab 도구 상자와 같은 다른 표준 과학 컴퓨팅 라이브러리와 비교할 수 있습니다. scipy는 Python의 과학 컴퓨팅 프로그램을 위한 핵심 패키지입니다. numpy 행렬을 효율적으로 계산하는 데 사용되므로 numpy와 scipy가 함께 작동할 수 있습니다.
프로그램을 구현하기 전에 필요한 데이터 처리 방법이 scipy에 이미 존재하는지 확인하는 것이 좋습니다. 전문 프로그래머가 아닌 과학자들은 항상 바퀴를 재발명하여 버그로 가득 차고 최적화되지 않았으며 공유 및 유지 관리가 어려운 코드를 만드는 것을 좋아합니다. 대조적으로, Scipy 프로그램은 최적화되고 테스트되었으므로 가능할 때마다 사용해야 합니다.
Scipy는 특정 기능을 가진 일부 하위 모듈로 구성되어 있지만 모두 numpy에 의존하지만 각 모듈은 기본적으로 서로 독립적입니다.
Debian Linux에서의 설치 예를 들어보세요(Windows에서는 --를 사용하지만):
코드 복사 코드는 다음과 같습니다:
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
Numpy 및 이러한 scipy 모듈을 가져오는 표준 방법은 다음과 같습니다.
import numpy as np from scipy import stats # 其它子模块相同
기본 scipy 네임스페이스에는 대부분 실제 numpy 함수가 포함되어 있습니다(np.cos인 scipy.cos를 사용해 보세요). 이는 단지 역사적인 이유일 뿐이며 일반적으로 코드에서 import scipy를 사용할 이유가 없습니다.
로고 감지를 위해 이미지 매칭 SIFT 알고리즘 사용
먼저 렌더링:
그 중 로고마크입니다,
코드는 다음과 같습니다.
#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()
의 SIFT 방식을 이용한 이미지 인식 예시에 대한 자세한 내용은 Python의 Scipy 패키지 기사를 보려면 PHP 중국어 웹사이트에 주목하세요!