Anzeigen der Koordinaten der Punkte, die mit Python-OpenCV auf das Bild geklickt wurden
OpenCV hilft uns, verschiedene Arten von Mausereignissen zu steuern und zu verwalten, und gibt uns die Flexibilität, sie zu bedienen. Es gibt viele Arten von Mausereignissen. Diese Ereignisse können durch Ausführen des folgenden Codesegments angezeigt werden:
cv2 importieren [print (i) für i in dir (cv2) wenn 'EVENT' in i]
Ausgabe :
EVENT_FLAG_ALTKEY EVENT_FLAG_CTRLKEY EVENT_FLAG_LBUTTON EVENT_FLAG_MBUTTON EVENT_FLAG_RBUTTON EVENT_FLAG_SHIFTKEY EVENT_LBUTTONDBLCLK EVENT_LBUTTONDOWN EVENT_LBUTTONUP EVENT_MBUTTONDBLCLK EVENT_MBUTTONDOWN EVENT_MBUTTONUP EVENT_MOUSEHWHEEL EVENT_MOUSEMOVE EVENT_MOUSEWHEEL EVENT_RBUTTONDBLCLK EVENT_RBUTTONDOWN EVENT_RBUTTONUP
Lassen Sie uns nun sehen, wie die Koordinaten der auf das Bild geklickten Punkte angezeigt werden. Wir zeigen sowohl die Punkte an, auf die mit der rechten Maustaste geklickt wird, als auch mit der linken Maustaste.
Algorithmus:
- Importieren Sie das
cv2
Modul. - Importieren Sie das Bild mit der
cv2.imread()
Funktion. cv2.imshow()
Zeigen Sie das Bild mit der Funktion an.- Rufen Sie die
cv2.setMouseCallback()
Funktion auf und übergeben Sie das Bildfenster und die benutzerdefinierte Funktion als Parameter. - Suchen Sie in der benutzerdefinierten Funktion mit dem
cv2.EVENT_LBUTTONDOWN
Attribut nach Linksklicks. - Zeigen Sie die Koordinaten auf der Shell an.
- Zeigen Sie die Koordinaten im erstellten Fenster an.
- Machen Sie dasselbe für Rechtsklick-Klicks mit dem
cv2.EVENT_RBUTTONDOWN
Attribut. Ändern Sie die Farbe, während Sie die Koordinaten im Bild anzeigen, um sie von Linksklicks zu unterscheiden. - Verwenden Sie außerhalb der benutzerdefinierten Funktion
cv2.waitKey(0)
diecv2.destroyAllWindows()
Funktionen und, um das Fenster zu schließen und das Programm zu beenden.
Wir werden die farbige Version des Lena-Bildes verwenden .
import
cv2
def
click_event(event, x, y, flags, params):
if
event
=
=
cv2.EVENT_LBUTTONDOWN:
(x,
' '
, y)
font
=
cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,
str
(x)
+
','
+
str
(y), (x,y), font,
1
, (
255
,
0
,
0
),
2
)
cv2.imshow(
'image'
, img)
if
event
=
=
cv2.EVENT_RBUTTONDOWN:
(x,
' '
, y)
font
=
cv2.FONT_HERSHEY_SIMPLEX
b
=
img[y, x,
0
]
g
=
img[y, x,
1
]
r
=
img[y, x,
2
]
cv2.putText(img,
str
(b)
+
','
+
str
(g)
+
','
+
str
(r),
(x,y), font,
1
,
(
255
,
255
,
0
),
2
)
cv2.imshow(
'image'
, img)
if
__name__
=
=
"__main__"
:
img
=
cv2.imread(
'lena.jpg'
,
1
)
cv2.imshow(
'image'
, img)
cv2.setMouseCallback(
'image'
, click_event)
cv2.waitKey(
0
)
cv2.destroyAllWindows()
Ausgabe :