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 

  • 相关阅读:
    java笔记使用线程池优化多线程编程
    java笔记查看和修改线程名称
    java笔记查看和修改线程的优先级
    java笔记策略模式和简单工厂模式
    java笔记用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
    java笔记枚举总结与详解
    java笔记关于克隆技术
    java笔记反射机制之基础总结与详解
    java笔记使用事件分配线程更新Swing控件
    java笔记关于int和byte[]的转换
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7397589.html
Copyright © 2011-2022 走看看