opencv3常用绘图函数



常用的绘图函数:

cv2.line()cv2.circle()cv2.rectangle()cv2.ellipse()cv2.putText() 


上面所有的这些绘图函数需要设置下面这些参数:
• img:你想要绘制图形的那幅图像。
• color:形状的颜色。以 RGB 为例,需要传入一个元组,例如: (255,0,0
代表蓝色。对于灰度图只需要传入灰度值。
• thickness:线条的粗细。如果给一个闭合图形设置为 -1,那么这个图形
就会被填充。默认值是 1.
• linetype:线条的类型, 8 连接,抗锯齿等。默认情况是 8 连接。 cv2.LINE_AA
为抗锯齿,这样看起来会非常平滑。

1、画线

  1. <span style="font-size:18px;">import numpy as np  
  2. import cv2  
  3. img=np.zeros((512,512,3),np.uint8)  
  4. cv2.line(img,(0,0),(512,512),(255,0,0),5)  
  5. cv2.imshow("shiyan",img)  
  6. cv2.waitKey(0)  
  7. cv2.destroyAllWindows()  
  8. </span>  
<span style="font-size:18px;">import numpy as np
import cv2
img=np.zeros((512,512,3),np.uint8)
cv2.line(img,(0,0),(512,512),(255,0,0),5)
cv2.imshow("shiyan",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
</span>
2、画矩形

要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标。这次我们会在图像的右上角话一个绿色的矩形。


  1. <span style="font-size:18px;">import numpy as np  
  2. import cv2  
  3. img=np.zeros((512,512,3),np.uint8)  
  4. cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)  
  5. cv2.imshow("shiyan",img)  
  6. cv2.waitKey(0)  
  7. cv2.destroyAllWindows()  
  8. </span>  
<span style="font-size:18px;">import numpy as np
import cv2
img=np.zeros((512,512,3),np.uint8)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv2.imshow("shiyan",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
</span>

3、画圆

要画圆的话,只需要指定圆形的中心点坐标和半径大小。我们在上面的矩形中画一个圆。

  1. import numpy as np  
  2. import cv2  
  3. img=np.zeros((512,512,3),np.uint8)  
  4. cv2.circle(img,(447,63),63,(0,0,255),-1)  
  5. cv2.imshow("shiyan",img)  
  6. cv2.waitKey(0)  
  7. cv2.destroyAllWindows()  
import numpy as np
import cv2
img=np.zeros((512,512,3),np.uint8)
cv2.circle(img,(447,63),63,(0,0,255),-1)
cv2.imshow("shiyan",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
4、画椭圆

画椭圆比较复杂,我们要多输入几个参数。一个参数是中心点的位置坐标。下一个参数是长轴和短轴的长度。椭圆沿逆时针方向旋转的角度。椭圆弧演
顺时针方向起始的角度和结束角度,如果是 0 360,就是整个椭圆。
查看cv2.ellipse() 可以得到更多信息。下面的例子是在图片的中心绘制半个椭圆。

  1. <span style="font-size:18px;">import numpy as np  
  2. import cv2  
  3. img=np.zeros((512,512,3),np.uint8)  
  4. #cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)  
  5. #cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)  
  6. cv2.ellipse(img,(256,256),(100,50),0,0,0,255,-1)  
  7. cv2.imshow("shiyan",img)  
  8. cv2.waitKey(0)  
  9. cv2.destroyAllWindows()  
  10. </span>  
<span style="font-size:18px;">import numpy as np
import cv2
img=np.zeros((512,512,3),np.uint8)
#cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
#cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)
cv2.ellipse(img,(256,256),(100,50),0,0,0,255,-1)
cv2.imshow("shiyan",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
</span>
5、画多边形、

画多边形,需要指点每个顶点的坐标。用这些点的坐标构建一个大小等于行数 X1X2 的数组,行数就是点的数目。

这个数组的数据类型必须为 int32。这里画一个黄色的具有四个顶点的多边形。

  1. pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)  
  2.  pts=pts.reshape((-1,1,2))  
pts=np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
 pts=pts.reshape((-1,1,2))
  1. # 这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的。  
 # 这里 reshape 的第一个参数为-1, 表明这一维的长度是根据后面的维度的计算出来的。
6、 在图片上添加文字

要在图片上绘制文字,你需要设置下列参数:
你要绘制的文字
你要绘制的位置
字体类型(通过查看 cv2.putText() 的文档找到支持的字体)
字体的大小
文字的一般属性如颜色,粗细,线条的类型等。为了更好看一点推荐使用
linetype=cv2.LINE_AA
在图像上绘制白色的 OpenCV


  1. <span style="font-size:18px;">import numpy as np  
  2. import cv2  
  3. img=np.zeros((512,512,3),np.uint8)  
  4. #cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)  
  5. #cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)  
  6. #cv2.ellipse(img,(256,256),(100,50),0,0,0,255,-1)  
  7. font=cv2.FONT_HERSHEY_SIMPLEX  
  8. cv2.putText(img,"opencv",(10,500),font,4,(255,255,255),2)  
  9. cv2.imshow("shiyan",img)  
  10. cv2.waitKey(0)  
  11. cv2.destroyAllWindows()  
  12. </span>  
<span style="font-size:18px;">import numpy as np
import cv2
img=np.zeros((512,512,3),np.uint8)
#cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)
#cv2.ellipse(img,(256,256),(100,50),0,0,360,255,-1)
#cv2.ellipse(img,(256,256),(100,50),0,0,0,255,-1)
font=cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,"opencv",(10,500),font,4,(255,255,255),2)
cv2.imshow("shiyan",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
</span>

猜你喜欢

转载自blog.csdn.net/qq_30310799/article/details/80829930