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")