Matching Features with ORB python opencv

asked 2015-07-29 11:49:27 -0600

shar gravatar image

hi im working in Matching Features with ORB python opencv but when i run this code i get this error Traceback (most recent call last):

ValueError: could not broadcast input array from shape () into shape ()

i don't know how to fix it

> import numpy as np import cv2 import
> time
>     
>     ESC=27   
>     camera = cv2.VideoCapture(0)
>     orb = cv2.ORB_create()
>     bf = cv2.BFMatcher(cv2.NORM_HAMMING,
>     crossCheck=True)
>     
>     imgTrainColor = cv2.imread('/home/shar/home.jpg')
>     imgTrainGray = cv2.cvtColor(imgTrainColor,
>     cv2.COLOR_BGR2GRAY)
>     
>     kpTrain = orb.detect(imgTrainGray,None)
>     kpTrain, desTrain = orb.compute(imgTrainGray, kpTrain)
>     
>     firsttime = True
>     
>     while True:
>     
>         ret, imgCamColor = camera.read()
>         imgCamGray = cv2.cvtColor(imgCamColor,
>        cv2.COLOR_BGR2GRAY)
>         kpCam = orb.detect(imgCamGray,None)
>         kpCam, desCam = orb.compute(imgCamGray, kpCam)
>         bf = cv2.BFMatcher(cv2.NORM_HAMMING,
>         crossCheck=True)
>         matches = bf.match(desCam,desTrain)
>         good = []
>         for m,n in matches:
>             if m.distance < 0.7*n.distance:
>                 good.append(m)
>     
>         if firsttime==True:
>             h1, w1 = imgCamColor.shape[:2]
>             h2, w2 = imgTrainColor.shape[:2]
>             nWidth = w1+w2
>             nHeight = max(h1, h2)
>             hdif = (h1-h2)/2
>             firsttime=False
>     
>         result = np.zeros((nHeight, nWidth, 3), np.uint8)
>         result[hdif:hdif+h2, :w2] = imgTrainColor
>         result[:h1, w2:w1+w2] = imgCamColor
>     
>         for i in range(len(matches)):
>             pt_a=(int(kpTrain[matches[i].trainIdx].pt[0]),
>             int(kpTrain[matches[i].trainIdx].pt[1]+hdif))
>             pt_b=(int(kpCam[matches[i].queryIdx].pt[0]+w2),
>             int(kpCam[matches[i].queryIdx].pt[1]))
>             cv2.line(result, pt_a, pt_b, (255, 0, 0))
>     
>         cv2.imshow('Camara', result)
>     
>         key = cv2.waitKey(20)                                 
>         if key == ESC:
>             break
>     
>     cv2.destroyAllWindows()
>     camera.release()
edit retag flag offensive close merge delete