2017-09-25 4 views
0

Ich versuche, ein Programm auszuführen, um SIFT-Funktionen eines Bildes in Python zu erkennen, aber ich bekomme regelmäßig eine Fehlermeldung: "Segmentation fault (core dumped)". Mein Stück Code:Python - SIFT-Datenverarbeitung mit Opencv: Der Kernel starb: Segmentierungsfehler (Core Dumped) Wie können wir das verhindern?

# -*- coding: utf-8 -*- 
import numpy as np 
import matplotlib.pyplot as plt 
import cv2 

img1 = plt.imread("test1.png").astype('uint8') 
img2 = plt.imread("test2.png").astype('uint8') 
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) 

###match of the points 
flann = cv2.FlannBasedMatcher(index_params,search_params) 
matches = flann.knnMatch(des1,des2,k=2) 

ich es in Python versucht und manchmal bekam ich diese Fehlermeldung: Segmentation fault (core dumped). Deshalb möchte ich es verhindern oder einen stabileren Ansatz verwenden. Ich suche Skimage, um ein Äquivalent zu finden

Antwort

1

Dieser Fehler tritt auf, weil Sie zu viel Speicher Ihres Geräts (RAM) verwenden. Jetzt gibt es einige plausible Lösungen -

  • Aktualisieren Sie das Gerät. Entweder aktualisieren Sie Ihr Gerät oder verwenden Sie AWS (kostenlose Tier ist auch verfügbar)
  • Code verbessern.

Hinweis - SIFT ist rechnerisch teuer und Zinsen Punkte nehmen viel Speicher, herauszufinden, so dass Sie besser zu einem Zeitpunkt ein Bild versuchen, oder vielleicht Bild skalieren und versuchen dann

+0

Ok danke;) Ich werde versuchen, Bilder zu verkleinern! Ich werde das heute tun und ich halte Sie auf dem Laufenden – user3601754

+0

Das Problem tritt weniger häufig auf;) aber es verschwindet nicht – user3601754

+0

Wie viele Kerne hat Ihr Laptop? Was ist sein RAM? Führst du es auf GPU? –

Verwandte Themen