hog

import cv2 as cv

#读入数据,并转为灰度图
img = cv.imread("1.jpg", cv.COLOR_BGR2GRAY)
#展示原图
cv.imshow("原图",img)
#声明一个HOG描述器
hog = cv.HOGDescriptor()
#将训练好的模型导入
#hog.load('myHogDector.bin')
hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
#对img多尺度进行预测
rects, _ = hog.detectMultiScale(img, winStride=(4, 4), padding=(8, 8), scale=1.05)
#修正识别框(参数可调)
for (x,y,w,h) in rects:
    x = int(x + w * 0.1)
    y = int(y + h * 0.05)
    w = int(w * 0.7)
    h = int(h * 0.8)
    #将识别到的框绘制到img图像上
    cv.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
    

#cv.imshow('{}'.format(0),img)
#显示识别结果
cv.imshow("识别结果",img)
#暂停查看结果
cv.waitKey(0)

 

 

### HOG特征描述符在计算机视觉中的应用及其实现 #### 计算机视觉中的HOG特征描述符概述 HOG(Histogram of Oriented Gradients)是一种用于物体检测的特征描述符,其核心思想是通过捕捉图像中局部区域的梯度方向分布来描述目标的形状特征[^1]。这种技术特别适合于需要识别特定对象的任务,例如行人检测。 #### HOG特征描述符的工作流程 以下是HOG特征描述符的主要计算步骤: ##### 数据预处理 为了提高算法性能,在实际操作前通常会对输入图像进行标准化处理,比如调整大小、灰度转换以及噪声去除等操作。 ##### 梯度计算 利用Sobel算子或其他边缘检测方法分别沿水平和垂直两个方向上求取像素变化率即偏导数,从而得到每个像素点处对应的梯度强度及其指向角度[^2]。 ##### 创建直方图 对于划分好的单元格(Cell),统计该区域内所有像素点关于它们各自所属区间范围内的频率计数值形成一个固定长度向量表示当前区块的信息摘要;接着再把这些相邻的小块组合起来构成更大的结构单位——称为Block,并对其进行L2范式规范化以增强鲁棒性对抗光照条件改变等因素影响。 #### Python实现HOG特征提取 下面展示如何借助`opencv-python`库完成基本版的人体部位探测器构建工作流实例代码如下所示: ```python import cv2 from skimage import io, transform # 加载测试图片并转化为灰阶模式 image_path = 'test_image.jpg' img_gray = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 初始化默认参数设置下的hog descriptor对象 win_size = (64, 128) block_size = (16, 16) block_stride = (8, 8) cell_size = (8, 8) nbins = 9 deriv_aperture = 1 win_sigma = -1. histogram_norm_type = 0 l2_hys_threshold = 0.2 gamma_correction = True nlevels = 64 signed_gradient = False hog_descriptor = cv2.HOGDescriptor(win_size, block_size, block_stride, cell_size, nbins, deriv_aperture, win_sigma, histogram_norm_type, l2_hys_threshold, gamma_correction, nlevels, signed_gradient) # 设置支持向量机(SVM)作为分类模型权重加载路径(如果有的话) svm_model_path = './default_svm.xml' if hasattr(hog_descriptor,'setSVMDetector'): hog_descriptor.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # 执行多尺度滑动窗口扫描寻找可能的目标位置列表形式返回结果[(rect,(weight))] found_locations,_weights= hog_descriptor.detectMultiScale(img_gray,scaleFactor=1.05,hitThreshold=.5,finalThreshold=2,pad=(8,8)) for x,y,w,h in found_locations: cv2.rectangle(io.imread(image_path),(x,y),(x+w,y+h),color=[255,0,0],thickness=2) io.imshow(io.imread(image_path)) io.show() ``` 上述脚本片段展示了怎样定义自定义配置版本或者采用内置推荐值初始化霍夫变换类实例的过程,同时还演示了调用detectMultiscale函数接口执行整个框架逻辑链路直至最终绘制成矩形框标注出疑似人体所在具体坐标位置集合的操作方式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值