日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

使用Python和OpenCV捕获鼠标事件,并裁剪图像

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Python和OpenCV捕获鼠标事件,并裁剪图像 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用Python和OpenCV捕獲鼠標事件,并裁剪圖像

    • 1. 效果圖
    • 2. 源碼
    • 參考

這篇博客將介紹如何使用Python和OpenCV捕獲鼠標事件。還演示了如何快速裁剪和提取圖像區域,這在為自己的自定義對象檢測器創建訓練數據時特別有用。

該示例將點擊圖片,并拖動一個矩形的興趣區(ROI),然后從圖像中裁剪出來。

1. 效果圖

拿我最喜歡的小林老師的漫畫圖,截圖圖像中的薰衣草圖片ROI,并展示,效果圖如下:

在截一下郁金香,郁金香ROI下圖右側~~

2. 源碼

# 使用Python,OpenCV捕獲鼠標單擊事件
# USAGE
# python click_and_crop.py --image lin_image.jpg# 導入必要的類
import argparse
import cv2
import imutils# 初始化參考點列表和布爾值標志:是否正在執行裁剪
refPt = []
cropping = False# 點擊并裁剪ROI區域
# -events 鼠標事件(如按下鼠標左鍵,釋放鼠標左鍵,鼠標移動等)
# -x x坐標
# -y y坐標
# -flages params 其他參數
def click_and_crop(event, x, y, flags, param):# 獲取全局變量的引用global refPt, cropping# 如果鼠標左被單擊,記錄(x,y)坐標并顯示裁剪正在進行if event == cv2.EVENT_LBUTTONDOWN:refPt = [(x, y)]cropping = True# 檢測鼠標左鍵是否釋放elif event == cv2.EVENT_LBUTTONUP:# 記錄結束(x,y)坐標,并顯示裁剪結束refPt.append((x, y))cropping = False# 在感興趣區域記錄矩形區域cv2.rectangle(image, refPt[0], refPt[1], (0, 255, 0), 2)cv2.imshow("image", image)# 構建命令行參數及解析
# -image 原始圖像的路徑
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())# 加載圖像,并復制,設置鼠標回調函數
image = cv2.imread(args["image"])
image = imutils.resize(image, width=500)
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", click_and_crop)# 保持循環直至按下‘q’鍵
while True:# 展示圖像并等待按下鍵cv2.imshow("image", image)key = cv2.waitKey(1) & 0xFF# 如果按下‘r’鍵,則重置裁剪區域if key == ord("r"):image = clone.copy()# 按下‘q’鍵,跳出循環elif key == ord("q"):break# 如果參考點列表里有倆個點,則裁剪區域并展示
if len(refPt) == 2:roi = clone[refPt[0][1]:refPt[1][1], refPt[0][0]:refPt[1][0]]cv2.imshow("ROI", roi)cv2.waitKey(0)# 關閉所有打開的窗口
cv2.destroyAllWindows()

參考

  • https://www.pyimagesearch.com/2015/03/09/capturing-mouse-click-events-with-python-and-opencv/

總結

以上是生活随笔為你收集整理的使用Python和OpenCV捕获鼠标事件,并裁剪图像的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。