You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
4.8 KiB

From 164d39c1be66eb35b02fb7c30f65b5929c9e407d Mon Sep 17 00:00:00 2001
From: Vijay Mahantesh SM <vijay@vijay.(none)>
Date: Sat, 8 Dec 2012 01:55:24 +0530
Subject: [PATCH] new support for opencv 2.4.3 added
---
SimpleCV/ImageClass.py | 52 ++++++++++++++++++++++++++++++++------------------
1 file changed, 33 insertions(+), 19 deletions(-)
diff --git a/SimpleCV/ImageClass.py b/SimpleCV/ImageClass.py
index a545b50..6fab39a 100644
--- a/SimpleCV/ImageClass.py
+++ b/SimpleCV/ImageClass.py
@@ -7610,11 +7610,12 @@ class Image:
new_version = 0
#For OpenCV versions till 2.4.0, cv2.__versions__ are of the form "$Rev: 4557 $"
if not ver.startswith('$Rev:'):
- if int(ver.replace('.','0'))>=20400 :
- new_version = 1
- if int(ver.replace('.','0'))>=20402 :
- new_version = 2
-
+ if int(ver.replace('.','0'))>=20400:
+ new_version = 1
+ if int(ver.replace('.','0'))>=20402:
+ new_version = 2
+ if int(ver.replace('.','0'))>=20403:
+ new_version = 3
except:
logger.warning("Can't run Keypoints without OpenCV >= 2.3.0")
return
@@ -7622,11 +7623,11 @@ class Image:
if( forceReset ):
self._mKeyPoints = None
self._mKPDescriptors = None
-
- if( self._mKeyPoints is None or self._mKPFlavor != flavor ):
+
+ if( not(self._mKeyPoints) or self._mKPFlavor != flavor ):
if ( new_version == 0):
if( flavor == "SURF" ):
- surfer = cv2.SURF(thresh,_extended=highQuality,_upright=1)
+ surfer = cv2.SURF(thresh,_extended=highQuality,_upright=1)
self._mKeyPoints,self._mKPDescriptors = surfer.detect(self.getGrayNumpy(),None,False)
if( len(self._mKPDescriptors) == 0 ):
return None, None
@@ -7659,10 +7660,9 @@ class Image:
self._mKPDescriptors = None
self._mKPFlavor = "STAR"
del starer
-
-
- elif( new_version == 2 and flavor in ["SURF", "FAST"] ):
- if( flavor == "SURF" ):
+
+ elif( new_version >= 2 and flavor in ["SURF", "FAST"] ):
+ if( flavor == "SURF" and new_version==2):
surfer = cv2.SURF(hessianThreshold=thresh,extended=highQuality,upright=1)
#mask = self.getGrayNumpy()
#mask.fill(255)
@@ -7678,6 +7678,20 @@ class Image:
self._mKPFlavor = "SURF"
del surfer
+ if( flavor == "SURF" and new_version==3):
+ surfer = cv2.SURF(hessianThreshold=thresh,extended=highQuality,upright=1)
+ self._mKeyPoints,self._mKPDescriptors = surfer.detectAndCompute(self.getGrayNumpy(),None,useProvidedKeypoints = False)
+ if( len(self._mKPDescriptors) == 0 ):
+ return None, None
+
+ if( highQuality == 1 ):
+ self._mKPDescriptors = self._mKPDescriptors.reshape((-1,128))
+ else:
+ self._mKPDescriptors = self._mKPDescriptors.reshape((-1,64))
+
+ self._mKPFlavor = "SURF"
+ del surfer
+
elif( flavor == "FAST" ):
faster = cv2.FastFeatureDetector(threshold=int(thresh),nonmaxSuppression=True)
self._mKeyPoints = faster.detect(self.getGrayNumpy())
@@ -7693,19 +7707,19 @@ class Image:
if( len(self._mKPDescriptors) == 0 ):
return None, None
self._mKPFlavor = flavor
- del FeatureDetector
+ del FeatureDetector
elif( new_version >= 1 and flavor in ["FAST", "STAR", "MSER", "Dense"] ):
FeatureDetector = cv2.FeatureDetector_create(flavor)
self._mKeyPoints = FeatureDetector.detect(self.getGrayNumpy())
self._mKPDescriptors = None
self._mKPFlavor = flavor
- del FeatureDetector
-
- else:
- logger.warning("ImageClass.Keypoints: I don't know the method you want to use")
- return None, None
-
+ del FeatureDetector
+
+ else:
+ logger.warning("ImageClass.Keypoints: I don't know the method you want to use")
+ return None, None
+
return self._mKeyPoints,self._mKPDescriptors
def _getFLANNMatches(self,sd,td):
--
1.8.1.5