質問: わたしはプログラムを使ってハードを隅々まで制御したいと考えています。何がしたいかを申しますとwin32apiを呼び出して利用するのではなく、直接書き込んだりしたいと思っていました。しかし、win32APIはオープンソースではないためAPI関数呼び出すことはできてもAPI関数を改造したり書き込むことはできないということでした。なので、 今までOPENCVの顔認識においてwin32APIなどの説明や使い方を散々聞いてきましたが、 OSがWindowsでwin32APIを使わずにwin32APIのようなカメラ入力が出来たりウィンドウ、画像表示ができるプログラムは無いか探しています。 <行いたいこと> 欲を言えばwin32APIを使わないでOPENCVが使えるようにOPENCV内のソースコードでwin32APIを利用した カメラ機能やウィンドウのサイズ変換の部分をwin32APIではない別のカメラ機能やウィンドウのサイズを変更ができるwin32APIのようなプログラムに置き換えてみたいです。 そして以上のようなことは難易度は考慮しないとして可能か不可能か知りたいです。 自身で調べる限りではOSがLinuxでならGTK+などがありました。 もちろんLinuxで使われているGTK+をOPENCV内のソースコードでwin32APIを利用した カメラ機能やウィンドウのサイズ変換の部分などをGTK+のプログラムで置き換えて使うことで、OPENCVが使えるならば私のやりたいこととしては成功と言えます。(私の本当にしたかったことができたといってもいいです。) またwin32apiは書き込んだり見ることは出来ませんがGTK+は見ることも書き込むこともできるので個人として隅々まで制御できる欲が満たせます。(なにか間違ったことを言っているかもしれませんが。) いつもいつもわがままで何を言っているかわけのわからないことばかり言って申し訳ありません。自分でも調べたり基礎を学習して少しでも皆様に何がやりたいかをお伝えしたいのですが私の理解力と地頭が悪いせいで皆様に不快な思いをさせてしまっています。 無知ゆえに厳しいお言葉などは見ていてつらいですが自業自得です。 どうか今回の質問にかんしてどうかよろしくお願いいたします。 付き合いきれないと思われても仕方ありませんが、どうかよろしくお願いします。
回答: > > わたしはプログラムを使ってハードを隅々まで制御したいと考えています。 > > > この**排他的な独占欲**はOS上で動くアプリケーションを作成する以上満たされることはないでしょう。 なぜなら、複数のプロセスが同時に動く現代のOSの場合 ハードウェアに対して命令するのはあなたが作成したプロセスだけとは限らないからです。 なんらかの制約があり協調する事が求められます。 完全に制御したい場合OS自作する事が必要でしょう LinuxのAPIがオープンだからといって改造すると 当然ながらあなたの環境でしか動かないものが出来上がります。 どうしても必要なら考えはしますが、いささかメリットに対してデメリットの方が大きいように思います。 実のところ、win32apiを用いずに目標を達成することは不可能ではないかもしれません。 ただし、その結果生まれるのは 非常に強く環境に依存し、win10で動いたものがwin8で動くとは限らない それどころかwindows update毎に動かなくなる可能性があり、 同windowsでもマシン構成等で動かない可能性のある アプリケーションです。 しかも、ライセンス的に真っ黒でマルウェアの作成くらいにしか使えません。 win32apiを用いることでwin10からwin95までソースコードレベルの互換性は保たれます。 win32apiはきちんとドキュメントの公開されているAPIです。 cv::imshowを追いかける事のできなかったアナタにとってLinuxのAPIとどれだけの違いがあるのか疑問です。