gpt4 book ai didi

c++ - 使用 Vlfeat 的 C API 进行快速换档

转载 作者:行者123 更新时间:2023-11-28 07:05:12 24 4
gpt4 key购买 nike

我已经在我的电脑上安装了 vlfeat,它似乎可以在 netbeans 上运行。

我目前正在尝试使用 vlfeat 的 quickshift 功能,但我无法找到有关如何执行以下操作的任何引用资料:

  1. 使用 quickshift 在 vlfeat 的 C/C++ 代码中导入输入图像分割。
  2. 我需要初始化一个 quickshift 对象 'vl_qs_type'为此目的,我无法找到一种方法来做到这一点。

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

我还需要使用 VLFeat 的 Quick Shift 实现。以下片段说明了如何使用 C++ 中的实现。当我使用 OpenCV 读取图像时,首先将 OpenCV 与 VLFeat 头文件一起包括在内:

#include <opencv2/opencv.hpp>

extern "C" {
#include "generic.h"
#include "quickshift.h"
}

下载 VLFeat 后(在我的例子中,存档包含文件夹 vlfeat-0.9.18),我使用 CMake 添加 vlfeat-0.9.18/vl 作为包含目录。否则你必须调整上面的代码。然后,以下代码读取图像,将图像转换为所需格式并运行 Quick Shift。

注意:以下片段只是我原始代码的摘录,因此未经过测试,如下所示。

// Read an image using OpenCV, I assume a color image to be given;
// the image will be loaded in BGR color space.
cv::Mat mat = cv::imread("Lenna.png", CV_LOAD_IMAGE_COLOR);

// Convert image to one-dimensional array.
double* image = new double[mat.rows*mat.cols*mat.channels()];
for (int i = 0; i < mat.rows; ++i) {
for (int j = 0; j < mat.cols; ++j) {
image[j + mat.cols*i + mat.cols*mat.rows*0] = mat.at<cv::Vec3b>(i, j)[0];
image[j + mat.cols*i + mat.cols*mat.rows*1] = mat.at<cv::Vec3b>(i, j)[1];
image[j + mat.cols*i + mat.cols*mat.rows*2] = mat.at<cv::Vec3b>(i, j)[2];
}
}

// Create a new quickshift instance using the image, the height and width of the
// image as well as the number of channels.
VlQS* quickShift = vl_quickshift_new(image, mat.rows, mat.cols, mat.channels());
vl_quickshift_set_kernel_size(quickShift, 5);

// Run Quick Shift.
vl_quickshift_process(quickShift);

但是,我还不知道如何解释和使用实现的输出。

关于c++ - 使用 Vlfeat 的 C API 进行快速换档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21869061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com