ホームページ バックエンド開発 Python チュートリアル opencvをベースにした簡易描画ボード機能の詳細説明

opencvをベースにした簡易描画ボード機能の詳細説明

Aug 07, 2020 pm 03:51 PM
opencv 製図板

opencvをベースにした簡易描画ボード機能の詳細説明

OpenCV には、複雑な関数を実装するための単純なステートメントが多数用意されており、色とマウスのインタラクションに関する基本的なステートメントに基づいて、単純な描画ボードを構築できます。シンプルですが、フレームを作る手順は少なくありません。

興味があれば、私の手順に従って作成することも、メイン プログラムのコードを直接コピーして実行することもできます。

関連する学習の推奨事項: Python ビデオ チュートリアル

1. 関数

製図板をクリアする後続のプログラミングに便利な機能です。
対象機能: 調整可能な色、描画領域、およびマウス入力。

2. フレームワークの構築

主なステップは 2 つあります:

最初のステップ:確立 色の選択は、OpenCV スライダー ステートメント cv.createTrackbar を使用して設定できます。 cv.createTrackbar には、(トラックバー名、ターゲット ウィンドウ名、開始値、デフォルト値、最大値、コールバック関数) の合計 5 つのパラメーター設定があります。

#创建画布
img=np.zeros((300,512,3),np.uint8)
#给画布命名——需要提供给Trackbar
cv.namedWindow("image")
#创建RGB三种颜色的Trackbar,返回函数不需要做任何动作
cv.createTrackbar("R","image",0,255,nothing)
cv.createTrackbar("G","image",0,255,nothing)
cv.createTrackbar("B","image",0,255,nothing)
#由于OpenCv里面无按钮函数,所以用0/1来表示开关
switch="0:OFF\n1:ON"
cv.createTrackbar(switch,"image",0,1,nothing)
#回调函数,不需要做任何操作
def nothing(x):
 pass
ログイン後にコピー

ステップ 2:マウス アクションのステータスをキャプチャし、マウス アクションに基づいて描画領域にグラフィックを描画します。一般的なマウス操作ステートメントは、ステートメント *events = [i for i in dir(cv) if ‘EVENT’ in i]* を使用して Python で表示できます。

#设置一个是否开始画画的开关
drawing=False
#定义画画函数
def draw(event,x,y,flag,param):
 #将画画开关作为全局变量,以便于在每次动作以后改变它的值
 global drawing
 #使用函数cv.EVENT_LBUTTONDOWN,如果鼠标左键按下,画圆,同时drawing为真
 if event==cv.EVENT_LBUTTONDOWN:
  cv.circle(img,(x,y),3,(g,b,r),-1)
  drawing=True
 #如果鼠标移动,进行下面操作
 elif event==cv.EVENT_MOUSEMOVE:
  #如果drawing为真,开始画圆
  if drawing==True:
   cv.circle(img, (x, y), 3, (g, b, r), -1)
 #如果鼠标左键抬起,画最后一个圆,并将drawing设为False,此时就会停止画画
 elif event==cv.EVENT_LBUTTONUP:
  cv.circle(img,(x,y),3,(g,b,r),-1)
  drawing=False
ログイン後にコピー

3. メイン機能

メイン機能は、上記 2 つの部分を統合することです。

while(1):
 #展示画布
 cv.imshow("image",img)
 #设置终止按钮,为了保证在32/64位系统或者在不是ASCII编码的键盘上有正常的操作,使用&0xFF取低八位
 k=cv.waitKey(1)&0xFF
 #如果k为27,即键盘上Esc的ASCII编码序号,退出画板
 if k==27:
  break
 #获取每个Trackbar中的值
 r=cv.getTrackbarPos("R","image")
 g = cv.getTrackbarPos("G", "image")
 b = cv.getTrackbarPos("B", "image")
 s = cv.getTrackbarPos(switch, "image")
 #如果开关是0,清空画板并禁止画画,如果是1,则允许
 if s==0:
  img[:]=0
 else:
  cv.setMouseCallback("image", draw)
#最后不要忘记销毁窗口
cv.destroyAllWindows()
ログイン後にコピー

4. ランニング効果

##5. 概要

この簡単な説明から製図板では、主に 2 つの基本的な OpenCV 関数であるマウス関数 cv.setMouseCallback と cv.createTrackbar を学習して使用し、詳細を調べて注意が必要な点を見つけました。

6. 一般手順

import cv2 as cv
import numpy as np

def nothing(x):
 pass
img=np.zeros((300,512,3),np.uint8)
cv.namedWindow("image")
cv.createTrackbar("R","image",0,255,nothing)
cv.createTrackbar("G","image",0,255,nothing)
cv.createTrackbar("B","image",0,255,nothing)
switch="0:OFF\n1:ON"
cv.createTrackbar(switch,"image",0,1,nothing)

drawing=False
def draw(event,x,y,flag,param):
 global drawing
 if event==cv.EVENT_LBUTTONDOWN:
  cv.circle(img,(x,y),3,(g,b,r),-1)
  drawing=True
 elif event==cv.EVENT_MOUSEMOVE:
  if drawing==True:
   cv.circle(img, (x, y), 3, (g, b, r), -1)
 elif event==cv.EVENT_LBUTTONUP:
  cv.circle(img,(x,y),3,(g,b,r),-1)
  drawing=False

while(1):
 cv.imshow("image",img)
 k=cv.waitKey(1)&0xFF
 if k==27:
  break
 r=cv.getTrackbarPos("R","image")
 g = cv.getTrackbarPos("G", "image")
 b = cv.getTrackbarPos("B", "image")
 s = cv.getTrackbarPos(switch, "image")
 if s==0:
  img[:]=0
 else:
  cv.setMouseCallback("image", draw)
cv.destroyAllWindows()
ログイン後にコピー

以上がopencvをベースにした簡易描画ボード機能の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

pip パッケージ マネージャーを使用して OpenCV スタディ ガイドをすばやくインストールする pip パッケージ マネージャーを使用して OpenCV スタディ ガイドをすばやくインストールする Jan 18, 2024 am 09:55 AM

pip コマンドを使用すると、特定のコード サンプルが必要な OpenCV チュートリアルを簡単にインストールできます。OpenCV (OpenSource Computer Vision Library) は、オープン ソースのコンピュータ ビジョン ライブラリです。これには、開発者がイメージを迅速に構築するのに役立つ多数のコンピュータ ビジョン アルゴリズムと関数が含まれていますおよびビデオ処理関連のアプリケーション。 OpenCV を使用する前に、まず OpenCV をインストールする必要があります。幸いなことに、Python にはサードパーティのライブラリを管理するための強力なツール pip が用意されています。

Python OpenCVイメージピラミッドの例の分析 Python OpenCVイメージピラミッドの例の分析 May 11, 2023 pm 08:40 PM

1. 画像ピラミッドの理論的基礎 画像ピラミッドは画像のマルチスケール表現の一種であり、複数の解像度の画像を説明するのに効果的かつ概念的に単純な構造です。画像ピラミッドは、同じ元の画像から派生した、ピラミッド状に配置された、徐々に解像度が低くなる画像のコレクションです。ラダーダウンサンプリングにより取得され、一定の終了条件に達するまでサンプリングは停止されません。画像をレイヤーごとにピラミッド状に比較します。レベルが高くなるほど、画像は小さくなり、解像度は低くなります。では、なぜ画像ピラミッドを作成するのでしょうか?これは、ピクセルのサイズを変更してもその特性が変わらない場合があるためです。たとえば、1,000 万ピクセルの写真を見せれば、その中に人がいることがわかります。10 万ピクセルの写真を見せれば、その中に人がいることがわかります。 、その中に人がいることもわかります。しかし計画に反して

OpenCV インストール チュートリアル: PyCharm ユーザー必読 OpenCV インストール チュートリアル: PyCharm ユーザー必読 Feb 22, 2024 pm 09:21 PM

OpenCV は、コンピューター ビジョンおよび画像処理用のオープン ソース ライブラリであり、機械学習、画像認識、ビデオ処理などの分野で広く使用されています。 OpenCV を使用して開発する場合、プログラムのデバッグと実行を改善するために、多くの開発者は強力な Python 統合開発環境である PyCharm の使用を選択します。この記事では、PyCharm ユーザーに OpenCV のインストール チュートリアルと具体的なコード例を提供します。ステップ 1: Python をインストールする まず、Python がインストールされていることを確認します。

Python+OpenCVで仮想四角形をドラッグした効果を実現する方法 Python+OpenCVで仮想四角形をドラッグした効果を実現する方法 May 15, 2023 pm 07:22 PM

1. プロジェクト エフェクト 2. コア プロセス 1. openCV はビデオ ストリームを読み取り、画像の各フレームに四角形を描画します。 2. mediapipe を使用して、指のキー ポイントの座標を取得します。 3. 指の座標位置と長方形の座標位置に基づいて、指の先端が長方形上にあるかどうかを判断し、長方形上にある場合には、長方形は指の動きに追従します。 3. コード処理環境の準備: python:3.8.8opencv:4.2.0.32mediapipe:0.8.10.1 注: 1. opencv のバージョンが高すぎたり低すぎたりすると、カメラが開けないなどの問題が発生する可能性があります。 Python のバージョンは、opencv のオプションのバージョンに影響します。 2. pipinstallmediapipe は op を引き起こす可能性があります

Javaを使用してOpenCVで矢印付きの線を描くにはどうすればよいですか? Javaを使用してOpenCVで矢印付きの線を描くにはどうすればよいですか? Aug 20, 2023 pm 02:41 PM

JavaOpenCV ライブラリの org.opencv.imgproc パッケージには、入力画像を処理するためのさまざまなメソッドを提供する Imgproc というクラスが含まれています。画像上に幾何学的形状を描画するための一連のメソッドを提供します。矢印付きの線を描画するには、このクラスの arrowedLine() メソッドを呼び出す必要があります。このメソッドは次のパラメータを受け入れます: 線が描画されるイメージを表す Mat オブジェクト。線間の 2 点を表す Point オブジェクト。線の色を表す Scalar オブジェクト。 (BGR) 線の太さを表す整数 (デフォルト: 1)。例 importorg.opencv.core.Core;importo

PHPとOpenCVライブラリを使用してビデオ処理を実装するにはどうすればよいですか? PHPとOpenCVライブラリを使用してビデオ処理を実装するにはどうすればよいですか? Jul 17, 2023 pm 09:13 PM

PHPとOpenCVライブラリを使用してビデオ処理を実装するにはどうすればよいですか?要約: ビデオ処理は、現代の科学技術応用において重要な技術となっています。この記事では、PHP プログラミング言語を OpenCV ライブラリと組み合わせて使用​​して、いくつかの基本的なビデオ処理機能を実装する方法を紹介し、対応するコード例を添付します。キーワード: PHP、OpenCV、ビデオ処理、コード例 はじめに: インターネットの発達とスマートフォンの普及により、ビデオコンテンツは人々の生活に欠かせないものになりました。ただし、ビデオ編集を実現するには、

Python では、OpenCV ライブラリのメソッドを使用して画像をセグメント化して抽出できます。 Python では、OpenCV ライブラリのメソッドを使用して画像をセグメント化して抽出できます。 May 08, 2023 pm 10:55 PM

画像のセグメント化と抽出: 前景オブジェクトは、画像内のターゲット画像としてセグメント化または抽出されます。背景自体には興味がなく、分水界アルゴリズムと GrabCut アルゴリズムによって画像がセグメント化されて抽出されます。画像のセグメンテーションと抽出を実現するために分水界アルゴリズムを使用します。分水界アルゴリズムは、画像を地理的地形表面と鮮明に比較して、画像のセグメンテーションを実現します。このアルゴリズムは非常に効果的です。アルゴリズム原理 あらゆるグレースケール画像を地理的地形表面と見なすことができ、グレースケール値が高い領域は山の頂上として、グレースケール値が低い領域は谷として見ることができます。左側の画像は元の画像で、右側の画像はそれに対応する「地形面」です。このプロセスにより、画像が集水域と流域線という 2 つの異なるセットに分割されます。私たちが建設したダムは分水嶺、つまり本来のイメージです

初心者は読んでください: PyCharm に OpenCV をインストールする方法に関する詳細なチュートリアル 初心者は読んでください: PyCharm に OpenCV をインストールする方法に関する詳細なチュートリアル Feb 26, 2024 pm 03:24 PM

PyCharm は、JetBrains によって開発された強力な Python 統合開発環境 (IDE) であり、Python 開発者がコードを作成し、プログラムをデバッグし、プロジェクトを管理するのに役立つ豊富な機能とツールを提供します。 PyCharm で強力なコンピューター ビジョン ライブラリである OpenCV を使用すると、画像処理、ビデオ処理、その他のタスクを簡単に実行できます。この記事では、PyCharm に OpenCV をインストールして構成する手順を詳しく説明し、具体的なコード例を示します。 1.あん

See all articles