怎么创建一个画彩色图形的画板(python)?
1、代码如下。

2、效果如下。

3、用鼠标作图,可以调用一个自定义函数实现:
def draw(event,x,y,flags,param):
r=cv2.getTrackbarPos('R','a')
g=cv2.getTrackbarPos('G','a')
b=cv2.getTrackbarPos('B','a')
color=(b,g,r)
global ix,iy,drawing,m
if event==cv2.EVENT_LBUTTONDOWN:
drawing=True
ix,iy=x,y
elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
drawing==True
if m==True:
cv2.rectangle(img,(ix,iy),(x,y),color,-1)
else:
cv2.circle(img,(x,y),3,color,-1)
elif event==cv2.EVENT_LBUTTONUP:
drawing==False
按下鼠标左键并拖动,并且模式m为真,则在画板里面画矩形;
按下鼠标左键并拖动,并且模式m为假,则在画板里面画一串半径为3的小圆;
抬起鼠标,这个过程结束;
这里的逻辑关系还是很明确的。

4、img=np.zeros((512,512,3),np.uint8) #创建3通道的图片
cv2.namedWindow('a') #创建图片窗口
cv2.createTrackbar('R','a',0,255,nothing) #插入调色滑动条
cv2.createTrackbar('G','a',0,255,nothing)
cv2.createTrackbar('B','a',0,255,nothing)
cv2.setMouseCallback('a',draw) #捕获鼠标拖动的坐标值
while(1):
cv2.imshow('a',img)
k=cv2.waitKey(1)&0xFF
if k==ord('m'): #键盘里的m键实现模式在真假之间切换
m=not m
elif k==27:
break
当鼠标点下之后,ix,iy=x,y,就是初始位置的坐标。

5、当模式为真的时候,鼠标拖动,可以画出矩形,此时ix,iy保持不变,而x,y则以鼠标最终位置为准。
鼠标点下、拖动、抬起,一个矩形就绘制完成了。

6、矩形如果特别细,可以近似看作是线段。
不过只能画出水平线和竖直线。

7、点击m键,切换到另一种模式,此时鼠标点下并拖动,就会画出一串小圆。

8、如果鼠标移动的过快,会出现断线现象。
