opencv鼠標繪圖

本文將為您詳細介紹如何使用opencv在原始圖片上進行鼠標繪圖。

一、準備工作

在開始繪製之前,您需要先準備好以下的工作:

1、安裝opencv庫,可以通過pip install opencv-python命令進行安裝。

2、導入opencv庫和matplotlib庫,以實現在圖片中實時繪製。

import cv2
import matplotlib.pyplot as plt

二、鼠標響應事件

當我們在圖片上點擊鼠標時,需要響應該事件來實現繪圖操作。

def draw(event, x, y, flags, params):
    if event == cv2.EVENT_LBUTTONDOWN:
        cv2.circle(img,(x,y),5,(255,0,0),-1)

該函數為鼠標響應函數,當檢測到鼠標左鍵按下並釋放時,即為鼠標繪圖操作。

參數說明:

event:檢測到的鼠標事件類型。

x,y:鼠標點擊的位置坐標。

flags:附加的鼠標事件信息。

params:傳遞給鼠標事件處理函數的參數。

三、繪製

在完成鼠標響應事件後,我們需要開闢一個窗口來顯示圖片,並在其中響應繪圖操作。

img = cv2.imread('img.jpg')
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw)

while(1):
    cv2.imshow('image',img)
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

該代碼段實現以下操作:

1、讀入圖片。

2、創建一個窗口並綁定響應函數。

3、顯示圖片並等待鼠標響應。

4、按下ESC鍵退出程序。

注意:

由於cv2.imshow函數的不易適用性,我們在使用matplotlib.pyplot的imshow函數實現等同的功能。

img = cv2.imread('img.jpg')
plt.imshow(img)
plt.setMouseCallback('image', draw)

while(1):
    plt.imshow(img)
    plt.show(block=False)
    plt.pause(0.001)

plt.close()

四、小結

本文介紹了如何通過opencv在原始圖片上進行鼠標繪圖,並提供了完整的代碼示例。

對於讀者們,建議多嘗試不同的對象繪製方式和參數,從而更好的理解opencv庫和鼠標響應事件的使用。

原創文章,作者:TKUIK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/373448.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TKUIK的頭像TKUIK
上一篇 2025-04-27 15:26
下一篇 2025-04-27 15:26

相關推薦

  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • Python OpenCV 直線檢測

    本文將介紹在Python OpenCV中進行直線檢測的方法,主要涉及到圖像的邊緣檢測、霍夫變換和繪製直線等操作。 一、邊緣檢測 由於直線檢測是從圖像的邊緣開始的,因此必須先找到圖像…

    編程 2025-04-29
  • Opencv 實現讀取 BMP 圖片

    Opencv 是一個基於 C/C++ 語言的開源計算機視覺庫,可以用於圖像處理、特徵識別、目標跟蹤、機器學習等領域。在圖像處理中,讀取 BMP 圖片是常見操作之一。 一、打開 BM…

    編程 2025-04-27
  • 深入探討OpenCV版本

    OpenCV是一個用於計算機視覺應用程序的開源庫。它是由英特爾公司創建的,現已由Willow Garage管理。OpenCV旨在提供一個易於使用的計算機視覺和機器學習基礎架構,以實…

    編程 2025-04-25
  • OpenCV的全面介紹

    OpenCV是一款強大的開源計算機視覺庫,它包含了各種用於圖像和視頻處理,圖像識別和機器學習的函數,它可以用於開發實時的計算機視覺軟件和系統,特別適用於圖像處理、物體識別、人臉識別…

    編程 2025-04-25
  • Opencv CUDA編譯用法介紹

    本文將從多個方面對Opencv CUDA編譯進行詳細的闡述和解讀。通過以下小標題,我們將詳細介紹如何進行編譯。 一、環境搭建 在使用CUDA進行加速之前,需要進行CUDA的環境搭建…

    編程 2025-04-25
  • 詳解OpenCV高斯濾波

    一、高斯濾波的介紹 OpenCV高斯濾波是一種平滑圖像的處理方法,通常用於去除噪聲、模糊化圖像等。它的原理是利用高斯函數進行加權平均,從而減少噪聲的干擾。 在圖像處理中,噪聲是一種…

    編程 2025-04-25
  • Clion配置OpenCV

    Clion是一個功能強大的跨平台集成開發環境,但要開發圖像處理、計算機視覺等相關領域應用,需要將OpenCV集成到Clion中,才能方便地進行開發。本文將介紹如何在Clion中配置…

    編程 2025-04-24
  • OpenCV之cv2.imshow()

    一、cv2.imshow()介紹 cv2.imshow()是OpenCV中顯示圖像的主要函數之一。它可以顯示傳遞給它的圖像窗口,或者將圖像作為選定窗口的內容。cv2.imshow(…

    編程 2025-04-24
  • Opencv圖像拼接

    一、拼接方法 Opencv圖像拼接方法主要有兩種,分別是水平拼接和垂直拼接。 水平拼接是將多張圖像在水平方向連接在一起,最終形成一張橫向拼接的長圖。垂直拼接是將多張圖像在垂直方向連…

    編程 2025-04-24

發表回復

登錄後才能評論