【图像处理】——Python鼠标框选ROI(感兴趣)区域并且保存(含鼠标事件)
生活随笔
收集整理的這篇文章主要介紹了
【图像处理】——Python鼠标框选ROI(感兴趣)区域并且保存(含鼠标事件)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
鼠標交互切割矩形
接下來,就是本文重點了。先吐個槽,網(wǎng)上有資源,但搜到的都是C++的。本來有點氣餒的,還好,有官網(wǎng)在,文檔寫得很清楚,而且接口函數(shù)名字變化不大,稍微做下修改就行了。
import cv2global img global point1, point2 def on_mouse(event, x, y, flags, param):global img, point1, point2img2 = img.copy()if event == cv2.EVENT_LBUTTONDOWN: #左鍵點擊point1 = (x,y)cv2.circle(img2, point1, 10, (0,255,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON): #按住左鍵拖曳cv2.rectangle(img2, point1, (x,y), (255,0,0), 5)cv2.imshow('image', img2)elif event == cv2.EVENT_LBUTTONUP: #左鍵釋放point2 = (x,y)cv2.rectangle(img2, point1, point2, (0,0,255), 5) cv2.imshow('image', img2)min_x = min(point1[0],point2[0]) min_y = min(point1[1],point2[1])width = abs(point1[0] - point2[0])height = abs(point1[1] -point2[1])cut_img = img[min_y:min_y+height, min_x:min_x+width]cv2.imwrite('lena3.jpg', cut_img)def main():global imgimg = cv2.imread('lena.jpg')cv2.namedWindow('image')cv2.setMouseCallback('image', on_mouse)cv2.imshow('image', img)cv2.waitKey(0)if __name__ == '__main__':main()-
實現(xiàn)效果:當按住左鍵不放且不動時,就會出現(xiàn)個綠圈在圖片上,當按住左鍵拖曳鼠標時,就會畫出個藍色矩形,最后當釋放鼠標時,則出現(xiàn)個紅色的選定框.最后最后再隨意按一個鍵盤鍵,就會結束程序。
-
運行結果
原圖:
鼠標響應函數(shù)
?
參考:https://blog.csdn.net/qq_37674858/article/details/80434618
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的【图像处理】——Python鼠标框选ROI(感兴趣)区域并且保存(含鼠标事件)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车零部件开发工具巨头V公司全套boot
- 下一篇: 581. Shortest Unsort