Opencv+python 零基础入门作业(一)
主要是记录做作业的基本思路与遇上的困难
作业:
读入一幅图像,在上面画一个空心圆(通过键盘输入圆心坐半径和颜色值),窗口显示画圆前后的效果,并保存画圆之后的图像到硬盘上为一个新的图像文件。
这个画圆的过程要求自己编写Bresenham算法来实现。
主要是通过网上的资源来先学习Bresenham算法画圆,然后学习opencv画圆,还有python的输入格式,窗口显示画圆前后效果不知道怎么在一个窗口里显示出来最后只好用了两个窗口来进行对比
1 import numpy as np 2 import time 3 import cv2 4 5 6 img = cv2.imread('1.jpg') 7 8 (center_x,center_y) = eval(input("请输入圆心坐标(输入格式为:(x,y)):")) 9 r = eval(input("请输入圆的半径:")) 10 point_color = eval(input("请输入圆颜色(用三原色格式):")) 11 cv2.imshow('image_orgin',img) 12 cv2.circle(img,(center_x,center_y),1,point_color,-1) #画圆心 13 (x,y)=(r,0) #起始点 14 d=3-2*r 15 16 while x>=y: #在y=x这条直线上绘画结束 17 cv2.circle(img,(center_x+x,center_y+y),1,point_color,1) 18 cv2.circle(img,(center_x+x,center_y-y),1,point_color,1) 19 cv2.circle(img,(center_x-x,center_y+y),1,point_color,1) 20 cv2.circle(img,(center_x-x,center_y-y),1,point_color,1) 21 cv2.circle(img,(center_y+y,center_x+x),1,point_color,1) 22 cv2.circle(img,(center_y+y,center_x-x),1,point_color,1) 23 cv2.circle(img,(center_y-y,center_x+x),1,point_color,1) 24 cv2.circle(img,(center_y-y,center_x-x),1,point_color,1) 25 26 if d>=0: #朝西北方向移动 27 d=d+4*y-4*x+10 28 x=x-1 29 else: #朝正北方向移动 30 d=d+4*y+6 31 y=y+1 #像素点朝北移动 32 33 34 cv2.imshow('image',img) 35 36 k = cv2.waitKey(0) 37 if k == ord('s'): #按s进行保存 38 39 cv2.imwrite('1.png',img) 40 cv2.destroyAllWindows() 41 else: 42 cv2.destroyAllWindows() 43 44 #测试用例:圆心坐标(100,100) 圆半径:50,圆颜色(255,0,0)
参考资料:
https://www.bilibili.com/video/BV1364y1d7Lo?from=search&seid=9244346015230632242
https://www.bilibili.com/video/BV1bN411Q763
https://www.cnblogs.com/ailitao/p/11787561.html
https://blog.csdn.net/qq_42839007/article/details/104153260
https://www.cnblogs.com/-wenli/p/11951946.html
https://www.cnblogs.com/ailitao/p/11787561.html
https://blog.csdn.net/gaoxiaoba/article/details/52154852
https://blog.csdn.net/sinat_41104353/article/details/82961824

浙公网安备 33010602011771号