ユニコード名で画像ファイルを読む必要がありますが、openCV関数imreadの画像名の引数は文字列のみをサポートしています。どのように文字列オブジェクトにUnicodeパスを保存することができます。これにはどんな解決策がありますか?imreadを使用してユニコード名を持つ画像ファイルを開きます
1
A
答えて
2
次のことが可能です。
- が
- 、
ifstream
でファイルを開くcv::imdecode
でそれをデコード - 、
std::vector<uchar>
でそれをすべてお読みください。
その下の例は、ifstream
を使用してUnicodeのファイル名でimg2
にイメージをロードを参照してください:
#include <opencv2\opencv.hpp>
#include <vector>
#include <fstream>
using namespace cv;
using namespace std;
int main()
{
// This doesn't work with Unicode characters
Mat img = imread("D:\\SO\\img\\æbärnɃ.jpg");
if (img.empty()) {
cout << "Doesn't work with Unicode filenames\n";
}
else {
cout << "Work with Unicode filenames\n";
imshow("Unicode with imread", img);
}
// This WORKS with Unicode characters
// This is a wide string!!!
wstring name = L"D:\\SO\\img\\æbärnɃ.jpg";
// Open the file with Unicode name
ifstream f(name, iostream::binary);
// Get its size
filebuf* pbuf = f.rdbuf();
size_t size = pbuf->pubseekoff(0, f.end, f.in);
pbuf->pubseekpos(0, f.in);
// Put it in a vector
vector<uchar> buffer(size);
pbuf->sgetn((char*)buffer.data(), size);
// Decode the vector
Mat img2 = imdecode(buffer, IMREAD_COLOR);
if (img2.empty()) {
cout << "Doesn't work with Unicode filenames\n";
}
else {
cout << "Work with Unicode filenames\n";
imshow("Unicode with fstream", img2);
}
waitKey();
return 0;
}
あなたはQtのを使用している場合、あなたはQFile
でもう少し便利にこれを行うことができますQString
QString
がネイティブにUnicode文字を処理するため、QFile
はファイルサイズに簡単にアクセスできます。
、hereあなたはPythonでこれを行う方法を見ることができます
関連する問題
- 1. Jestスナップショットを使用しているときに私の画像ファイル名/パスを持っています。
- 2. matlabで大きな画像のためにimreadを使用するには?
- 3. OpenCV imread 8BPP PNG画像エラー
- 4. ファイル名を変数に持つcobolインデックスシーケンシャルファイルを開きます。
- 5. imreadを使用して画像を読み取るときにエラーが発生するOpenCV
- 6. 画像をクリックしてファイルを開く
- 7. は、私が使用して背景画像を持つページを持っている背景画像
- 8. 画像を開いて使って画像を開く
- 9. Openはファイル名に外国語を持つPythonのwin32comを使ってExcelファイルを開きます
- 10. pythonを使用してフォルダから画像を1つずつ開きますか?
- 11. Octaveは画像をimread()したくないと思っています
- 12. バッチでユニコード名を持つファイルを書き込むことはできますか
- 13. csvファイルを使用してutf8の名前で画像をコピー/名前を変更します
- 14. cssやブートストラップを使って、サイズの異なる画像を持つ画像グリッドを作成できますか?
- 15. itextを使用して画像ファイルをPDFに挿入するときにファイルが見つかりません
- 16. jQueryを使用して画像の名前をクリックすると、その画像の名前を見つけることができますか?
- 17. グライドを使用してRecyclerViewに画像を持つビューアをキャッシュする
- 18. コードイグナイタを使用してのみ画像ファイルをアップロードできますか?
- 19. 元の画像ファイル名を使用してスプライトシートから画像を作成する
- 20. 画像のリストを読み込めません。cv2.imread()
- 21. jQueryとjavascriptを使用して画像スライダーを開発する
- 22. PHPを使用して完全な画像パスから画像名を取得
- 23. PILを使用して画像をパレットで開き、その画像を同じパレットで保存する
- 24. ANOVAを使用して2つの画像を比較できますか?
- 25. "OSError:画像ファイルを特定できません" PIL/Imageで画像を開く
- 26. 画像のサイズを維持して画像を維持する
- 27. ファイル名を使用してローカルディレクトリから複数の画像をロード
- 28. Windowsのファイル名を使用してメディアライブラリから画像を取得電話
- 29. vb.netのファイル名を使用してフォルダから画像を削除
- 30. 2つの画像を使用して1つの画像ビューで画像を拡大/縮小する方法
あり、適切な解決策になるかもしれませんが、回避策として、あなたは純粋なASCIIファイル名がの外でUnicodeのファイル名を指しているとのシンボリックリンクを作成することができますOpenCVはOSレベルでのインデックス作成中にOpenCVに対処します。これは 'ln -s UnicodeName.jpg ASCIIName.jpg'であり、プログラムで' ASCIIName.jpg'を処理します。 –