📷
🎥【個人開発】PyQt5 × OpenCVで作るGUI画像処理ツール【VisionAgentGUI】
こんにちは、hyeon-marinaです!
大学でコンピュータビジョンの授業を受けながら、こんなことを思いました。
「OpenCVって便利だけど…毎回コード書いて実行するの、正直しんどい。」
💡 それなら、GUIで操作できるようにしよう!
画像を見ながら、直感的に処理できたらもっと楽しくなるはず。
そこで今回作ったのが
**「VisionAgentGUI」**という、Python製の画像処理ツールです。
- PyQt5でGUIを構築
- OpenCVの機能をボタン操作で実行可能に
- 学習用にも、デモ用にも使える構成にしました!
✨ 実装した主な機能(ぜんぶGUI操作)
機能 | できること |
---|---|
🖌️ オリム | マウスで前景と背景を塗って、GrabCutで前景抽出 |
🚸 標識検出 | SIFT特徴量を使って道路画像にある標識(子供・高齢者など)を認識し、警告音を鳴らす |
🖼️ パノラマ合成 | 動画から好きな瞬間だけフレームを収集 → Stitchingで1枚の画像に合成 |
🎨 特殊効果 | エンボス、スケッチ(グレー・カラー)、油絵風、カートゥーンなどをリアルタイムで変換&保存可能 |
🛠 実装の一部紹介(コード)
たとえば、「特殊効果」の部分はこんな風に実装しています👇
def apply_selected_effect(self):
if not hasattr(self, 'img') or self.img is None:
return
i = self.effect_combo.currentIndex()
if i == 0:
self.emboss_function()
elif i == 1:
self.cartoon_function()
elif i == 2 or i == 3:
self.sketch_function()
elif i == 4:
self.oil_function()
特殊効果の実装(一部抜粋)
たとえば「カートゥーン」を選ぶと、cv2.stylization()
によって線画風の画像に変換されます。
OpenCVの stylization
, pencilSketch
, xphoto.oilPainting
などを一括で扱えるように、
コンボボックスのインデックスに応じて呼び出す構造です。
🤔 作ってみて気づいたこと
- GrabCutって、GUI操作だとめちゃくちゃ分かりやすい
- SIFTのマッチング結果をポリゴンで視覚化すると説得力が出る
- PyQt5でも十分なデスクトップアプリが作れる!という自信がついた
📷 スクリーンショット(予定)
※ 近日中に以下の画像を追加予定です!
- 前景抽出(オリム)
- 標識検出の結果
- パノラマ合成画面
- 特殊効果の比較(原画 vs 油絵風など)
📦 GitHubリポジトリ
コードはすべてこちらに公開しています:
※ README.md
に日本語の機能解説・依存関係あり!
🙋♀️ 自己紹介
Kwon Hayeon(hyeon-marina)
韓国の4年制大学で人工知能とソフトウェア工学を専攻しており、2027年に卒業予定です。
日本のAI系企業への新卒就職を目指して、ZennやGitHubで技術記事やポートフォリオを記録・発信しています📘
Zennでは主に、AI、画像処理、個人開発に関する学習記録や開発ログを投稿しています。
どうぞよろしくお願いいたします!
📝 今後の拡張予定
- YOLOv8を使った標識のリアルタイム検出版
- macOSやLinuxへの対応(
winsound
の除去) - PyInstallerで単体実行形式の配布
Zennでこういった【CV × GUI × Python】系の話に興味ある方、
ぜひコメントやLGTMで応援してください💪
Discussion