前提・実現したいこと
GUIでの画像処理ツールの開発
発生している問題・エラーメッセージ
今現在は、CUI(C++)上で画像処理プログラムを作成いたしました。
内容はimage.cppを動かすと監視対象のフォルダに画像が入ってきた瞬間に
処理を行い、入力画像windowと処理結果windowが並んで表示されます。
それを、Qtを用いてボタンを押すことで処理が行われ(プログラムが起動)、処理結果がQtのGraphics Viewなどに表示したいと考えています。
困っていることは外部のプログラム(image.cpp)をQProcessを使うことで可能ということは調べたのですが、うまく行きません。
ここを勉強すると良いなどのQtを使ったことがある人のアドバイスがほしいです。
このような処理はQtで書きなおしたほうが良いのでしょうか?
できれば作成したCUIを利用したいと考えています。
###ここに言語名を入力
C++
補足情報(FW/ツールのバージョンなど)
ubuntu 16.04LTS
Qt 5.11
その CUI アプリケーションの入力と出力のインタフェースはどのようになっていますか?
C++の画像処理部分をDLL化して呼び出すかですね。
申し訳ありません。まだプログラミング初心者なのでインターフェースがよくわかりません。入力はたぶんシリアルインタフェースだと思います。
qtでは開発しにくいのでしょうか?
インタフェースはアプリケーションの入出力を指して言いました。
画像処理のアプリケーションとなると、なんらかの形で画像を渡して、処理した結果 (画像?) を受け取ることになると思うのですが、それがどのような形式で行われるのでしょうか。(例: ファイルでやり取りするなど)
画像処理のプログラムもご自身で作られたものであるならば、最初から GUI の部分を含めて1つのプログラムとして作るのでは駄目なのでしょうか?
CUIで画像処理ができるように作成したのですが、見た目が悪いということでGUIにして一般の方にもわかりやすくしたいと考えているのですが、GUIはまったく触れたことがなく調べた結果Qtがおすすめと聞いてやってみようと思った感じです。他のGUI作成方法も検討してみます。
Qt でいいと思いますよ。
結果を表示したりする GUI は部分は Qt、画像処理は作成済みの画像処理のコードを流用して1つのプログラムを作成すればいいです。
あくまで Qt は GUI を作成するライブラリにすぎないので、他のC++ のコードと混ぜこぜにして使えます。
ご指導ありがとうございます。
CUIの画像処理を残し、QtのGUIで表示させるように考えています。
ただ、pushbottonからCUI(image.cpp)を起動させることができていないのでそこをがんばります。
QProcess の使い方について回答しました。
質問に書いてある「うまくいかなかった」とはどううまくいかなかったのでしょうか?(例: エラーがでた、指定したアプリケーション (.exe) が起動しなかったなど)
うまく行かなかったという漠然なもので申し訳ありません。
できなかったことは指定したアプリケーション (.exe) が起動しなかったです。
というより、Qprocessの使い方がわからないというのが大きな問題になっています。そのため、なにかサンプルでもいいのでボタンを押すことで外部のプログラムを動かしたことある人や参考ページ等を教えていただきたく投稿しました。
回答に書いたように QProcess::execute(exe のパス) の1行で起動するはずです。
起動しない場合はパスが間違っている可能性があります。
相対パスの場合は Qt で作った実行ファイルがあるパスが基点になります。
とりあえず絶対パスで指定してうまくいくかどうかを試してみてはどうでしょうか。
ちなみに \ マークは C++ ではエスケープが必要な文字なので、回答のように raw 文字列を使うか \\ でエスケープしてください
ちなみに
> If the process cannot be started, -2 is returned. If the process crashes
とあるように QProcess::execute(exe のパス) を呼び出して、パスが間違っている等で起動できなかった場合は -2、クラッシュした場合は -1 を返すので、返り値をチェックして起動しなかった原因をチェックできます。
https://doc.qt.io/qt-5/qprocess.html#execute
回答1件
あなたの回答
tips
プレビュー