def brush_circle(event, x, y, flags, param):
global ix, iy, drawing, mode, r,g,b,radius
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True # start to draw when L button down
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True and mode == True:
cv2.circle(img, (x,y), radius, (b, g, r), -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False # end drawing when L button up
if mode == True:
cv2.circle(img, (x,y), radius, (b, g, r), -1)
# Create a black image, a window
python类EVENT_MOUSEMOVE的实例源码
def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,mode
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),5,(0,0,255),-1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),5,(0,0,255),-1)
def draw_circle(event,x,y,flags,param):
global drawing,drawing1
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
if event == cv2.EVENT_RBUTTONDOWN:
drawing1 = True
if event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.circle(img,(x,y),5,(0,0,255),-1)
if drawing1 == True:
cv2.circle(img,(x,y),5,(0,255,0),-1)
if event == cv2.EVENT_LBUTTONUP:
drawing = False
if event == cv2.EVENT_RBUTTONUP:
drawing1 = False
#print (drawing)
def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,mode
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),5,(0,0,255),-1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if mode == True:
cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
else:
cv2.circle(img,(x,y),5,(0,0,255),-1)
image_to_world.py 文件源码
项目:Kinect-ASUS-Xtion-Pro-Live-Calibration-Tutorials
作者: taochenshh
项目源码
文件源码
阅读 28
收藏 0
点赞 0
评论 0
def draw_rect(self,event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
self.drawing = True
self.rect_done = False
self.ix1 = x
self.iy1 = y
elif event == cv2.EVENT_MOUSEMOVE:
if self.drawing == True:
self.ix2 = x
self.iy2 = y
elif event == cv2.EVENT_LBUTTONUP:
self.drawing = False
self.ix2 = x
self.iy2 = y
cv2.rectangle(self.rgb_image,(self.ix1,self.iy1),(self.ix2,self.iy2),(0,255,0),2)
center_point = self.get_center_point()
cv2.circle(self.rgb_image, tuple(center_point.astype(int)), 3, (0,0,255),-1)
cv2.imshow('RGB Image', self.rgb_image)
cv2.waitKey(5)
self.rect_done = True
def _mouse_ops(self, event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
self._drawing = True
self._pt0 = (x, y)
elif event == cv2.EVENT_LBUTTONUP:
self._drawing = False
self._pt1 = (x, y)
self._bboxes.append((self._cur_label, (self._pt0, self._pt1)))
elif event == cv2.EVENT_MOUSEMOVE:
self._pt1 = (x, y)
elif event == cv2.EVENT_RBUTTONUP:
if self._bboxes:
self._bboxes.pop()
def draw_rect(event,x,y,flags,param):
global x1,y1,x2,y2,drawing,img,imgSmall,finishDraw
# ??????????????
if event==cv2.EVENT_LBUTTONDOWN:
drawing=True
x1,y1=x,y
# ???????????????? event ??????? flag ??????
elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
if drawing==True:
img[:,:]=newGray[:,:]
img[y1:y,x1:x]=imgSmall[y1:y,x1:x]
cv2.rectangle(img,(x1,y1),(x,y),(0,0,255),1)
# ??????????
elif event==cv2.EVENT_LBUTTONUP:
drawing==False
x2,y2=x,y
finishDraw = True
def annotate(event, x, y, flags, param):
"""Callback for function 'annotate_tracks'.
Tracks cursor and detects if mouse position is to be saved as
a trackpoint. Track points are saved once per frame if the
left mouse button is held down.
"""
global is_read
global px, py
if event == cv2.EVENT_MOUSEMOVE:
px, py = x, y
if event == cv2.EVENT_LBUTTONDOWN:
is_read = 1
if event == cv2.EVENT_LBUTTONUP:
is_read = 0
def draw_circle( event, x,y,flags, param):
global ix, iy, drawing, mode
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
if mode == True:
cv2.rectangle( img, (ix, iy), (x,y),(0,255,0), 1) # -1 for last argument like CV_FILLED
else:
cv2.circle( img, (x,y), 5, (0,0,255), -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if mode == True:
cv2.rectangle( img, (ix, iy), (x,y), (0,255,0), 1)
else:
cv2.circle(img, (x,y), 5, (0,0,255),-1)
def draw(event, x, y, flags, param):
global ix, iy, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing:
cv2.line(img, (ix, iy), (x, y), (0.9, 0.01, 0.9), pen_size)
ix, iy = x, y
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.line(img, (ix, iy), (x, y), (0.9, 0.01, 0.9), pen_size)
def draw(event, x, y, flags, param):
global ix, iy, drawing
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing:
cv2.line(img, (ix, iy), (x, y), (0.9, 0.01, 0.9), pen_size)
ix, iy = x, y
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
cv2.line(img, (ix, iy), (x, y), (0.9, 0.01, 0.9), pen_size)
def _callBack(self, event, x, y, flags, param):
# ????????????????
if event == cv2.EVENT_LBUTTONDOWN:
self._doEvent(self._press_func, x, y)
self._is_drag = True
# ????????????
elif event == cv2.EVENT_MOUSEMOVE:
if self._is_drag:
self._doEvent(self._drag_func, x, y)
# ????????????????
elif event == cv2.EVENT_LBUTTONUP:
self._doEvent(self._release_func, x, y)
self._is_drag = False
# ?????????
def make_mouse_callback(imgs, ref_pt):
# initialize the list of reference points and boolean indicating
# whether cropping is being performed or not
cropping = [False]
clone = imgs[0]
def _click_and_crop(event, x, y, flags, param):
# grab references to the global variables
# global ref_pt, cropping
# if the left mouse button was clicked, record the starting
# (x, y) coordinates and indicate that cropping is being
# performed
if event == cv2.EVENT_LBUTTONDOWN:
ref_pt[0] = (x, y)
cropping[0] = True
# check to see if the left mouse button was released
elif event == cv2.EVENT_LBUTTONUP:
# record the ending (x, y) coordinates and indicate that
# the cropping operation is finished
ref_pt[1] = (x, y)
cropping[0] = False
# draw a rectangle around the region of interest
imgs[1] = image = clone.copy()
cv2.rectangle(image, ref_pt[0], ref_pt[1], (0, 255, 0), 2)
cv2.imshow("image", image)
elif event == cv2.EVENT_MOUSEMOVE and cropping[0]:
img2 = clone.copy()
cv2.rectangle(img2, ref_pt[0], (x, y), (0, 255, 0), 2)
imgs[1] = image = img2
cv2.imshow("image", image)
return _click_and_crop
def make_mouse_callback(imgs, ref_pt):
# initialize the list of reference points and boolean indicating
# whether cropping is being performed or not
cropping = [False]
clone = imgs[0]
def _click_and_crop(event, x, y, flags, param):
# grab references to the global variables
# global ref_pt, cropping
# if the left mouse button was clicked, record the starting
# (x, y) coordinates and indicate that cropping is being
# performed
if event == cv2.EVENT_LBUTTONDOWN:
ref_pt[0] = (x, y)
cropping[0] = True
# check to see if the left mouse button was released
elif event == cv2.EVENT_LBUTTONUP:
# record the ending (x, y) coordinates and indicate that
# the cropping operation is finished
ref_pt[1] = (x, y)
cropping[0] = False
# draw a rectangle around the region of interest
imgs[1] = image = clone.copy()
cv2.rectangle(image, ref_pt[0], ref_pt[1], (0, 255, 0), 2)
cv2.imshow("image", image)
elif event == cv2.EVENT_MOUSEMOVE and cropping[0]:
img2 = clone.copy()
cv2.rectangle(img2, ref_pt[0], (x, y), (0, 255, 0), 2)
imgs[1] = image = img2
cv2.imshow("image", image)
return _click_and_crop
extract_signals.py 文件源码
项目:traffic-light-detection
作者: ranveeraggarwal
项目源码
文件源码
阅读 28
收藏 0
点赞 0
评论 0
def click_and_crop(event, x, y, flags, param):
# grab references to the global variables
global refPt, cropping, i
# if the left mouse button was clicked, record the starting
# (x, y) coordinates and indicate that cropping is being
# performed
if event == cv2.EVENT_LBUTTONDOWN:
if refPt == []:
refPt = [(x, y)]
else:
refPt.append((x,y))
cropping = True
i += 1
if event == cv2.EVENT_MOUSEMOVE and cropping:
image2 = image.copy()
cv2.rectangle(image2, refPt[2*i-2], (x,y), (0,255,0), 2)
cv2.imshow("image",image2)
# check to see if the left mouse button was released
elif event == cv2.EVENT_LBUTTONUP:
# record the ending (x, y) coordinates and indicate that
# the cropping operation is finished
refPt.append((x, y))
cropping = False
# draw a rectangle around the region of interest
cv2.rectangle(image, refPt[2*i-2], refPt[2*i-1], (0, 255, 0), 2)
# cv2.rectangle(image2, refPt[2*i-2], refPt[2*i-1], (0, 255, 0), 2)
cv2.imshow("image", image)
# construct the argument parser and parse the arguments
def mouse(self, event, x, y, flags, param):
""" Listen for mouse.
"""
if event == cv2.EVENT_MOUSEMOVE:
self.currPosX, self.currPosY = x, y
# print "curposX,Y", x, y
elif event == cv2.EVENT_LBUTTONUP:
self.click_point_x, self.click_point_y = x, y
if self.curr_level == 0:
self.easy_mode = True
self.curr_level = 1
if self.curr_level == 2:
self.reset()
elif event == cv2.EVENT_RBUTTONUP:
self.click_point_right_x, self.click_point_right_y = x, y
if self.present_mode:
self.reset()
self.easy_mode = False
self.curr_level = 1
def draw(event, x, y, flags, param):
global drawing, ix, iy, shape, canvas, brush
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
ix, iy = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
if shape == 1:
cv2.circle(canvas, (x, y), pencil, color, -1)
elif shape == 2:
cv2.circle(canvas, (x, y), brush, color, -1)
elif shape == 3:
cv2.circle(canvas, (x, y), eraser, (255, 255, 255), -1)
elif shape == 5:
cv2.rectangle(canvas, (ix, iy), (x, y), color, -1)
elif shape == 6:
cv2.circle(canvas, (x, y), calc_radius(x, y), color, -1)
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
if shape == 1:
cv2.circle(canvas, (x, y), pencil, color, -1)
elif shape == 2:
cv2.circle(canvas, (x, y), brush, color, -1)
elif shape == 3:
cv2.circle(canvas, (x, y), eraser, (255, 255, 255), -1)
elif shape == 4:
cv2.line(canvas, (ix, iy), (x, y), color, pencil)
elif shape == 5:
cv2.rectangle(canvas, (ix, iy), (x, y), color, -1)
elif shape == 6:
cv2.circle(canvas, (x, y), calc_radius(x, y), color, -1)
def give_X_Y(event,x,y,flags, param):
print '1'
if event==cv2.EVENT_MOUSEMOVE:
print x,y
def draw_rectangle(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
param.drawing=True
param.setxy(x,y)
param.printxy()
elif event == cv2.EVENT_MOUSEMOVE:
if param.drawing == True:
a=layering(param.layer_data,param.layer_index)
img_temp_rect=a.copy()
img_temp_rect=cv2.rectangle(img_temp_rect,(param.ix,param.iy),(x,y),(0,255,0),2)
cv2.imshow('image',img_temp_rect)
elif event == cv2.EVENT_LBUTTONUP:
param.drawing = False
shape_dimension1 = np.asarray((param.ix,param.iy))
shape_dimension2=np.asarray((x,y))
param.layer_data.resize(param.layer_data.shape[0]+1,4)
k = param.layer_data.shape
param.layer_data[k[0]-1, 0] = 1
param.layer_data[k[0]-1, 1] = shape_dimension1
param.layer_data[k[0]-1, 2] = shape_dimension2
param.layer_data[k[0]-1,3]=param.layer_index+1
param.layer_index=param.layer_index+1
print param.layer_data
a=layering(param.layer_data,param.layer_index)
grasp_pos_rgbd_cluster.py 文件源码
项目:Kinect-ASUS-Xtion-Pro-Live-Calibration-Tutorials
作者: taochenshh
项目源码
文件源码
阅读 29
收藏 0
点赞 0
评论 0
def draw_rect(self,event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
self.drawing = True
self.rect_done = False
self.ix1 = x
self.iy1 = y
elif event == cv2.EVENT_MOUSEMOVE:
if self.drawing == True:
self.ix2 = x
self.iy2 = y
elif event == cv2.EVENT_LBUTTONUP:
self.drawing = False
self.ix2 = x
self.iy2 = y
tempimg = self.rgb_image.copy()
cv2.rectangle(tempimg,(self.ix1,self.iy1),(self.ix2,self.iy2),(0,255,0),2)
center_point = self.get_center_point()
cv2.circle(tempimg, tuple(center_point.astype(int)), 3, (0,0,255),-1)
cv2.imshow('RGB Image', tempimg)
cv2.waitKey(5)
self.rect_done = True
grasp_pos.py 文件源码
项目:Kinect-ASUS-Xtion-Pro-Live-Calibration-Tutorials
作者: taochenshh
项目源码
文件源码
阅读 30
收藏 0
点赞 0
评论 0
def draw_rect(self,event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
self.drawing = True
self.rect_done = False
self.ix1 = x
self.iy1 = y
elif event == cv2.EVENT_MOUSEMOVE:
if self.drawing == True:
self.ix2 = x
self.iy2 = y
elif event == cv2.EVENT_LBUTTONUP:
self.drawing = False
self.ix2 = x
self.iy2 = y
tempimg = self.rgb_image.copy()
cv2.rectangle(tempimg,(self.ix1,self.iy1),(self.ix2,self.iy2),(0,255,0),2)
center_point = self.get_center_point()
cv2.circle(tempimg, tuple(center_point.astype(int)), 3, (0,0,255),-1)
cv2.imshow('RGB Image', tempimg)
cv2.waitKey(5)
self.rect_done = True
def click(event, x, y, flags, param):
global upper_left_point
global lower_right_point
global current_mouse_pos
if event == cv2.EVENT_LBUTTONDOWN:
upper_left_point = [x, y]
if event == cv2.EVENT_LBUTTONUP:
lower_right_point = [x, y]
if event == cv2.EVENT_MOUSEMOVE:
current_mouse_pos = [x, y]
def Crop(img,title):
def onmouse(event,x,y,flags,param):
global ix,iy,roi,drawing
# Draw Rectangle
if event == cv2.EVENT_RBUTTONDOWN:
drawing = True
ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.rectangle(img,(ix,iy),(x,y),BLUE,-1)
rect = (ix,iy,abs(ix-x),abs(iy-y))
elif event == cv2.EVENT_RBUTTONUP:
drawing = False
cv2.rectangle(img,(ix,iy),(x,y),BLUE,-1)
rect = (ix,iy,x,y)
roi.extend(rect)
cv2.namedWindow(title,cv2.WINDOW_NORMAL)
cv2.setMouseCallback(title,onmouse)
print ("Right click and hold to draw a single rectangle ROI, beginning at the top left corner of the desired area. A blue box should appear. Hit esc to exit screen. Window can be resized by selecting borders.")
while True:
cv2.namedWindow(title,cv2.WINDOW_NORMAL)
cv2.imshow(title,img)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
print(roi)
return(roi)
def Crop(img,title):
def onmouse(event,x,y,flags,param):
global ix,iy,roi,drawing
# Draw Rectangle
if event == cv2.EVENT_RBUTTONDOWN:
drawing = True
ix,iy = x,y
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.rectangle(img,(ix,iy),(x,y),BLUE,-1)
rect = (ix,iy,abs(ix-x),abs(iy-y))
elif event == cv2.EVENT_RBUTTONUP:
drawing = False
cv2.rectangle(img,(ix,iy),(x,y),BLUE,-1)
rect = (ix,iy,x,y)
roi.extend(rect)
cv2.namedWindow(title,cv2.WINDOW_NORMAL)
cv2.setMouseCallback(title,onmouse)
print ("Right click and hold to draw a single rectangle ROI, beginning at the top left corner of the desired area. A blue box should appear. Hit esc to exit screen. Window can be resized by selecting borders.")
while True:
cv2.namedWindow(title,cv2.WINDOW_NORMAL)
cv2.imshow(title,img)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
print(roi)
return(roi)
def test(m):
class DrawingState:
def __init__(self):
self.x_prev = 0
self.y_prev = 0
self.drawing = False
self.update = True
def interactive_drawing(event, x, y, flags, param):
image = param[0]
state = param[1]
if event == cv2.EVENT_LBUTTONDOWN:
state.drawing = True
state.x_prev, state.y_prev = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if state.drawing:
cv2.line(image, (state.x_prev, state.y_prev), (x, y), (1, 1, 1), 1)
state.x_prev = x
state.y_prev = y
state.update = True
elif event == cv2.EVENT_LBUTTONUP:
state.drawing = False
elif event == cv2.EVENT_RBUTTONDOWN:
image.fill(0)
state.update = True
cv2.namedWindow('Canvas')
image_input = np.zeros((FLAGS.input_height, FLAGS.input_width, 3), np.float32)
state = DrawingState()
cv2.setMouseCallback('Canvas', interactive_drawing, [image_input, state])
while cv2.getWindowProperty('Canvas', 0) >= 0:
if state.update:
reshaped_image_input = np.array([image_input])
image_output = m.test(reshaped_image_input)
concatenated = np.concatenate((image_input, image_output[0]), axis=1)
color_converted = cv2.cvtColor(concatenated, cv2.COLOR_RGB2BGR)
cv2.imshow('Canvas', color_converted)
state.update = False
k = cv2.waitKey(1) & 0xFF
if k == 27: # esc
break
cv2.destroyAllWindows()
def mouse_callback(event, x, y, flags, param):
global refPt, image, tiles, wall, selected_tile, l_mouse_button_down, mouse_over_tile,\
clone, offsets
if event == cv2.EVENT_LBUTTONDOWN:
l_mouse_button_down = True
refPt = [(x, y)]
if not draw_tile:
if find_hovered_tile(x,y):
mouse_over_tile = True
offsets = (x - selected_tile.wx - selected_tile.l, y-selected_tile.wy - selected_tile.t)
else:
mouse_over_tile = False
elif event == cv2.EVENT_LBUTTONUP:
l_mouse_button_down = False
if draw_tile:
#Restrict to create tiles that are at least 100 sqpixel big
if (abs(refPt[0][0] - x) * abs(refPt[0][1] - y) >= 100):
newTile = Tile(abs(refPt[0][0] - x), abs(refPt[0][1] - y))
wall.add_tile(newTile, min(refPt[0][0], x), min(refPt[0][1], y))
wall.draw(image)
tiles.append(newTile)
else:
print("dragging the tile")
elif event == cv2.EVENT_RBUTTONUP:
if find_hovered_tile(x,y):
tile_popup()
elif event == cv2.EVENT_MOUSEMOVE:
# TODO: Implement the t r b resize too
if l_mouse_button_down and mouse_over_tile and x >= selected_tile.wx and x <= selected_tile.wx + 5:
new_w = selected_tile.w + selected_tile.wx + selected_tile.l - x
# TODO: Fix when the bezel is resized to the left
print(
"selected_tile.w = {} selected_tile.wx = {} x = {} new_w = {}".format(selected_tile.w, selected_tile.wx, x,
new_w))
if new_w >= MINIMUM_RESIZE_WIDTH:
selected_tile.w = new_w
selected_tile.wx = x - selected_tile.l
image = clone.copy()
wall.draw(image)
print("RESIZING")
elif l_mouse_button_down and mouse_over_tile and not draw_tile:
selected_tile.wx = x - offsets[0]
selected_tile.wy = y - offsets[1]
image = clone.copy()
wall.draw(image)
#TODO: Implement an else that will start drawing the tile while in the draw mode
def on_mouse(event, x, y, flags, param):
layout, downpos, ismove = param
# record downpos
if event == cv2.EVENT_LBUTTONDOWN:
print 'click at', x*2, y*2 # picture is half-sized.
param[1] = (x, y)
param[2] = False
return
# check if is moving
if event == cv2.EVENT_MOUSEMOVE:
if ismove: return
if downpos is None:
param[2] = False
return
_x, _y = downpos
if (_x-x)**2 + (_y-y)**2 > 64:
param[2] = True
return
if event != cv2.EVENT_LBUTTONUP:
return
# update layout.highlight
b = layout.tree.bounds
l, t = b.left, b.top
w, h = b.right - b.left, b.bottom - b.top
highlight = np.zeros((h, w, 3), np.uint8)
if downpos and ismove: # drag
node = layout.find_scrollable_node(x*2+l, y*2+t)
print 'scroll to', x*2, y*2
if node:
b = node.bounds
print 'scrollable node', b, node.index, node.className,
print 'resource_id:', node.resourceId,
print 'text:', node.text.encode(encoding, 'ignore'),
print 'desc:', node.description.encode(encoding, 'ignore')
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,255,255), 4)
else:
node = layout.find_clickable_node(x*2+l, y*2+t)
if node:
b = node.bounds
print 'clickable node', b, node.index, node.className,
print 'resource_id:', node.resourceId,
print 'text:', node.text.encode(encoding, 'ignore'),
print 'desc:', node.description.encode(encoding, 'ignore')
print device(className=node.className, index=node.index).info
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,0,255), 4)
cond, order = layout.find_selector(node)
if cond:
print 'selector', cond, order
subnode = layout._filter_nodes(cond)[order or 0]
b = subnode.bounds
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,180,255), 4)
param[0].highlight = highlight
param[1], param[2] = None, False
def on_mouse(event, x, y, flags, param):
layout, downpos, ismove = param
# record downpos
if event == cv2.EVENT_LBUTTONDOWN:
print 'click at', x*2, y*2 # picture is half-sized.
param[1] = (x, y)
param[2] = False
return
# check if is moving
if event == cv2.EVENT_MOUSEMOVE:
if ismove: return
if downpos is None:
param[2] = False
return
_x, _y = downpos
if (_x-x)**2 + (_y-y)**2 > 64:
param[2] = True
return
if event != cv2.EVENT_LBUTTONUP:
return
# update layout.highlight
b = layout.tree.bounds
l, t = b.left, b.top
w, h = b.right - b.left, b.bottom - b.top
highlight = np.zeros((h, w, 3), np.uint8)
if downpos and ismove: # drag
node = layout.find_scrollable_node(x*2+l, y*2+t)
print 'scroll to', x*2, y*2
if node:
b = node.bounds
print 'scrollable node', b, node.index, node.className,
print 'resource_id:', node.resourceId,
print 'text:', node.text.encode(encoding, 'ignore'),
print 'desc:', node.description.encode(encoding, 'ignore')
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,255,255), 4)
else:
node = layout.find_clickable_node(x*2+l, y*2+t)
if node:
b = node.bounds
print 'clickable node', b, node.index, node.className,
print 'resource_id:', node.resourceId,
print 'text:', node.text.encode(encoding, 'ignore'),
print 'desc:', node.description.encode(encoding, 'ignore')
print device(className=node.className, index=node.index).info
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,0,255), 4)
cond, order = layout.find_selector(node)
if cond:
print 'selector', cond, order
subnode = layout._filter_nodes(cond)[order or 0]
b = subnode.bounds
cv2.rectangle(highlight, (b.left-l, b.top-t), (b.right-l, b.bottom-t), (0,180,255), 4)
param[0].highlight = highlight
param[1], param[2] = None, False
def show_tool_01(real, pred, show_shape):
"""
"""
real_shape = real.shape
pred_shape = pred.shape
_real = imgs_display(real, show_shape)
_pred = gray2rgb(imgs_display(pred, show_shape))
select_imgs = []
def tool(event, x, y, flags, param):
inx = int(x/real_shape[1])
iny = int(y/real_shape[2])
def find():
px = inx*pred_shape[1]
py = iny*pred_shape[2]
p = np.copy(_pred)
# cv2.putText(p, "x:%s y:%s px:%s py:%s"%(x,y,px,py), (px,py), cv2.FONT_HERSHEY_SIMPLEX, 0.2, (255, 255, 255), 1)
cv2.rectangle(p, (px, py), (px+pred_shape[1], py+pred_shape[2]), (0, 255, 0), 2)
cv2.imshow("PRED", p)
if event == cv2.EVENT_LBUTTONDOWN:
select_imgs = param[0]
select_imgs.append(pred[inx + iny*show_shape[1]])
select_imgs = select_imgs[-10*10:]
cv2.imshow("SELECT", imgs_display(np.array(select_imgs), [10]*2))
elif event == cv2.EVENT_MOUSEMOVE:
find()
elif event == cv2.EVENT_LBUTTONUP:
# cv2.destroyWindow(win_name)
pass
cv2.namedWindow("REAL")
cv2.setMouseCallback("REAL", tool, [select_imgs])
cv2.imshow("PRED", _pred)
# keep looping until the 'q' key is pressed
while True:
# display the image and wait for a keypress
cv2.imshow("REAL", _real)
key = cv2.waitKey(1) & 0xFF
if key == ord('q'):
break
cv2.destroyAllWindows()