Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.90 KB | None | 0 0
  1. import cv2
  2. import numpy as np          
  3. import time                                
  4.  
  5. MIN_MATCH_COUNT=90                                              
  6. detector=cv2.xfeatures2d.SIFT_create()                      
  7.  
  8. FLANN_INDEX_KDITREE=0
  9. flannParam=dict(algorithm=FLANN_INDEX_KDITREE,tree=5)
  10. searchParam = dict(checks= 75)
  11. flann=cv2.FlannBasedMatcher(flannParam,searchParam)                  
  12.  
  13. trainImg=cv2.imread("./image/book.jpg")
  14. trainKP,trainDesc=detector.detectAndCompute(trainImg,None)  
  15.  
  16.  
  17. def cam():
  18.     cam=cv2.VideoCapture(0)
  19.     count = 0
  20.     while True:
  21.         ret, frame=cam.read()
  22.         # frameImg=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
  23.         frameKP,frameDesc=detector.detectAndCompute(frame,None)
  24.         matches=flann.knnMatch(frameDesc,trainDesc,k=2)
  25.  
  26.         goodMatch=[]
  27.         for m,n in matches:
  28.             if m.distance < 0.7*n.distance:
  29.                 goodMatch.append(m)
  30.         if len(goodMatch) > MIN_MATCH_COUNT:
  31.             tp=[]
  32.             fp=[]
  33.             for m in goodMatch:
  34.                 tp.append(trainKP[m.trainIdx].pt)
  35.                 fp.append(frameKP[m.queryIdx].pt)
  36.             tp,fp=np.float32((tp,fp))
  37.             H,status=cv2.findHomography(tp,fp,cv2.RANSAC,3.0)
  38.             h,w,c=trainImg.shape
  39.             trainBorder=np.float32([[[0,0],[0,h-1],[w-1,h-1],[w-1,0]]])
  40.             frameBorder=cv2.perspectiveTransform(trainBorder,H)
  41.             cv2.polylines(frame,[np.int32(frameBorder)],True,(0,255,0),5)
  42.             print("MRT didn't depart the station yet!")
  43.         else:
  44.             if count > 5:
  45.                 print("MRT depart the station")
  46.                 count = 0
  47.                 return True
  48.             else:
  49.                 count +=1
  50.         cv2.imshow('result',frame)
  51.         k = cv2.waitKey(30) & 0xff
  52.         if k == 27:
  53.             return True
  54.     cam.release()
  55.     cv2.destroyAllWindows()
  56. result = cam()
  57. print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement