我正在玩这个用于 OpenCV 函数 imread 的 C 包装器。
Mat* cv_imread(String* filename, int flags) {
return new Mat(cv::imread(*filename, flags));
}
我认为它在某个地方失败了,所以我正在尝试测试以确保它写得正确。我只需要知道如何创建一个 String*
来填充它的第一个参数。我试过用
char* filename = "~/home/test.jpg"
然后转换为 String*
i/e
(String*)filename
但这不起作用..我尝试了许多其他变体来转换为在线找到的指针,但没有发现 cv_imread
会接受。在我的代码中,filename
参数必须是 String*
而不是其他类型。但我可以帮助创建一个 String*
以提供给 cv_imread
。
编辑:根据我试过的你的编辑
const char* filename = "/home/w/d1";
cv_imread(new string (filename), 1);
但出现错误:
对于参数“1”到“cv::Mat* cv_imread(cv::字符串*,整数)' cv_imread(新字符串(文件名), 1);
如果你能帮助我,我将不胜感激
最佳答案
使用 string::c_str()
获取字符串的底层指针:
Mat* cv_imread(String* filename, int flags) {
return new Mat(cv::imread(filename->c_str(), flags));
}
或者您也可以使用 string::data()
。它们在 C++11 之后具有相同的功能。
编辑:OP 似乎想将 char*
传递给 cv_read
。然后应该这样做:
cv_read(new String(filename), 1);
关于C++ 如何将字符串转换为指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22446297/