gpt4 book ai didi

.net - 如何在 C++ 中将 std::string 转换为 CV::String?

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:08 25 4
gpt4 key购买 nike

我正在调用我自己定义的函数,在该函数中我将 std::string 作为该函数的参数传递。我还需要为 cv::Mat cv::imread(const cv::String &filename, int flags=1); 提供输入,而且我不能将参数作为 cv::String 提供。

因此无论如何我都需要将 std::string 转换为 cv::String

更新:

我已将上述函数打包到一个非托管 DLL 中,并从 C# 控制台应用程序调用它,因此它给我错误的内存分配。

我曾尝试在 cv::String 构造函数中强制转换 std::string,但没有成功。

非托管 C++ 代码(在 Visual Studio 2013 中创建的 DLL)

MathFunc.h

#include <stdexcept>
using namespace std;

namespace MathFunc
{
extern "C" { __declspec(dllexport) double DoSomething(std::string imgPath); }

}

Mathfunc.cpp

#include <iostream>
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/core/cvstd.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "MathFuncDll.h"

using namespace std;
using namespace cv;

namespace MathFunc
{
double DoSomething(std::string imgPath)
{
try{
cv::Mat image;
image = cv::imread(imgPath);
}catch (exception &e){
cout << "Error Occurred"<< e.what() << endl;
}
return 0;
}
}

这是我在使用时遇到的错误:

OpenCV Error: Insufficient memory (Failed to allocate 1345270332 bytes) in cv::OutOfMemoryError,
file C:\opencv\sources\modules\core\src\alloc.cpp, line 52

所以传递给这个函数的字符串是 1345270325 个字符长

当我将图像路径指定为 image = cv::imread("C:/path_to_images/input_image.jpg"); 时,它工作正常。没有错误发生。

有谁知道如何解决这个问题吗?

最佳答案

根据document , cv::String 有一个以一个 std::string 作为参数的构造函数,这意味着 std::string 可以隐式转换为cv::String.

关于.net - 如何在 C++ 中将 std::string 转换为 CV::String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474234/

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