Maison développement back-end Tutoriel Python Explication détaillée de la fonction simple de la planche à dessin basée sur opencv

Explication détaillée de la fonction simple de la planche à dessin basée sur opencv

Aug 07, 2020 pm 03:51 PM
opencv 画板

Explication détaillée de la fonction simple de la planche à dessin basée sur opencv

OpenCV fournit de nombreuses instructions simples pour implémenter des fonctions complexes. Sur la base des instructions de base de la couleur et de l'interaction de la souris, nous pouvons construire une simple planche à dessin. Bien que ce soit simple, il n’y a pas moins d’étapes pour réaliser le cadre.

Si vous êtes intéressé, vous pouvez l'écrire selon mes étapes, ou copier directement le code dans le programme principal et l'exécuter.

Recommandations d'apprentissage associées : Tutoriel vidéo Python

Fonctions

Effacer la planche à dessin. fonction, il est pratique pour la programmation ultérieure.
Fonctions cibles : couleur réglable, zone de dessin et saisie de la souris.

2. Construction de la charpente

Il y a deux étapes principales :

La première étape : Établir La sélection des couleurs peut être définie à l'aide de l'instruction de curseur OpenCV cv.createTrackbar. cv.createTrackbar a un total de cinq paramètres, qui sont (nom de la barre de suivi, nom de la fenêtre cible, valeur de départ - également la valeur par défaut, la valeur maximale, la fonction de rappel).

#创建画布
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
Copier après la connexion

Étape 2 : Capturez l'état de l'action de la souris et dessinez des graphiques dans la zone de dessin en fonction de l'action de la souris. Les instructions courantes d'opération de souris peuvent être visualisées en python à l'aide de l'instruction *events = [i for i in dir(cv) if 'EVENT' in i]*.

#设置一个是否开始画画的开关
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
Copier après la connexion

3. Fonction principale

La fonction principale est d'intégrer les deux parties ci-dessus.

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()
Copier après la connexion

Quatre effets de course

Résumé

De ce simple. Dans la planche à dessin, nous avons principalement appris et utilisé la fonction de la souris cv.setMouseCallback et cv.createTrackbar, deux fonctions de base d'OpenCV, et avons exploré les détails et découvert ce qui nécessite une attention particulière.

6. Procédure générale

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()
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Installez rapidement le guide d'étude OpenCV à l'aide du gestionnaire de packages pip Installez rapidement le guide d'étude OpenCV à l'aide du gestionnaire de packages pip Jan 18, 2024 am 09:55 AM

Utilisez la commande pip pour installer facilement le didacticiel OpenCV, qui nécessite des exemples de code spécifiques. OpenCV (OpenSource Computer Vision Library) est une bibliothèque de vision par ordinateur open source. Elle contient un grand nombre d'algorithmes et de fonctions de vision par ordinateur, qui peuvent aider les développeurs à créer rapidement des images. et applications liées au traitement vidéo. Avant d'utiliser OpenCV, nous devons d'abord l'installer. Heureusement, Python fournit un outil puissant pour gérer les bibliothèques tierces.

analyse d'un exemple de pyramide d'images python OpenCV analyse d'un exemple de pyramide d'images python OpenCV May 11, 2023 pm 08:40 PM

1. Base théorique de la pyramide d'images La pyramide d'images est une sorte d'expression d'images à plusieurs échelles. Il s'agit d'une structure efficace mais conceptuellement simple pour expliquer des images à plusieurs résolutions. Une pyramide d’images est une collection d’images avec des résolutions progressivement inférieures disposées en forme de pyramide et dérivées de la même image originale. Il est obtenu par échantillonnage en aval, et l'échantillonnage n'est arrêté que lorsqu'une certaine condition de terminaison est atteinte. Nous comparons les images couche par couche à une pyramide. Plus le niveau est élevé, plus l'image est petite et plus la résolution est faible. Alors pourquoi faisons-nous une pyramide d’images ? En effet, changer la taille des pixels ne change parfois pas ses caractéristiques. Par exemple, si je vous montre une image de 10 millions de pixels, vous pouvez savoir qu'il y a une personne dedans. Si je vous montre une image de 100 000 pixels, vous pouvez savoir qu'il y a une personne à l'intérieur. peut aussi savoir qu'il y a une personne dedans. Mais contre le plan.

Tutoriel d'installation d'OpenCV : un incontournable pour les utilisateurs de PyCharm Tutoriel d'installation d'OpenCV : un incontournable pour les utilisateurs de PyCharm Feb 22, 2024 pm 09:21 PM

OpenCV est une bibliothèque open source pour la vision par ordinateur et le traitement d'images, largement utilisée dans l'apprentissage automatique, la reconnaissance d'images, le traitement vidéo et d'autres domaines. Lors du développement à l'aide d'OpenCV, afin de mieux déboguer et exécuter des programmes, de nombreux développeurs choisissent d'utiliser PyCharm, un puissant environnement de développement intégré Python. Cet article fournira aux utilisateurs de PyCharm un didacticiel d'installation pour OpenCV, avec des exemples de code spécifiques. Première étape : installer Python Tout d’abord, assurez-vous que Python est installé

Comment utiliser Python+OpenCV pour obtenir l'effet de faire glisser des carrés virtuels Comment utiliser Python+OpenCV pour obtenir l'effet de faire glisser des carrés virtuels May 15, 2023 pm 07:22 PM

1. Effet du projet 2. Processus de base 1. openCV lit le flux vidéo et dessine un rectangle sur chaque image de l'image. 2. Utilisez Mediapipe pour obtenir les coordonnées des points clés des doigts. 3. En fonction de la position des coordonnées du doigt et de la position des coordonnées du rectangle, déterminez si la pointe du doigt est sur le rectangle. Si c'est le cas, le rectangle suivra le mouvement du doigt. 3. Préparation de l'environnement du processus de code : python:3.8.8opencv:4.2.0.32mediapipe:0.8.10.1 Remarque : 1. Si la version opencv est trop élevée ou trop basse, certains problèmes peuvent survenir, tels que la caméra ne peut pas être ouverte, des plantages , etc. La version python affecte les versions facultatives d'opencv. 2. pipinstallmediapipe peut provoquer une opération

Comment tracer des lignes avec des flèches dans OpenCV en utilisant Java ? Comment tracer des lignes avec des flèches dans OpenCV en utilisant Java ? Aug 20, 2023 pm 02:41 PM

Le package org.opencv.imgproc de la bibliothèque JavaOpenCV contient une classe appelée Imgproc qui fournit diverses méthodes pour traiter les images d'entrée. Il fournit un ensemble de méthodes pour dessiner des formes géométriques sur des images. Pour tracer une ligne fléchée, vous devez appeler la méthode arrowedLine() de cette classe. La méthode accepte les paramètres suivants : un objet Mat représentant l'image sur laquelle la ligne doit être tracée. Un objet Point représentant deux points entre des lignes. draw. Un objet scalaire représentant la couleur de la ligne. (BGR) Un entier représentant l'épaisseur de la ligne (par défaut : 1). Exemple importorg.opencv.core.Core;importation

Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Jul 17, 2023 pm 09:13 PM

Comment implémenter le traitement vidéo à l'aide de PHP et de la bibliothèque OpenCV ? Résumé : Dans les applications technologiques modernes, le traitement vidéo est devenu une technologie importante. Cet article expliquera comment utiliser le langage de programmation PHP combiné à la bibliothèque OpenCV pour implémenter certaines fonctions de traitement vidéo de base et joindra des exemples de code correspondants. Mots clés : PHP, OpenCV, traitement vidéo, exemples de code Introduction : Avec le développement d'Internet et la popularité des smartphones, le contenu vidéo est devenu un élément indispensable de la vie des gens. Cependant, pour réaliser le montage vidéo et

En Python, les images peuvent être segmentées et extraites à l'aide des méthodes de la bibliothèque OpenCV. En Python, les images peuvent être segmentées et extraites à l'aide des méthodes de la bibliothèque OpenCV. May 08, 2023 pm 10:55 PM

Segmentation et extraction d'images : les objets de premier plan sont segmentés ou extraits des images en tant qu'images cibles. L'arrière-plan lui-même n'est pas intéressé. L'algorithme du bassin versant et l'algorithme GrabCut segmentent et extraient l'image. Utilisez l'algorithme de bassin versant pour réaliser la segmentation et l'extraction d'images. L'algorithme de bassin versant compare de manière éclatante les images aux surfaces géographiques du terrain pour réaliser la segmentation d'image. Principe de l'algorithme Toute image en niveaux de gris peut être considérée comme une surface de terrain géographique. Les zones avec des valeurs d'échelle de gris élevées peuvent être considérées comme des sommets de montagne, et les zones avec des valeurs d'échelle de gris faibles peuvent être considérées comme des vallées. L'image de gauche est l'image originale et l'image de droite est la « surface topographique » correspondante. Ce processus sépare l'image en deux ensembles distincts : les bassins versants et les lignes de partage des eaux. Le barrage que nous avons construit est la ligne de partage des eaux, c'est-à-dire l'image originale

Débutants, veuillez lire : Tutoriel détaillé sur la façon d'installer OpenCV dans PyCharm Débutants, veuillez lire : Tutoriel détaillé sur la façon d'installer OpenCV dans PyCharm Feb 26, 2024 pm 03:24 PM

PyCharm est un puissant environnement de développement intégré (IDE) Python développé par JetBrains. Il fournit une multitude de fonctions et d'outils pour aider les développeurs Python à écrire du code, à déboguer des programmes et à gérer des projets. En utilisant OpenCV, une puissante bibliothèque de vision par ordinateur, dans PyCharm, vous pouvez facilement effectuer un traitement d'image, un traitement vidéo et d'autres tâches. Cet article détaillera les étapes d'installation et de configuration d'OpenCV dans PyCharm et fournira des exemples de code spécifiques. 1.Un

See all articles