我正在使用此C包装程序来读取OpenCV函数。
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
参数为aString*
而不是其他类型。但是我可以使用帮助创建一个String*
要给予的帮助cv_imread
。
编辑:根据您尝试的修改
const char* filename = "/home/w/d1";
cv_imread(new string (filename), 1);
但出现错误:
无法将参数'1'的'std :: string * {aka std :: basic_string }'转换为'cv :: String '到'cv :: Mat * cv_imread(cv :: String *,int)'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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句