我正在玩这个用于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);
但得到了错误:
无法将'std :: string * {aka std :: basic_string }'转换为'cv :: String '以将参数'1'转换为'cv :: Mat * cv_imread(cv :: String *,int)' cv_imread(new string(filename),1);
如果你可以帮助我,我会很感激
答案 0 :(得分:2)
使用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);