我有一个Qt应用程序,我打开/选择一个视频文件:
QString fichier=QFileDialog::getOpenFileName(…);
然后,我需要使用openCV阅读此视频:
string str= fichier.toStdString();
const char* c_videoFile=str.c_str();
capture = cvCreateFileCapture(c_videoFile);
if(capture==0){
//file cannot be open
}
else{
//get frames, ...
}
问题在于它根本不起作用(capture == 0),文件名的字符如下:
Dziękuję
Påfårö
Русский
キャン#&セル
即使
capture = cvCreateFileCapture("path/to/Русский.mp4");
例如,。 如果我在控制台中输出c_videoFile,则名称是正确的。
如何解决知道我必须使用Qt打开文件所以我必须有一个QString转换为const char *。 openCV不能处理那种字符吗?
我在那里尝试了答案 imread(openCV),QString unicodes 但我得到错误"在QTextCodec"中没有类型名为setCodecForCStrings,"在QTextCodec中没有名为setCodecForTr的类型","在QString"中没有名为toAscii的成员。所以我认为这个答案对旧版Qt有效。
我在Mac OS 10.8.5,Qt 5.3.1和openCV 2.4.8上工作。它适用于Windows 7。