0

画像のナンバー プレートを認識するためのアプリを作成しています。正常に動作しますが、コードの画像解析部分を別のスレッドに移動したいと考えています。Qt5.4を使用しています。QtConcurrent::mapドキュメントを読んだ後、画像を処理する前に、ユーザーがリストに保存されているファイル (名前のみ) をロードするため、これを使用するのが正しいと判断しました。ここにいくつかのコードがあります:

スレッドで実行されるはずの関数の定義:

results detectPlates(const QString &file);

マルチスレッドの使用を試みます。

QFuture<results> r = QtConcurrent::map(files, &MainWindow::detectPlates)

filesQList<QString> resultsそれが重要な場合は、私が使用しているライブラリ内で定義された型であると定義されています。

これはエラーでコンパイルされません:

C2440 'initializing' cannot convert from `QFuture<void>` to `QFuture<results>`

関数を次のように変更すると、次の<void>ようになります。

error c2064: term does not evaluate to a function taking 1 argument.

何が問題ですか?助けていただければ幸いです。

4

1 に答える 1

2

QtConcurrent::mapアイテムを所定の位置に変更し、無効な未来を返します。結果を a の形式で返したい場合は、QFuture<T>を使用しますQtConcurrent::mapped

于 2015-10-07T09:23:18.207 に答える