mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
added some constants to python cv2 api
This commit is contained in:
parent
cd2f3786f0
commit
6dc7ae0ff6
@ -856,6 +856,14 @@ void initcv2()
|
|||||||
PUBLISH(GC_INIT_WITH_MASK);
|
PUBLISH(GC_INIT_WITH_MASK);
|
||||||
PUBLISH(GC_EVAL);
|
PUBLISH(GC_EVAL);
|
||||||
|
|
||||||
|
PUBLISH(CV_ROW_SAMPLE);
|
||||||
|
PUBLISH(CV_VAR_NUMERICAL);
|
||||||
|
PUBLISH(CV_VAR_ORDERED);
|
||||||
|
PUBLISH(CV_VAR_CATEGORICAL);
|
||||||
|
|
||||||
|
PUBLISH(CV_AA);
|
||||||
|
|
||||||
|
|
||||||
#include "pyopencv_generated_const_reg.h"
|
#include "pyopencv_generated_const_reg.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,14 +16,14 @@ if len(sys.argv) > 1:
|
|||||||
img = cv2.imread(fn)
|
img = cv2.imread(fn)
|
||||||
else:
|
else:
|
||||||
sz = 4096
|
sz = 4096
|
||||||
print 'generating %dx%d precudural image ...' % (sz, sz)
|
print 'generating %dx%d procudural image ...' % (sz, sz)
|
||||||
img = np.zeros((sz, sz), np.uint8)
|
img = np.zeros((sz, sz), np.uint8)
|
||||||
track = np.cumsum(np.random.rand(1000000, 2)-0.5, axis=0)
|
track = np.cumsum(np.random.rand(500000, 2)-0.5, axis=0)
|
||||||
track = np.int32(track*20 + (sz/2, sz/2))
|
track = np.int32(track*10 + (sz/2, sz/2))
|
||||||
cv2.polylines(img, [track], 0, 255, 1, cv.CV_AA)
|
cv2.polylines(img, [track], 0, 255, 1, cv.CV_AA)
|
||||||
|
|
||||||
small = img
|
small = img
|
||||||
for i in xrange(4):
|
for i in xrange(3):
|
||||||
small = cv2.pyrDown(small)
|
small = cv2.pyrDown(small)
|
||||||
|
|
||||||
def onmouse(event, x, y, flags, param):
|
def onmouse(event, x, y, flags, param):
|
||||||
@ -33,6 +33,6 @@ def onmouse(event, x, y, flags, param):
|
|||||||
zoom = cv2.getRectSubPix(img, (800, 600), (x+0.5, y+0.5))
|
zoom = cv2.getRectSubPix(img, (800, 600), (x+0.5, y+0.5))
|
||||||
cv2.imshow('zoom', zoom)
|
cv2.imshow('zoom', zoom)
|
||||||
|
|
||||||
cv2.imshow('small', small)
|
cv2.imshow('preview', small)
|
||||||
cv.SetMouseCallback('small', onmouse, None)
|
cv.SetMouseCallback('preview', onmouse, None)
|
||||||
cv2.waitKey()
|
cv2.waitKey()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
from numpy import random
|
from numpy import random
|
||||||
import cv2, cv
|
import cv2
|
||||||
|
|
||||||
|
|
||||||
def make_gaussians(cluster_n, img_size):
|
def make_gaussians(cluster_n, img_size):
|
||||||
@ -22,7 +22,7 @@ def draw_gaussain(img, mean, cov, color):
|
|||||||
w, u, vt = cv2.SVDecomp(cov)
|
w, u, vt = cv2.SVDecomp(cov)
|
||||||
ang = np.rad2deg( np.arctan2(u[1, 0], u[0, 0]) )
|
ang = np.rad2deg( np.arctan2(u[1, 0], u[0, 0]) )
|
||||||
s1, s2 = np.sqrt(w)*3.0
|
s1, s2 = np.sqrt(w)*3.0
|
||||||
cv2.ellipse(img, (x, y), (s1, s2), ang, 0, 360, color, 1, cv.CV_AA)
|
cv2.ellipse(img, (x, y), (s1, s2), ang, 0, 360, color, 1, cv2.CV_AA)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -6,13 +6,6 @@ def load_base(fn):
|
|||||||
samples, responses = a[:,1:], a[:,0]
|
samples, responses = a[:,1:], a[:,0]
|
||||||
return samples, responses
|
return samples, responses
|
||||||
|
|
||||||
# TODO move these to cv2
|
|
||||||
CV_ROW_SAMPLE = 1
|
|
||||||
CV_VAR_NUMERICAL = 0
|
|
||||||
CV_VAR_ORDERED = 0
|
|
||||||
CV_VAR_CATEGORICAL = 1
|
|
||||||
|
|
||||||
|
|
||||||
class LetterStatModel(object):
|
class LetterStatModel(object):
|
||||||
train_ratio = 0.5
|
train_ratio = 0.5
|
||||||
def load(self, fn):
|
def load(self, fn):
|
||||||
@ -26,10 +19,10 @@ class RTrees(LetterStatModel):
|
|||||||
|
|
||||||
def train(self, samples, responses):
|
def train(self, samples, responses):
|
||||||
sample_n, var_n = samples.shape
|
sample_n, var_n = samples.shape
|
||||||
var_types = np.array([CV_VAR_NUMERICAL] * var_n + [CV_VAR_CATEGORICAL], np.uint8)
|
var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_CATEGORICAL], np.uint8)
|
||||||
#CvRTParams(10,10,0,false,15,0,true,4,100,0.01f,CV_TERMCRIT_ITER));
|
#CvRTParams(10,10,0,false,15,0,true,4,100,0.01f,CV_TERMCRIT_ITER));
|
||||||
params = dict(max_depth=10 )
|
params = dict(max_depth=10 )
|
||||||
self.model.train(samples, CV_ROW_SAMPLE, responses, varType = var_types, params = params)
|
self.model.train(samples, cv2.CV_ROW_SAMPLE, responses, varType = var_types, params = params)
|
||||||
|
|
||||||
def predict(self, samples):
|
def predict(self, samples):
|
||||||
return np.float32( [self.model.predict(s) for s in samples] )
|
return np.float32( [self.model.predict(s) for s in samples] )
|
||||||
@ -56,10 +49,10 @@ class Boost(LetterStatModel):
|
|||||||
sample_n, var_n = samples.shape
|
sample_n, var_n = samples.shape
|
||||||
new_samples = self.unroll_samples(samples)
|
new_samples = self.unroll_samples(samples)
|
||||||
new_responses = self.unroll_responses(responses)
|
new_responses = self.unroll_responses(responses)
|
||||||
var_types = np.array([CV_VAR_NUMERICAL] * var_n + [CV_VAR_CATEGORICAL, CV_VAR_CATEGORICAL], np.uint8)
|
var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_CATEGORICAL, cv2.CV_VAR_CATEGORICAL], np.uint8)
|
||||||
#CvBoostParams(CvBoost::REAL, 100, 0.95, 5, false, 0 )
|
#CvBoostParams(CvBoost::REAL, 100, 0.95, 5, false, 0 )
|
||||||
params = dict(max_depth=5) #, use_surrogates=False)
|
params = dict(max_depth=5) #, use_surrogates=False)
|
||||||
self.model.train(new_samples, CV_ROW_SAMPLE, new_responses, varType = var_types, params=params)
|
self.model.train(new_samples, cv2.CV_ROW_SAMPLE, new_responses, varType = var_types, params=params)
|
||||||
|
|
||||||
def predict(self, samples):
|
def predict(self, samples):
|
||||||
new_samples = self.unroll_samples(samples)
|
new_samples = self.unroll_samples(samples)
|
||||||
@ -105,7 +98,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('-model', default='rtrees', choices=models.keys())
|
parser.add_argument('-model', default='rtrees', choices=models.keys())
|
||||||
parser.add_argument('-data', nargs=1, default='letter-recognition.data')
|
parser.add_argument('-data', nargs=1, default='../cpp/letter-recognition.data')
|
||||||
parser.add_argument('-load', nargs=1)
|
parser.add_argument('-load', nargs=1)
|
||||||
parser.add_argument('-save', nargs=1)
|
parser.add_argument('-save', nargs=1)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
Loading…
Reference in New Issue
Block a user