Qt openCV和unicode文件名

Qt openCV和unicode文件名,qt,opencv,unicode,char,qstring,Qt,Opencv,Unicode,Char,Qstring,我有一个Qt应用程序,在该应用程序中,我打开/选择一个视频文件,其中包含: QString fichier=QFileDialog::getOpenFileName(…); 然后,我需要使用openCV阅读此视频: string str= fichier.toStdString(); const char* c_videoFile=str.c_str(); capture = cvCreateFileCapture(c_videoFile); if(capture==0){ //fil

我有一个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_视频文件,则名称是正确的

如何解决这个问题知道我必须使用Qt打开文件,所以我必须有一个QString来转换为const char*。 openCV不能处理这种角色吗

我在那里试过答案 但我得到了错误“QTextCodec中没有名为setcodeforcstrings的类型”、“QTextCodec中没有名为setcodefortr的类型”、“QString中没有名为toAscii的成员”。因此,我认为这个答案对于较旧版本的Qt是有效的


我在Mac OS 10.8.5、Qt5.3.1和openCV 2.4.8上工作。它在Windows 7上工作。

如果调用
capture=cvCreateFileCapture(fichier.toUtf8().data())
您必须了解,
cvCreateFileCapture
可以接受什么编码,并使用
QString
中的相应方法来转换数据。@vahancho它仍然不起作用。@SaZ确实如此,但即使直接将路径作为参数cvCreateFileCapture(“/path/to/filenamewithUnicode.mp4”)传递,它也不起作用,如果函数处理这个问题,它应该是这样工作的,不是吗?我在Windows7上测试过,它可以处理任何带有简单cvCreateFileCapture(fichier.tostString().c_str())的字符。(Mac和Windows之间的这些差异有时令人恼火)。所以我想说openCV和Mac有问题。