zoukankan      html  css  js  c++  java
  • OpenCV中的绘图函数-OpenCV步步精深

    OpenCV 中的绘图函数

    画线

    首先要为画的线创造出环境,就要生成一个空的黑底图像

    1. img=np.zeros((512,512,3), np.uint8)
    这是黑色的底,我们的画布,我把窗口名叫做img

    np.zeros()有两个参数,一个是创建的图片矩阵大小,另一个是数据类型

    512,512是像素(第一个512像素高,第二个是512像素宽),3指BGR三种颜色

    uint8是用0-255表示所有颜色。

    1. cv2.line(img,(0,0),(511,511),(255,0,0),5)

    这个函数有5个参数,img是图像名称,起点坐标,终点坐标,(255,0,0)是蓝色,5是线的宽度

    会画一条 从左上方到右下角的蓝色线段。

    画线两要素:起点与终点。

    画一条
    从左上方到右下角的蓝色线段。

    画矩形

    1. cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

    这个函数有5个参数,图像名称,左上顶点坐标,右下顶点坐标,(0,255,0)是绿色,线宽为3

    右上角画一个绿色的矩形

    画矩形两要素:左上顶点和右下顶点坐标。

    右上角画一个绿色矩形

    画圆

    1. cv2.circle(img,(447,63), 63, (0,0,255), -1)

    这个函数有5个参数,图像名称,圆心坐标,半径63,(0,0,255)红色,线宽为-1,当线宽-1时表示封闭图形的颜色填充。

    在画的矩形中画一个圆,半径为128的一般63

    画圆两要素:指定圆形的中心点坐标和半径大小

    画圆
    在矩形中画圆

    画椭圆

    1. cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

    这个函数有8个参数:图像名称,中心点坐标,长轴长度,短轴长度,旋转角度,图像出现的部分(长轴顺时针方向起始的角度和结束角度)0,180是下半个椭圆,颜色数组这里255是蓝色,线宽

    椭圆要素:1.是中心点的位置坐标 2.长轴和短轴的长度 3.椭圆沿逆时针方向旋转的角度 4.长轴顺时针方向起始的角度和结束角度

    画半个椭圆

     画多边形

    1. pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
    2. pts = pts.reshape((-1,1,2))
    3. img = cv2.polylines(img,[pts],True,(0,255,255),3)

    这个函数有5个参数:图像名称,顶点列表(这个多边形在array中有四个顶点),True表示闭合,(0,255,255)是黄色,3是线宽

    黄色多边形

    在图片上添加文字

    1. font=cv2.FONT_HERSHEY_SIMPLEX
    2. cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)

    这个函数有八个参数,图像名称,字符串,坐标,字体,字号,(255,255,255)白色、线宽2

    在图像上添加文字

    汇总所有的图像吧!

    所有图像在一起

    现在上所有代码!


    # -*- coding:utf-8 -*-
    """
    Created on Sun Dec 29 18:15:27 2016

    @author: Y

    """
    import cv2
    import numpy as np

    img=np.zeros((512,512,3), np.uint8)

    cv2.line(img,(0,0),(511,511),(255,0,0),5)

    cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

    cv2.circle(img,(447,63), 63, (0,0,255), -1)

    cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

    pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
    pts = pts.reshape((-1,1,2))
    img = cv2.polylines(img,[pts],True,(0,255,255),3)

    font=cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2)

    winname = 'img'
    cv2.namedWindow(winname)
    cv2.imshow(winname, img)
    cv2.waitKey(0)
    cv2.destroyWindow(winname)

    后面的显示的几行代码,窗口名是img,显示,销毁窗口,已经了然于心了。

    休息休息吧,这章学完,我们在人脸识别等等识别上,就能画出更好的线条与图案了,不至于那么丑~

    今天就到这了啦,欢迎下面留言哦,让我知道你来过,我是Y,晚安~

  • 相关阅读:
    获取DataGrid数据
    C# 分頁
    TCP 协议
    node fs对象
    ANSI转义码 改变输出的字体颜色
    异步流程控制模式
    node event对象
    js中的异常捕获 try{} catch{}(二)
    node require 文件查找的顺序
    node process全局对象
  • 原文地址:https://www.cnblogs.com/yujiachen/p/7672417.html
Copyright © 2011-2022 走看看