OpenCV—Python HOG方向梯度直方圖 cv2.HOGDescriptor() 使用
阿新 • • 發佈:2018-12-14
def createTrainingInstances(self, images):
start = time.time()
hog = cv2.HOGDescriptor()
instances = []
for img, label in images:
img = read_color_image(img) #函式未知
img = cv2.resize(img, (128, 128), interpolation = cv2.INTER_AREA)
descriptor = hog.compute(img)
if descriptor is None:
descriptor = []
else:
descriptor = descriptor.ravel()
pairing = Instance(descriptor, label)
instances.append(pairing)
end = time.time() - start
self.training_instances = instances
print "HOG TRAIN SERIAL: %d images -> %f" % (len(images), end)
def hog_compute(ims):
samples=[]
winSize = (64,64)
blockSize = (16,16)
blockStride = (8,8)
cellSize = (8,8)
nbins = 9
derivAperture = 1
winSigma = 4.
histogramNormType = 0
L2HysThreshold = 2.0000000000000001e-01
gammaCorrection = 0
nlevels = 64
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,
histogramNormType,L2HysThreshold,gammaCorrection,nlevels)
#compute(img[, winStride[, padding[, locations]]]) -> descriptors
winStride = (8,8)
padding = (8,8)
locations = ((10,20),(30,30),(50,50),(70,70),(90,90),(110,110),(130,130),(150,150),(170,170),(190,190))
for im in ims:
hist = hog.compute(im,winStride,padding,locations)
samples.append(hist)
return np.float32(samples)
def get_hog(image):
winSize = (image.shape[1], image.shape[0]) # winSize = (64,64)
blockSize = (8,8) # blockSize = (16,16)
blockStride = (8,8)
cellSize = (8,8)
nbins = 9
derivAperture = 1
winSigma = 4.
histogramNormType = 0
L2HysThreshold = 2.0000000000000001e-01
gammaCorrection = 0
nlevels = 64
cv2.HOGDescriptor(winSize,blockSize,blockStride,
cellSize,nbins,derivAperture,
winSigma,histogramNormType,L2HysThreshold,
gammaCorrection,nlevels)
#compute(img[, winStride[, padding[, locations]]]) -> descriptors
winStride = (8,8)
padding = (8,8)
locations = [] # (10, 10)# ((10,20),)
hist = hog.compute(image,winStride,padding,locations)
return hist
def compute_hog(image, locations):
hog = cv2.HOGDescriptor()
winStride = (8, 8)
padding = (8, 8)
hist = hog.compute(image, winStride, padding, locations)
return hist
def get_hog_object(window_dims):
blockSize = (8,8)
# blockSize = (16,16)
blockStride = (8,8)
cellSize = (8,8)
nbins = 9
derivAperture = 1
winSigma = 4.
histogramNormType = 0 # HOGDescriptor::L2Hys
L2HysThreshold = 2.0000000000000001e-01
gammaCorrection = 0
nlevels = 64
hog = cv2.HOGDescriptor(window_dims,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,
histogramNormType,L2HysThreshold,gammaCorrection,nlevels)
return hog