tutorial instalar español contrib python image-processing opencv surf

instalar - ¿Alguien tiene algún ejemplo de cómo usar OpenCV con python para la extracción de descriptores?



opencv python tutorial pdf español (4)

Estoy tratando de usar OpenCV para extraer los descriptores SURF de una imagen. Estoy usando OpenCV 2.4 y Python 2.7, pero estoy luchando para encontrar cualquier documentación que proporcione cualquier información sobre cómo usar las funciones. He podido usar el siguiente código para extraer funciones, pero no puedo encontrar ninguna forma sensata de extraer descriptores:

import cv2 img = cv2.imread("im1.jpg") img2 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) surf = cv2.FeatureDetector_create(''SURF'') detector = cv2.GridAdaptedFeatureDetector(surf, 50) # max number of features fs = detector.detect(img2)

El código que intenté para extraer descriptores es:

import cv2 img = cv2.imread("im3.jpg") sd = cv2.FeatureDetector_create("SURF") surf = cv2.DescriptorExtractor_create("SURF") keypoints = [] fs = surf.compute(img, keypoints) # returns empty result sd.detect(img) # segmentation faults

¿Alguien tiene algún código de muestra que haga este tipo de cosas, o punteros a alguna documentación que proporcione muestras?


Aquí hay un simple código que hice recientemente para uni. Captura la imagen de una cámara y muestra los puntos clave detectados en la imagen de salida en tiempo real. Espero que te sea de utilidad.

Hay algo de documentación here .

Código:

import cv2 #Create object to read images from camera 0 cam = cv2.VideoCapture(0) #Initialize SURF object surf = cv2.SURF(85) #Set desired radius rad = 2 while True: #Get image from webcam and convert to greyscale ret, img = cam.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Detect keypoints and descriptors in greyscale image keypoints, descriptors = surf.detect(gray, None, False) #Draw a small red circle with the desired radius #at the (x, y) location for each feature found for kp in keypoints: x = int(kp.pt[0]) y = int(kp.pt[1]) cv2.circle(img, (x, y), rad, (0, 0, 255)) #Display colour image with detected features cv2.imshow("features", img) #Sleep infinite loop for ~10ms #Exit if user presses <Esc> if cv2.waitKey(10) == 27: break


Este es un ejemplo de un código que he escrito para extraer características de SURF usando Python 2.7 y OpenCV 2.4.

im2 = cv2.imread(imgPath) im = cv2.cvtColor(im2, cv2.COLOR_BGR2GRAY) surfDetector = cv2.FeatureDetector_create("SURF") surfDescriptorExtractor = cv2.DescriptorExtractor_create("SURF") keypoints = surfDetector.detect(im) (keypoints, descriptors) = surfDescriptorExtractor.compute(im,keypoints)

Esto funciona y devuelve un conjunto de descriptores. Desafortunadamente, dado que cv2.SURF () no funciona en 2.4, tienes que pasar por este proceso tedioso.


Usando open cv 2.4.3, puedes hacer lo siguiente:

import cv2 surf = cv2.SURF() keypoints, descriptors = surf.detectAndCompute(img,None,useProvidedKeypoints = True)


todofix esto sigo tu codigo y me sale esto

import cv2 img = cv2.imread("im3.jpg") sd = cv2.FeatureDetector_create("SURF") surf = cv2.DescriptorExtractor_create("SURF") keypoints = sd.detect(img) # segmentation faults l,d = surf.compute(img, keypoints) # returns empty result

dónde

l = puntos clave

d = descriptor