『python』计算机视觉_OpenCV3目标检测器(待续)

bulid-in目标检测器

调用内部函数进行人体检测,实际效果并不好。民工三连:

hog = cv2.HOGDescriptor()                                          # 启动检测器对象
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())   # 指定检测器类型
found, w = hog.detectMultiScale(img)                               # 加载&&监测图像

完整程序:

import cv2
import numpy as np

def is_inside(o, i):
    ox, oy, ow, oh = o
    ix, iy, iw, ih = i
    return (ox > ix) and (oy > iy) and ((ox+ow) < (ix+iw)) and ((oy+oh) < (iy+ih))

def draw_persion(image, person):
    x, y, w, h = person
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 255), 2)

img = cv2.imread(‘./pycv-master/images/people.jpg‘)

hog = cv2.HOGDescriptor()                                          # 启动检测器对象
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())   # 指定检测器类型
found, w = hog.detectMultiScale(img)                               # 加载&&监测图像

found_filtered = []
for ri, r in enumerate(found):
    for qi, q in enumerate(found):
        if ri != qi and is_inside(r, q):          # 如果r的外面不存在框的话,记录之
            print(‘r‘,r)
            print(‘q‘,q)
            break
    else:                                # 这个放在for外面的else异常的飘逸(骚气)啊
        found_filtered.append(r)

for person in found_filtered:
    draw_persion(img, person)

cv2.imshow(‘people delection‘, img)
cv2.waitKey(0)
cv2.destroyAllWindows()

其他的地方没什么好讲的,只是有一处写法,实在是太骚气了,厉害:

for ri, r in enumerate(found):
    for qi, q in enumerate(found):
        if ri != qi and is_inside(r, q):
            print(‘r‘,r)
            print(‘q‘,q)
            break
    else:
        found_filtered.append(r)

使用一个else承接所有的for中的if,这个写法很新奇,搭配break,效果是for中所有if均为假的时候会运行else中的语句。

实际效果部分截图(超烂的检测结果):

时间: 2024-12-23 23:41:09

『python』计算机视觉_OpenCV3目标检测器(待续)的相关文章

『python』计算机视觉_OpenCV3角点特征Harris提取方法

因为当下的计划是熟悉语言和库,而图像特征提取脱离理论就很没意思了,并且很可能事倍功半,所以计算机视觉特征提取这部分跳过,直接开始和深度学习结合较为紧密的目标检测&识别部分. 本节介绍了OpenCV3中提取图像角点特征的函数: 1 # coding=utf-8 2 import cv2 3 import numpy as np 4 5 6 '''Harris算法角点特征提取''' 7 8 img = cv2.imread('chess_board.png') 9 gray = cv2.cvtCol

『python』计算机视觉_OpenCV3库安装

Anaconda打包安装: conda install --channel https://conda.anaconda.org/menpo opencv3 验证: >>> import cv2 >>> cv2.__version__ '3.2.0' 注意:这种安装方式仅支持python2. Windows下安装方式: Win下python库资源集合 1. 下载所需的版本,注意版本号的对应: opencv_python-3.1.0-cp35-cp35m-win_amd6

『python』计算机视觉_经典目标检测算法中的几个概念

图像金字塔 1.在从cv2.resize中,传入参数时先列后行的 2.使用了python中的生成器,调用时使用for i in pyramid即可 3.scaleFactor是缩放因子,需要保证缩放后的图不小于最小尺寸,对应神经网络就是训练尺寸 '''图像金字塔''' def resize(img, scaleFactor): # cv2.resize先接收列后接收行,返回亦然 return cv2.resize(img, (int(img.shape[1] * (1/scaleFactor))

『Python』常用函数实践笔记

库安装: 1).pip & conda 2).在win10下手动安装python库的方法: 『python』计算机视觉_OpenCV3库安装 原生: list.append():添加元素到list末尾 list.extend():使用一个list扩展另一个list 字典列表化:字典是有顺序的,而且list字典等于list字典的key dict = {'c':1,'b':2,'a':3} list(dict) # Out[13]: # ['c', 'b', 'a'] list(dict.keys(

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

『Python』内存分析_list和array的内存增长模式

『Python』内存分析_List对象内存占用分析 在Python中,列表是一个动态的指针数组,而array模块所提供的array对象则是保存相同类型的数值的动态数组.由于array直接保存值,因此它所使用的内存比列表少.列表和array都是动态数组,因此往其中添加新元素,而没有空间保存新的元素时,它们会自动重新分配内存块,并将原来的内存中的值复制到新的内存块中.为了减少重新分配内存的次数,通常每次重新分配时,大小都为原来的k倍.k值越大,则重新分配内存的次数越少,但浪费的空间越多.本节通过一系

『Python』内存分析_List对象内存占用分析

『Python』内存分析_下_list和array的内存增长模式 list声明后结构大体分为3部分,变量名称--list对象(结构性数据+指针数组)--list内容,其中id表示的是list对象的位置, v引用变量名称,v[:]引用list对象,此规则对python其他序列结构也成立,以下示范可用id佐证, a=b时,a和b指向同一个list对象 a=b[:]时,a的list对象和b的list对象指向同一个list内容 Q1:元素存储地址是否连续 首先见得的测试一下list对象存储的内容(结构3

『cs231n』计算机视觉基础

线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.差劲的方案,随机搜索 bestloss = float('inf') # 无穷大 for num in range(1000): W = np.random.randn(10, 3073) * 0.0001 loss = L(X_train, Y_train, W) if loss < bestloss: bestloss = loss bestW = W scores = bsetW.dot(Xt

『python』OpenCV3计算机视觉库安装

1.下载OpenCV: https://codeload.github.com/Itseez/opencv/zip/3.0.0 2.解压下载相关依赖: sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev pyt