Opencv3 计算机视觉:Python语言实现

这篇博客介绍了如何使用Python和OpenCV3进行计算机视觉应用,参考了《Opencv 3计算机视觉 Python语言实现(原书第二版)》。在实践过程中,作者遇到了图像处理的错误和训练结果不准确的问题,通过排除无关图片和更换负样本类型(从人物头像变为道路图片)解决了问题,并提供了训练结果和相关资料链接。

本代码参考的图书是《Opencv 3计算机视觉 Python语言实现(原书第二版)》。python版本3.6;opencv版本3.3.0。代码如下:

import cv2
import numpy as np
from os.path import join

# placeholder path
datapath = "C:/Users/ZXY/Desktop/mubiaogenzong/TrainImages"
def path(cls,i):
  return "%s/%s%d.pgm"  % (datapath,cls,i)

pos, neg = "pos-", "neg-"

detect = cv2.xfeatures2d.SIFT_create()
extract = cv2.xfeatures2d.SIFT_create()

flann_params = dict(algorithm = 1, trees = 5)
matcher = cv2.FlannBasedMatcher(flann_params, {})

bow_kmeans_trainer = cv2.BOWKMeansTrainer(40)#40个词
extract_bow = cv2.BOWImgDescriptorExtractor(extract, matcher)

def extract_sift(fn):
  im = cv2.imread(fn,0)
  return extract.compute(im, detect.detect(im))[1]
  
for i in range(8):
  bow_kmeans_trainer.add(extract_sift(path(pos,i)))
  #print(path(pos,i))
  bow_kmeans_trainer.add(extract_sift(path(neg,i)))
  #print(path(neg,i))
  #print(bow_kmeans_trainer)
  
voc = bow_kmeans_trainer.cluster()
extract_bow.setVocabul
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值