1. 程式人生 > 程式設計 >opencv3/C++繪製幾何圖形例項

opencv3/C++繪製幾何圖形例項

在影象上繪製幾何圖形

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;

Mat src1,dst;
void drawRectangle();
void drawLine();
void drawEllipse();
void drawCircle();
void tsxt();

int main()
{
  src1 = imread("E:/image/image/daibola.jpg");
  dst = src1.clone();

  if(src1.empty())
  {
    printf("can not load image \n");
    return -1;
  }
  drawRectangle();
  drawLine();
  drawEllipse();
  drawCircle();
  tsxt();
  cvNamedWindow("output",CV_WINDOW_AUTOSIZE);
  imshow("output",dst);
  waitKey();
  return 0;
}
void drawRectangle()
{
  Rect rect = Rect(150,30,250,250);
  Scalar color = Scalar(0,255,255);
  rectangle(dst,rect,Scalar(0,255),2);
}
void drawLine()
{
  line(dst,Point(450,0),150),Scalar(255,50),2);
}
void drawEllipse()
{
  ellipse(dst,Point(100,100),Size(50,90),0.0,360,2);
}
void drawCircle()
{
  circle(dst,60,2);
}

void tsxt()
{
  putText(dst,"Image",Point(300,330),5,3.0,2);
}

隨機繪製大小不等的圓:

#include<opencv2/opencv.hpp>
using namespace cv;

Mat dst,src1;
void randomCircle();
int main()
{
  src1 = imread("E:/image/image/daibola.jpg");
  dst = Mat::zeros(src1.size(),src1.type());
  randomCircle();
  return 0;
}

void randomCircle()
{
  RNG rng(0);
  Point p1;
  int r;
  for(int i =0; i < 10000; i++)
  {
    p1.x = rng.uniform(0,dst.cols);
    p1.y = rng.uniform(0,dst.rows);
    r = rng.uniform(0,dst.rows/3);
    Scalar color = Scalar(rng.uniform(0,rng.uniform(0,255));
    if(waitKey(100) > 0)
    {
      break;
    }
    circle(dst,p1,r,color,2);
    imshow("circle",dst);
  }
}

以上這篇opencv3/C++繪製幾何圖形例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。