gpt4 book ai didi

c++ - 如何在 OpenCV 中将 4 维矩阵转换为 NHWC 格式

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:33 26 4
gpt4 key购买 nike

所以我正在实现 SIFT,问题是我不知道如何在 OpenCV 中处理 channel 。这是我到目前为止所做的。

#ifndef QUANTIZATION_DATABASE_DATA_READ_H
#define QUANTIZATION_DATABASE_DATA_READ_H
// C HEADERS
#include <stdlib.h>
#include <fcntl.h>
// C++ HEADERS
#include <iostream>
#include <string>
// OPENCV HEADERS
#include <opencv2/opencv.hpp>

namespace cv
{
class DataReader
{
public:

explicit DataReader(int _flags) : flags(_flags)
{

}

void read(std::string filename, const char *key, Mat &res)
{
try
{
FileStorage fs(filename, FileStorage::Mode::FORMAT_XML | FileStorage::Mode::READ);
fs[key] >> res;
fs.release();
}
catch (Exception e)
{
std::cerr << e.msg << std::endl;
}

}

private:
int flags;
};
}

我要实现的算法如下。

  1. 从 xml 文件中读取 4 维矩阵 (NHWC)。
  2. 将其存储在矩阵中
  3. 将其转化为 NHWC

问题是,当我使用 Tensorflow 做一些事情时,我不必执行第 3 步。它只是自动知道最后一个维度是 channel 。那么,我该怎么办?

最佳答案

似乎没有办法为一批图像制作 4 维缓冲区。所以我决定更改 xml 文件的格式,结果非常有效。

以下是此问题的临时解决方法。

#ifndef QUANTIZATION_DATABASE_DATA_READ_H
#define QUANTIZATION_DATABASE_DATA_READ_H
// C HEADERS
#include <stdlib.h>
#include <fcntl.h>
// C++ HEADERS
#include <iostream>
#include <string>
// OPENCV HEADERS
#include <opencv2/opencv.hpp>

namespace cv
{
class DataReader
{
public:

explicit DataReader(int _flags) : flags(_flags)
{

}

void read(std::string filename, Mat &res)
{
try
{
float length = 0;

FileStorage fs(filename, FileStorage::Mode::FORMAT_XML | FileStorage::Mode::READ);

fs["size"] >> length;
for (int i = 0; i < (int)length; ++i) {
std::string key("image");
std::string index = std::to_string(i);
Mat image;

key = key + index;
fs[key.c_str()] >> image;
std::cout << image.channels() << std::endl;
res.push_back(image);
}

fs.release();
}
catch (Exception e)
{
std::cerr << e.msg << std::endl;
}

}

private:
int flags;
};
}

关于c++ - 如何在 OpenCV 中将 4 维矩阵转换为 NHWC 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50909619/

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