• 在图像中画点,画框


    画点

    from PIL import Image
    from pylab import *
    import cv2
    import matplotlib.pyplot as plt
    im = array(Image.open('E:/1.jpg'))
    # im.astype(int)
    plt.imshow(im)
    print ('Please click 3 points')
    click = plt.ginput(3, timeout = -1)
    plt.close()
    print ('you clicked:',click)
    x = []
    y = []
    for a, b in click:
        a = int(a)
        b = int(b)
        cv2.circle(im, (a, b), 2, (0, 0, 255), -1)
    cv2.imshow('name', im)
    cv2.waitKey()
    cv2.destroyAllWindows()

    画框

    '''
    EVENT_FLAG_ALTKEY = 32        摁住Alt
    EVENT_FLAG_CTRLKEY = 8        摁住Ctrl
    
    EVENT_FLAG_LBUTTON = 1        摁住左键
    EVENT_FLAG_MBUTTON = 4        摁住中键
    EVENT_FLAG_RBUTTON = 2        摁住右键
    EVENT_FLAG_SHIFTKEY = 16    摁住Shift
    
    EVENT_LBUTTONDBLCLK = 7        左键双击
    EVENT_LBUTTONDOWN = 1        左键击下
    EVENT_LBUTTONUP = 4            左键弹起
    EVENT_MBUTTONDBLCLK = 9        中键双击
    EVENT_MBUTTONDOWN = 3        中键击下
    EVENT_MBUTTONUP = 6            中键弹起
    EVENT_MOUSEHWHEEL = 11        滚动条向左,flags>0。向右,flags<0
    EVENT_MOUSEMOVE = 0            鼠标移动
    EVENT_MOUSEWHEEL = 10        滚动条向上,flags>0。向下,flags<0
    EVENT_RBUTTONDBLCLK = 8        中键双击
    EVENT_RBUTTONDOWN = 2        中键击下
    EVENT_RBUTTONUP = 5            中键弹起
    '''
    import numpy as np
    import cv2
    drawing = False #鼠标按下为真
    mode = True #如果为真,画矩形,按m切换为曲线
    ix,iy=-1,-1
    def draw_circle(event,x,y,flags,param):
        global ix,iy,drawing,mode
        if event == cv2.EVENT_LBUTTONDOWN:
            drawing = True
            ix,iy=x,y
            cv2.circle(img, (ix, iy), 2, (0, 255, 0), -1)
        # 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), 2)
                print((ix, iy), (x, y))
            else:
                cv2.circle(img,(x,y),5,(0,0,255),-1)
    img = cv2.imread('E:/1.jpg')
    cv2.namedWindow('image')
    cv2.setMouseCallback('image',draw_circle)
    while(1):
        cv2.imshow('image',img)
        k = cv2.waitKey(1) & 0xFF
        if k == ord('m') :
            mode = not mode
        elif k == 27:
            break
    cv2.destroyAllWindows()
  • 相关阅读:
    hdu1028 Ignatius and the Princess III ——DP
    csu1290 Random Integers ——DP入门题&&比赛残留题
    uva11462 Age Sort ——计数排序
    uva127 ``Accordian'' Patience ——链表模拟题
    入门经典 7.1.1 除法
    poj1122&&zoj1053 FDNY to the Rescue! ——最短路入门题_Dijkstra算法
    zoj3696 Alien's Organ ——概率题
    poj1018 Communication System ——贪心+枚举
    WPS for Ubuntu!
    ural1057 Amount of Degrees ——数位DP
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/15876566.html
Copyright © 2020-2023  润新知