def get_points(event,x,y,flags,param):
global lpnts,rpnts
if event == cv2.EVENT_LBUTTONDOWN:
lpnts = np.append(lpnts, np.array([[x, y]]), axis=0)
cv2.polylines(img, [lpnts], False, (0, 0, 255))
if event == cv2.EVENT_RBUTTONDOWN:
rpnts = np.append(rpnts, np.array([[x, y]]), axis=0)
cv2.polylines(img, [rpnts], False, (255, 0, 0))
if rpnts.size>2:
check(lpnts, rpnts[-1], rpnts[-2])
#check if the new point crosses a line
python类EVENT_RBUTTONDOWN的实例源码
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 annotate_mouse_callback(event, x, y, flags, annotator):
winName = annotator.winName
# If adding a bounding box:
if annotator.editing:
# Set top left corner of rectangle:
if event == cv2.EVENT_LBUTTONDOWN:
annotator.rect_tl = (x, y)
# Set bottom right corner of rectangle:
elif event == cv2.EVENT_RBUTTONDOWN:
annotator.rect_br = (x, y)
# If deleting a bounding box:
elif annotator.deleting:
if event == cv2.EVENT_LBUTTONDOWN:
print 'Delete at {}'.format((x, y))
annotator.delete_rectangles_at_point((x, y))
annotator.deleting = False
annotator.update_display()
def imageMouseCallback(self, event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
x, y = self.calibrator.findImageStar(x, y)
correspondence = self.findCorrespondence(x, y)
if correspondence is None:
if self.calibrator.setCorrespondencePos(self.selected_star, (x, y)):
self.selected_star = self.calibrator.findEmptyPos()
else:
self.selected_star = self.calibrator.addCorrespondence((x, y), None)
else:
self.selected_star = correspondence
self.render()
elif event == cv2.EVENT_RBUTTONDOWN:
self.deleteSelectedStar()
def skyMouseCallback(self, event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
res = self.renderer.findStar(x, y, self.circle_radius)
if res is None:
return
altaz = (res[0], res[1])
correspondence = self.calibrator.findAltAzCorrespondence(altaz)
if correspondence is None:
if self.calibrator.setCorrespondenceAltaz(self.selected_star, altaz):
self.selected_star = self.calibrator.findEmptyAltAz()
else:
self.selected_star = self.calibrator.addCorrespondence(None, altaz)
else:
self.selected_star = correspondence
self.render()
elif event == cv2.EVENT_RBUTTONDOWN:
self.deleteSelectedStar()
def video_click(self,e, x, y, flags, param):
if e == cv2.EVENT_LBUTTONDOWN:
self.video_stat.is_drug = 1
self.video_stat.p0 = (x, y)
print("rect start", x, y)
elif e == cv2.EVENT_LBUTTONUP:
self.video_stat.is_drug = 0
self.video_stat.p1 = (x, y)
print("rect end", x, y)
self.video_stat.append_box(self.label_stat.get_label_name())
elif e== cv2.EVENT_RBUTTONDOWN:
self.video_stat.remove_point_box((x,y))
self.video_stat.p=(x,y)
def init_mask(self, event, x, y, flags, param):
self._thickness = 3 # The thickness in drawing;
self._WHITE = [255, 255, 255] # Pure white;
# Draw a point on the image;
if event == cv2.EVENT_RBUTTONDOWN:
if self._drawing == True:
cv2.circle(self.img, (x, y), self._thickness, self._WHITE, -1)
self.mask[y-self._thickness:y+self._thickness, x-self._thickness:x+self._thickness] = self._SHADOW
self._shadow_seed = self.img[y-self._thickness:y+self._thickness, x-self._thickness:x+self._thickness].copy()
elif event == cv2.EVENT_RBUTTONUP:
if self._drawing == True:
self._drawing = False
self._drawn = True
cv2.circle(self.img, (x, y), self._thickness, self._WHITE, -1)
def do_draw(self, event, x, y, flags, param):
draw_vals = {1: 100, 2: 0}
if event == cv2.EVENT_LBUTTONUP or event == cv2.EVENT_RBUTTONUP:
self.drawing = 0
elif event == cv2.EVENT_LBUTTONDOWN:
self.drawing = 1
elif event == cv2.EVENT_RBUTTONDOWN:
self.drawing = 2
elif self.drawing != 0:
cv2.circle(self.img, (x, y), 5, draw_vals[self.drawing], -1)
detection_crop_window.py 文件源码
项目:Kaggle_the_Nature_Conservancy_Fisheries_Monitoring
作者: Sapphirine
项目源码
文件源码
阅读 18
收藏 0
点赞 0
评论 0
def click_and_crop(event, x, y, flags, param):
global refPt, cropping
if event == cv2.EVENT_LBUTTONDOWN: # indicates that the left mouse button is pressed
refPt = [(x, y)]
cropping = True
elif event == cv2.EVENT_RBUTTONDOWN: # indicates that the right mouse button is pressed
refPt.append((x, y))
cropping = False
cv2.rectangle(image, refPt[0], refPt[1], (0, 255, 0), 2)
cv2.imshow("image", image)
# <=====================================================================================>
# Here is the process to crop the window and get the position of the graph
# after the classification of the fish boat
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()