CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略

506 篇文章 120 订阅
242 篇文章 233 订阅
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是一个基于Python实现HOG+SVM行人检测算法代码示例: ```python import cv2 import numpy as np from sklearn.svm import SVC from sklearn.model_selection import train_test_split # 收集行人数据集 pos_images = ['pos1.jpg', 'pos2.jpg', 'pos3.jpg', ...] neg_images = ['neg1.jpg', 'neg2.jpg', 'neg3.jpg', ...] # 提取HOG特征 hog = cv2.HOGDescriptor() features = [] labels = [] for image_path in pos_images: img = cv2.imread(image_path) hog_feature = hog.compute(img) features.append(hog_feature) labels.append(1) for image_path in neg_images: img = cv2.imread(image_path) hog_feature = hog.compute(img) features.append(hog_feature) labels.append(-1) features = np.array(features) labels = np.array(labels) # 训练SVM分类器 X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) svm = SVC(kernel='linear') svm.fit(X_train, y_train) # 行人检测 img = cv2.imread('test.jpg') win_size = (64, 128) block_size = (16, 16) block_stride = (8, 8) cell_size = (8, 8) nbins = 9 for i in range(0, img.shape[0]-win_size[1], block_stride[1]): for j in range(0, img.shape[1]-win_size[0], block_stride[0]): win = img[i:i+win_size[1], j:j+win_size[0]] hog_feature = hog.compute(win, winStride=(8,8), padding=(0,0)) pred = svm.predict(hog_feature.reshape(1, -1)) if pred == 1: cv2.rectangle(img, (j, i), (j+win_size[0], i+win_size[1]), (0, 255, 0), 2) cv2.imshow('result', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 该代码中,我们首先使用OpenCV中的HOGDescriptor函数对收集到的行人数据集中的图片进行HOG特征提取,并将提取的HOG特征和对应的标签存储在features和labels数组中。然后使用sklearn库中的train_test_split函数将数据集划分为训练集和测试集,并使用SVC模型进行训练。最后使用滑动窗口对测试图片进行行人检测,并将检测到的行人框标记出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个处女座的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值