zoukankan      html  css  js  c++  java
  • opencv各种绘图 直线 矩形 圆 椭圆

    画图函数

    (1)直线cvLine函数

    其结构

    void cvLine(//画直线
      CvArr* array,//画布图像
      CvPoint pt1,//起始点
      CvPoint pt2,//终点
      CvScalar color,//颜色
      int thickness = 1,//宽度
      int connectivity = 8//反走样
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1;
      src1 = cvLoadImage("10.jpg");
      
      cvLine(src1,cvPoint(20,20),cvPoint(250,250),CV_RGB(255,0,0),8);
    
      cvShowImage( "原图", src1);
      cvWaitKey();
      return 0;
    }
    输出结果


    (2)矩形cvRectangle函数

    其结构

    void cvRectangle(//画矩形
      CvArr* array,//画布图形
      CvPoint pt1,//起始点
      CvPoint pt2,//终点
      CvScalar color,//颜色
      int thickness = 1,//宽度
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1;
      src1 = cvLoadImage("10.jpg");
      
      cvRectangle(src1,cvPoint(20,20),cvPoint(200,200),CV_RGB(0,255,0),8);
    
      cvShowImage( "原图", src1);
      cvWaitKey();
      return 0;
    }
    输出结果


    (3)圆形cvCircle函数

    其结构

    void cvCircle(//画圆
      CvArr* array,//画布图像
      CvPoint cevter,//圆心
      int radius,//半径
      CvScalar color,//颜色
      int thickness = 1,//宽度
      int connectivity = 8//反走样
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1;
      src1 = cvLoadImage("10.jpg");
      
      cvCircle(src1,cvPoint(150,150),100,CV_RGB(0,0,255),5);
    
      cvShowImage( "原图", src1);
      cvWaitKey();
      return 0;
    }
    输出结果


    (4)椭圆cvEllipse函数

    其结构

    void cvEllipse(//画椭圆
      CvArr* img,//画布图像
      CvPoint center,//中心点
      CvSize axes,//长短轴
      double angle,//偏离主轴角度
      double start_angle,//弧线開始位置
      double end_angle,//弧线结束位置
      CvScalar color,//颜色
      int thickness = 1,//宽度
      int line_type = 8//
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1;
      src1 = cvLoadImage("10.jpg");
      
      cvEllipse(src1,cvPoint(150,150),cvSize(150,50),45,0,360,CV_RGB(255,0,0),3);
    
      cvShowImage( "原图", src1);
      cvWaitKey();
      return 0;
    }
    输出结果


    (5)多边形函数

    1.cvFillPoly函数

    其结构

    void cvFillPoly(//画多个实心多边形
      CvArr* img,//画布图像
      CvPoint** pts,//点序列
      int* npt,//计数点数组
      int contours,//显示几个多边形
      CvScalar color,//颜色
      int line_type = 8
    );
    2.cvFillConvexPoly函数

    其结构

    void cvFillConvexPoly(//画一个实心多边形
      CvArr* img,//画布图像
      CvPoint* pts,//点序列
      int npt,//计数点数组
      CvScalar color,//颜色
      int line_type = 8
    );
    3.cvPolyLine函数
    void cvFillPoly(//画多个空心多边形
      CvArr* img,//画布图像
      CvPoint** pts,//点序列
      int* npt,//计数点数组
      int contours,//显示几个多边形
      int is_closed,//是否从上个多边形尾点開始
      CvScalar color,//颜色
      int thickness = 1,//宽度
      int line_type = 8
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1,*src2,*src3;
      src1 = cvLoadImage("7.jpg");
      src2 = cvLoadImage("8.jpg");
      src3 = cvLoadImage("9.jpg");
    
      int arr[3]= {4,4,4};   
    
      CvPoint ** pt =new CvPoint*[3];
    
      pt[0] = new CvPoint[4];  
      pt[0][0] = cvPoint(10,10);  
      pt[0][1] = cvPoint(210,10);  
      pt[0][2] = cvPoint(210,210);  
      pt[0][3] = cvPoint(10,210);  
      pt[1] = new CvPoint[4]; 
      pt[1][0] = cvPoint(10,310);  
      pt[1][1] = cvPoint(210,310);  
      pt[1][2] = cvPoint(210,510);  
      pt[1][3] = cvPoint(10,510);  
      pt[2] = new CvPoint[4]; 
      pt[2][0] = cvPoint(310,10);  
      pt[2][1] = cvPoint(410,10);  
      pt[2][2] = cvPoint(410,210);  
      pt[2][3] = cvPoint(310,210);  
    
      cvPolyLine(src1, pt, arr, 3, 1, CV_RGB(0,255,0),5);  
    
      cvFillPoly(src2, pt,arr,3,CV_RGB(250,0,0));  
    
      cvFillConvexPoly(src3,pt[0],4,CV_RGB(0,0,255));
    
      cvShowImage( "原图1", src1);
      cvShowImage( "原图2", src2);
      cvShowImage( "原图3", src3);
      cvWaitKey();
      return 0;
    }
    输出结果


    (6)绘制文字cvPutText函数

    其结构

    void cvPutText(//绘制文字
      CvArr* img,//画图图像
      const char* text,//文字内容
      CvPoint origin,//文字起始位置
      const CvFont* font,//文字字体设置
      CvScalar color//颜色
    );
    实例代码
    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    
    int main(int argc, char** argv)
    {
      IplImage *src1,*src2,*src3;
      src1 = cvLoadImage("10.jpg");
    
      char* str = "I am a student!";
    
      CvFont* cf = new CvFont();
    
      cvInitFont(cf,CV_FONT_HERSHEY_SIMPLEX,1.0,0.5);
    
      cvPutText(src1,str,cvPoint(50,100),cf,CV_RGB(255,0,0));
    
      cvShowImage( "原图1", src1);
      cvWaitKey();
      return 0;
    }
    输出结果


    to be continued 

  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7397589.html
Copyright © 2011-2022 走看看