c++hog使用compute之后可视化
时间: 2024-05-12 22:13:55 浏览: 140
如果您使用的是 OpenCV 中的 HOG 特征提取函数 `cv::HOGDescriptor::compute()`,那么可以通过以下步骤可视化 HOG 特征:
1. 通过 `cv::HOGDescriptor::getDescriptorSize()` 获取 HOG 特征向量的维度。
2. 通过 `cv::Mat::reshape()` 将 HOG 特征向量变为二维矩阵。
3. 对每个特征向量进行可视化,可以使用 `cv::resize()` 进行缩放,并使用 `cv::imshow()` 显示图像。
下面是一个简单的示例代码:
```c++
cv::Mat image = cv::imread("image.jpg");
cv::HOGDescriptor hog;
hog.setSVMDetector(hog.getDefaultPeopleDetector());
std::vector<cv::Point> found_locations;
std::vector<float> descriptors;
hog.compute(image, descriptors);
int descriptor_size = hog.getDescriptorSize();
cv::Mat hog_matrix(descriptors.size() / descriptor_size, descriptor_size, CV_32FC1, descriptors.data());
for (int i = 0; i < hog_matrix.rows; i++) {
cv::Mat feature_vector = hog_matrix.row(i);
cv::Mat hog_image;
hog.computeGradient(feature_vector, hog_image);
cv::resize(hog_image, hog_image, cv::Size(64, 128)); // 根据 HOG 特征向量的维度进行调整
cv::imshow("HOG Feature", hog_image);
cv::waitKey(0);
}
```
这段代码首先使用 `cv::HOGDescriptor` 对象提取了一张图片中的 HOG 特征向量,然后将这些特征向量转换为二维矩阵,最后对每个特征向量进行可视化,并通过 `cv::waitKey()` 等待用户按下键盘按键以继续。
阅读全文