# plt.show() numFrm0 = dstCorr.shape[0] numFrm1 = dstCorr.shape[1] dirOut = '%s/%s_%s_matches' % (wdir, dir0, dir1) if not os.path.isdir(dirOut): os.mkdir(dirOut) for ii0 in xrange(numFrm0): tdst = dstCorr[ii0, :] idxMax = np.argmax(tdst) ccMax = tdst[idxMax] if ccMax > 0.5: ii1 = idxMax _, img0 = cap0.read(ii0) _, img1 = cap1.read(ii1) fkp0 = cap0.getKPByID(ii0, dscName) kp0, kd0 = fp.file2kp(fkp0) fkp1 = cap1.getKPByID(ii1, dscName) kp1, kd1 = fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) H, status, mKP1, mKP0, listGoodMatches, scores = getHomography2( kp0, kd0, kp1, kd1) cc = calcCCHomography(img0, img1, H) imgMatch = drawMatchesAndHomography(img1, img0, mKP0, mKP1, status, H, num=100) imgMatch = resizeImageToMaxSize(imgMatch, 900) winName = '[%d,%d] corr=%0.2f, Score=%d/%d (%0.1f%%)' % (
# kp1,kd1=fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) # cc=calcCCHomography(img0, img1, H) # dstCorr[ii0,ii1]=cc # dstCorr0[ii1]=cc # if cc>0.2: # print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc) # else: # print "Corr[%d,%d]=%0.2f" % (ii0,ii1,cc) # np.savetxt(foutDstCorr0, dstCorr0, delimiter=',') dstCorr=np.zeros( (numFrm0, numFrm1) ) for ii0 in xrange(numFrm0): _,img0=cap0.read(ii0) fkp0=cap0.getKPByID(ii0, dscName) kp0,kd0=fp.file2kp(fkp0) dstCorr0=np.zeros( (numFrm1,1) ) foutDstCorr0="%s/%s_match_to_%s_%d.csv" % (wdir,dir0,dir1, ii0) if os.path.isfile(foutDstCorr0): dstCorr0=np.genfromtxt(foutDstCorr0, delimiter=',') dstCorr[ii0,:]=dstCorr0 # for ii1 in xrange(numFrm1): # _,img1=cap1.read(ii1) # fkp1=cap1.getKPByID(ii1, dscName) # kp1,kd1=fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) # cc=calcCCHomography(img0, img1, H) # dstCorr[ii0,ii1]=cc # dstCorr0[ii1]=cc # if cc>0.2: # print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
# plt.show() numFrm0=dstCorr.shape[0] numFrm1=dstCorr.shape[1] dirOut='%s/%s_%s_matches' % (wdir, dir0, dir1) if not os.path.isdir(dirOut): os.mkdir(dirOut) for ii0 in xrange(numFrm0): tdst=dstCorr[ii0,:] idxMax=np.argmax(tdst) ccMax=tdst[idxMax] if ccMax>0.5: ii1=idxMax _,img0=cap0.read(ii0) _,img1=cap1.read(ii1) fkp0=cap0.getKPByID(ii0, dscName) kp0,kd0=fp.file2kp(fkp0) fkp1=cap1.getKPByID(ii1, dscName) kp1,kd1=fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) H, status, mKP1, mKP0, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) cc=calcCCHomography(img0, img1, H) imgMatch=drawMatchesAndHomography(img1, img0, mKP0, mKP1, status, H, num=100) imgMatch=resizeImageToMaxSize(imgMatch, 900) winName='[%d,%d] corr=%0.2f, Score=%d/%d (%0.1f%%)' % (ii0, ii1, cc, np.sum(status), len(status), 100.*float(np.sum(status))/float(len(status))) fimgOut='%s/match_%d_to_%d_corr=%0.1f.png' % (dirOut, ii0, ii1, cc) cv2.putText(imgMatch, winName, (30,30), cv2.FONT_HERSHEY_PLAIN,1.4,(0,0,0),6) cv2.putText(imgMatch, winName, (30,30), cv2.FONT_HERSHEY_PLAIN,1.4,(255,255,255),2) cv2.imwrite(fimgOut, imgMatch) # cv2.imshow(winName, imgMatch) cv2.imshow('corr-map', imgMatch) cv2.waitKey(20)
# # fimg='/home/ar/img/lena.png' # img=cv2.imread(fimg, 0) # det1=cv2.SIFT() # det2=cv2.SURF() # kp1,kd1=det1.detectAndCompute(img,None) # kp2,kd2=det2.detectAndCompute(img,None) # arrkp1=kp2arr(kp1) # arrkp2=kp2arr(kp2) # print 'test' lstfn = np.recfromtxt(fidx) cnt = 0 for ff in lstfn: for tt in listDet: fkp = '%s_%s.kp' % (ff, tt) fimgpOut = '%s_%s_kp_best.png' % (ff, tt) imgc = cv2.imread(ff, 1) kp, kd = fp.file2kp(fkp) # arrkp=kp2arr(kp) kpBest = getBestKp(kp) # fp.plotFPoints(imgc, kpBest, color=(0,0,255)) imgc = cv2.drawKeypoints( imgc, kpBest, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow("win-%s" % tt, imgc) # cv2.imwrite(fimgpOut, imgc) cv2.waitKey(0) print ff cnt += 1 # if cnt>3: # break
frm = cv2.cvtColor(frm, cv2.COLOR_BGR2GRAY) if parMaxFrameSize > 1: frm = ph.resizeToMaxSize(frm, parMaxFrameSize) frmOut = '%s/frame_%04d.png' % (wdirOut, cnt) frmOutPano = '%s_pano.png' % frmOut cv2.imwrite(frmOut, frm) if isFirstFrame: fsiz = np.array(frm.shape[0:2][::-1], np.float) frmPrev = frm frmPrevName = frmName isFirstFrame = False continue fkpPrev = '%s_%s.kp' % (frmPrevName, dscName) fkp = '%s_%s.kp' % (frmName, dscName) kpPrev = fp.file2kp(fkpPrev) kp = fp.file2kp(fkp) H, Q, Pano = imregFeaturePoins(frmPrev, frm, (kpPrev, kp), isDebug=True, detector=detector) cv2.imwrite(frmOutPano, Pano) if Q < parThresholdQ: if len(listH) == 0: H = np.eye(3, 3) else: H = listH[-1].copy() if len(listH) > 0: H0 = listH[-1] listH.append(np.dot(H0, H)) else:
cap=ph.VideoCSVReader(fvideo) cap.printInfo() lstKP=[] lstKD=[] lstKPData=[] numFrm=cap.getNumFrames() numFrm=6 totH=None homoBuff=HomoBuff(pcFrm) curlDefData=np.zeros((numFrm,2)) arrCoords=[] imgOld=None imgCurr=None for ii in xrange(0, numFrm): fkp=cap.getKPByID(ii, dscName) kpData=fp.file2kp(fkp) kpScore=calcFrameKPScore(kpData[0]) # print kpScore # lstKP.append(kpData[0]) # lstKD.append(kpData[1]) tmpH=np.eye(3) if ii==0: # totH=np.eye(3) totH=tmpH.copy() imgOld=cv2.imread(cap.listFImg[ii], 0) else: oldKPData=lstKPData[-1] tmpH,_,_=getHomography(kpData[0], kpData[1], oldKPData[0], oldKPData[1]) # tmpH,_,_=getHomography(oldKPData[0], oldKPData[1], kpData[0], kpData[1]) totH=np.dot(totH, tmpH) imgCurr=cv2.imread(cap.listFImg[ii], 0)
cap = ph.VideoCSVReader(fvideo) cap.printInfo() lstKP = [] lstKD = [] lstKPData = [] numFrm = cap.getNumFrames() numFrm = 6 totH = None homoBuff = HomoBuff(pcFrm) curlDefData = np.zeros((numFrm, 2)) arrCoords = [] imgOld = None imgCurr = None for ii in xrange(0, numFrm): fkp = cap.getKPByID(ii, dscName) kpData = fp.file2kp(fkp) kpScore = calcFrameKPScore(kpData[0]) # print kpScore # lstKP.append(kpData[0]) # lstKD.append(kpData[1]) tmpH = np.eye(3) if ii == 0: # totH=np.eye(3) totH = tmpH.copy() imgOld = cv2.imread(cap.listFImg[ii], 0) else: oldKPData = lstKPData[-1] tmpH, _, _ = getHomography(kpData[0], kpData[1], oldKPData[0], oldKPData[1]) # tmpH,_,_=getHomography(oldKPData[0], oldKPData[1], kpData[0], kpData[1]) totH = np.dot(totH, tmpH)
frm=cv2.cvtColor(frm, cv2.COLOR_BGR2GRAY) if parMaxFrameSize>1: frm=ph.resizeToMaxSize(frm, parMaxFrameSize) frmOut='%s/frame_%04d.png' % (wdirOut, cnt) frmOutPano='%s_pano.png' % frmOut cv2.imwrite(frmOut, frm) if isFirstFrame: fsiz=np.array(frm.shape[0:2][::-1], np.float) frmPrev=frm frmPrevName=frmName isFirstFrame=False continue fkpPrev='%s_%s.kp' % (frmPrevName, dscName) fkp ='%s_%s.kp' % (frmName, dscName) kpPrev=fp.file2kp(fkpPrev) kp =fp.file2kp(fkp) H,Q,Pano=imregFeaturePoins(frmPrev, frm, (kpPrev, kp), isDebug=True, detector=detector) cv2.imwrite(frmOutPano, Pano) if Q<parThresholdQ: if len(listH)==0: H=np.eye(3,3) else: H=listH[-1].copy() if len(listH)>0: H0=listH[-1] listH.append(np.dot(H0,H)) else: listH.append(H) # tdxyas=calcShiftAngleScale2(listH[-1],np.array(frm.shape[:2][::-1])/2.0)
# kp1,kd1=fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) # cc=calcCCHomography(img0, img1, H) # dstCorr[ii0,ii1]=cc # dstCorr0[ii1]=cc # if cc>0.2: # print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc) # else: # print "Corr[%d,%d]=%0.2f" % (ii0,ii1,cc) # np.savetxt(foutDstCorr0, dstCorr0, delimiter=',') dstCorr = np.zeros((numFrm0, numFrm1)) for ii0 in xrange(numFrm0): _, img0 = cap0.read(ii0) fkp0 = cap0.getKPByID(ii0, dscName) kp0, kd0 = fp.file2kp(fkp0) dstCorr0 = np.zeros((numFrm1, 1)) foutDstCorr0 = "%s/%s_match_to_%s_%d.csv" % (wdir, dir0, dir1, ii0) if os.path.isfile(foutDstCorr0): dstCorr0 = np.genfromtxt(foutDstCorr0, delimiter=',') dstCorr[ii0, :] = dstCorr0 # for ii1 in xrange(numFrm1): # _,img1=cap1.read(ii1) # fkp1=cap1.getKPByID(ii1, dscName) # kp1,kd1=fp.file2kp(fkp1) # H, status, mKP0, mKP1, listGoodMatches, scores= getHomography2(kp0, kd0, kp1, kd1) # cc=calcCCHomography(img0, img1, H) # dstCorr[ii0,ii1]=cc # dstCorr0[ii1]=cc # if cc>0.2: # print "Corr[%d,%d]=%0.2f !!!!" % (ii0,ii1,cc)
if __name__=='__main__': # # fimg='/home/ar/img/lena.png' # img=cv2.imread(fimg, 0) # det1=cv2.SIFT() # det2=cv2.SURF() # kp1,kd1=det1.detectAndCompute(img,None) # kp2,kd2=det2.detectAndCompute(img,None) # arrkp1=kp2arr(kp1) # arrkp2=kp2arr(kp2) # print 'test' lstfn=np.recfromtxt(fidx) cnt=0 for ff in lstfn: for tt in listDet: fkp='%s_%s.kp' % (ff, tt) fimgpOut='%s_%s_kp_best.png' % (ff,tt) imgc=cv2.imread(ff, 1) kp,kd=fp.file2kp(fkp) # arrkp=kp2arr(kp) kpBest=getBestKp(kp) # fp.plotFPoints(imgc, kpBest, color=(0,0,255)) imgc=cv2.drawKeypoints(imgc, kpBest, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imshow("win-%s" % tt, imgc) # cv2.imwrite(fimgpOut, imgc) cv2.waitKey(0) print ff cnt+=1 # if cnt>3: # break