py-opencv学习笔记五 鼠标截取图像的ROI

1、ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。

2、算法描述:用到鼠标的事件,左键按下时,把点击的点设为矩形的左上角顶点,左键松开时设为矩形的右下角顶点。最后画出矩形并根据矩形的坐标对图片矩阵进行切片。

#图像加载和截取
import cv2 as cv
#读取图像
img=cv.imread("hua.jpg")
#画矩形标志
drawing=False
x_,y_=0,0#矩形的左上角
x__,y__=0,0#矩形的右下角
cv.namedWindow("hello")#原图窗口
cv.namedWindow("test",cv.WINDOW_AUTOSIZE)#ROI窗口
def on_mouse(event,x,y,flags,param): 
        global drawing,x_,y_,x__,y__
        if event==cv.EVENT_LBUTTONDOWN:
            drawing=True
            x_,y_=x,y#鼠标左键按下,获取矩形左定点的值
            print(x_,y_)
        elif event==cv.EVENT_MOUSEMOVE:
            if drawing:
                x__,y__=x,y#左键按下,并移动。不断更新右下角的值
        elif event==cv.EVENT_LBUTTONUP:
                print(x__,y__)
                drawing=False
                cv.rectangle(img,(x_,y_),(x__,y__),(0,255,0),3)
                cv.imshow("test",img[y_:y__,x_:x__])//py中的切片操作获取ROI
cv.setMouseCallback("hello",on_mouse)
while (1):
    cv.imshow("hello",img)
    if cv.waitKey(20)==ord('C'):
        break
cv.destroyWindow("hello")





         

py-opencv学习笔记五 鼠标截取图像的ROI_第1张图片

你可能感兴趣的:(python-opencv)