Ich rufe meine eigene definierte Funktion, in der ich die std :: string als Argument dieser Funktion übergeben. Ich muss auch eingeben cv :: Mat cv :: imread (const cv :: String & Dateiname, int Flags = 1); Und ich kann keine Argumente als cv :: String angeben.Wie konvertiert man std :: string in CV :: String in C++?
Also muss ich konvertieren std :: string in cv :: String sowieso.
Update:
Ich habe oben beschriebene Funktion in einer nicht verwalteten DLL verpackt und es von einer C# Konsolenanwendung aufrufen, so dass es mir schlecht Speicherzuweisung gibt.
Ich habe versucht, std :: string in cv :: String-Konstruktor zu werfen, aber es hat nicht funktioniert.
Unmanaged C++ Code (erstellt DLL in Visual Studio 2013)
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;
}
}
Das i Ich s die Fehlermeldung erhalten, wenn mit:
OpenCV Error: Insufficient memory (Failed to allocate 1345270332 bytes) in cv::OutOfMemoryError,
file C:\opencv\sources\modules\core\src\alloc.cpp, line 52
So ist die Zeichenfolge an diese Funktion übergeben wird, von 1345270325 characters long
Wenn ich Bildpfad als image = cv::imread("C:/path_to_images/input_image.jpg");
geben, es funktioniert gut. Kein Fehler auftritt.
Kann jemand das korrigieren?
Versuchen Sie, 'c_str()' von 'std :: string' als Argument zu übergeben. – Arunmu
oder Sie könnten es umwandeln http://docs.opencv.org/3.1.0/d1/d8f/classcv_1_1String.html#a8bbd0cc5d752437758918151afd9bb82 – slawekwin
Wenn Sie sagen "Ich kann keine Argumente als cv :: String geben." Was passiert, wenn Sie das Argument übergeben (und den Compiler konvertieren lassen)? Welche Fehlermeldung erhalten Sie? –