精华内容
下载资源
问答
  • 主要介绍了opencv中画圆circle函数和椭圆ellipse函数,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Ellipse函数画圆

    万次阅读 2015-02-07 15:58:30
    Ellipse函数的用法  函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。  函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, ...

    Ellipse函数的用法  

    函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。

        函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int nBottomRect);

        参数:

        hdc:设备环境句柄。

        nLeftRect:指定限定矩形左上角的X坐标。

        nTopRect:指定限定矩形左上角的Y坐标。

        nRightRect:指定限定矩形右下角的X坐标。

        nBottomRect:指定限定矩形右下角的Y坐标。

        返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。

        Windows NT:若想获得更多错误信息,请调用GetLastError函数。

        备注:椭圆既不使用也不改变当前位置。

        Windows 95和Windows 98:限定矩形的坐标值之和不能超过32767。nLeftRect与nRigthRect或nTopRectn与BottomRect之和不能超过32767

     

    Ellipse(x1,y1,x2,y2),你必须确保x2-x1==y2-y1,这样你画出的就是正圆,而不是椭圆了.

    不用Windows自带的画椭圆函数画椭圆方法参考

    /
    // Draw a ellipse mid point algorthism
    /
    void CGraphicsView::midleEllipse(int xCenter, int yCenter, int Rx, int Ry, HDC dc)
    {
    int Rx2 = Rx*Rx;
    int Ry2 = Ry*Ry;
    int twoRx2 = 2*Rx2;
    int twoRy2 = 2*Ry2;
    int p;
    int x=0;
    int y=Ry;
    int px = 0;
    int py = twoRx2*y;
    SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    //Region 1
    p = (int)(Ry2-Rx2*Ry+0.25*Rx2);
    while(px<py)
    {
    x++;
    px+=twoRy2;
    if(p<0)
    p+=Ry2+px;
    else
    {
    y--;
    py-=twoRx2;
    p+=Ry2+px-py;
    }
    SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    }
    //Region 2
    p = (int)(Ry2*(x+0.5)*(x+0.5)+Rx2*(y-1)*(y-1)-Rx2*Ry2);
    while(y>0)
    {
    y--;
    py-=twoRx2;
    if(p>0)
    p+=Rx2-py;
    else
    {
    x++;
    px+=twoRy2;
    p+=Rx2-py+px;
    }
    SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    }

    }

    /
    // Draw a circle
    /
    void circleMidpoint(int xCenter,int yCenter,int radius,HDC dc)
    {
    int x = 0;
    int y = radius;
    int p=1-radius;
    while(x<y)
    {
    x++;
    if(p<0)
    {
    p+=2*x+1;
    }
    else
    {
    y--;
    p+=2*(x-y)+1;
    }
    SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));

    SetPixel(dc,xCenter+y,yCenter+x,RGB(255,0,0));
    SetPixel(dc,xCenter-y,yCenter+x,RGB(255,0,0));
    SetPixel(dc,xCenter+y,yCenter-x,RGB(255,0,0));
    SetPixel(dc,xCenter-y,yCenter-x,RGB(255,0,0));
    }
    }

     

    展开全文
  • Ellipse函数的用法 函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。 函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int ...

    Ellipse函数的用法

    函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。

    函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int nBottomRect);

    参数:

    • hdc:设备环境句柄。

    • nLeftRect:指定限定矩形左上角的X坐标。

    • nTopRect:指定限定矩形左上角的Y坐标。

    • nRightRect:指定限定矩形右下角的X坐标。

    • nBottomRect:指定限定矩形右下角的Y坐标。

    返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。

    Windows NT:若想获得更多错误信息,请调用GetLastError函数。

    备注:椭圆既不使用也不改变当前位置。

    Windows 95和Windows 98:限定矩形的坐标值之和不能超过32767。nLeftRect与nRigthRect或nTopRectn与BottomRect之和不能超过32767

    注意:

    Ellipse(x1,y1,x2,y2),你必须确保x2-x1==y2-y1,这样你画出的就是正圆,而不是椭圆了.

    不用Windows自带的画椭圆函数画椭圆方法参考

    代码如下:

    
    //画一个椭圆中点算法
    void CGraphicsView::midleEllipse(int xCenter, int yCenter, int Rx, int Ry, HDC dc)
    {
    	int Rx2 = Rx*Rx;
    	int Ry2 = Ry*Ry;
    	int twoRx2 = 2*Rx2;
    	int twoRy2 = 2*Ry2;
    	int p;
    	int x=0;
    	int y=Ry;
    	int px = 0;
    	int py = twoRx2*y;
    	SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    	SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    	SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    	SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    	//Region 1
    	p = (int)(Ry2-Rx2*Ry+0.25*Rx2);
    	while(px<py)
    	{
    		x++;
    		px+=twoRy2;
    		if(p<0)
    			p+=Ry2+px;
    		else
    		{
    			y--;
    			py-=twoRx2;
    			p+=Ry2+px-py;
    		}
    		SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    	}
    	//Region 2
    	p = (int)(Ry2*(x+0.5)*(x+0.5)+Rx2*(y-1)*(y-1)-Rx2*Ry2);
    	while(y>0)
    	{
    		y--;
    		py-=twoRx2;
    		if(p>0)
    			p+=Rx2-py;
    		else
    		{
    			x++;
    			px+=twoRy2;
    			p+=Rx2-py+px;
    		}
    		SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    	}
    
    }
    
    
    // 画圆
    void circleMidpoint(int xCenter,int yCenter,int radius,HDC dc)
    {
    	int x = 0;
    	int y = radius;
    	int p=1-radius;
    	while(x<y)
    	{
    		x++;
    		if(p<0)
    		{
    			p+=2*x+1;
    		}
    		else
    		{
    			y--;
    			p+=2*(x-y)+1;
    		}
    		SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
    		SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
    		SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
    		
    		SetPixel(dc,xCenter+y,yCenter+x,RGB(255,0,0));
    		SetPixel(dc,xCenter-y,yCenter+x,RGB(255,0,0));
    		SetPixel(dc,xCenter+y,yCenter-x,RGB(255,0,0));
    		SetPixel(dc,xCenter-y,yCenter-x,RGB(255,0,0));
    	}
    }
    
    
    展开全文
  • PIL ellipse函数画椭圆

    千次阅读 2019-04-04 17:16:26
    函数原型ellipse(xy, fill=None, outline=None) 第一参数为椭圆的外切矩形, 当外切矩形是正方形时,形状为圆。xy指(x1, y1, x2, y2) 第二、三参数为填充颜色和线条颜色。 from PIL import Image from PIL ...

    问题描述

    PIL ellipse函数画椭圆




    解决方案

    函数原型ellipse(xy, fill=None, outline=None)

    该函数用于画椭圆。

    第一参数为椭圆的外切矩形, 当外切矩形是正方形时,形状为圆。xy指(x1, y1, x2, y2)可以看成是(left, top, right, bottom)

    第二、三参数为填充颜色和线条颜色。

    在这里插入图片描述

    from PIL import Image
    from PIL import ImageDraw
    
    image = Image.open('1.jpg')
    draw = ImageDraw.Draw(image)
    
    draw.ellipse((590, 260, 620, 290), 'red')
    image.show()
    

    在这里插入图片描述




    所有颜色:

    import matplotlib.pyplot as plt
    import matplotlib.patches as patches
    import matplotlib.colors as colors
    import math
    
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    ratio = 1.0 / 3.0
    count = math.ceil(math.sqrt(len(colors.cnames)))
    x_count = count * ratio
    y_count = count / ratio
    x = 0
    y = 0
    w = 1 / x_count
    h = 1 / y_count
    
    for c in colors.cnames:
        pos = (x / x_count, y / y_count)
        ax.add_patch(patches.Rectangle(pos, w, h, color=c))
        ax.annotate(c, xy=pos)
        if y >= y_count-1:
            x += 1
            y = 0
        else:
            y += 1
    
    plt.show()
    

    在这里插入图片描述




    参考文献

    1. 几何图形的绘制与文字的绘制(ImageDraw类详解)
    展开全文
  • 1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle,const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);...

    1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle,

    const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

    ellipse函数将椭圆画到图像 lmg 上, 椭圆中心为点center,并且大小位于矩形 axes 内,椭圆旋转角度为 angle, 扩展的弧度从 0 度到 360 度,

    图形颜色为 Scalar(x, y,z),线宽 (thickness)为 1,线型(lineType)为 8 (8 联通线型)。

    2. void circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

    img :表示输入的图像

    center: 圆心坐标

    radius: 圆的半径

    color:Scalar类型,表示圆的颜色,例如蓝色为Scalar(255,0,0)

    thickness:线的宽度

    lineType:线的类型,(默认为8联通型)

    #include

    #include

    using namespace cv;

    using namespace std;

    #define WINDOW_NAME1 "绘制图1"

    #define WINDOW_NAME2 "绘制图2"

    #define WINDOW_WIDTH 600 //定义窗口大小

    string image = "C:\\Users\\asus\\Pictures\\Saved Pictures\\123.jpg";

    void DrawEllipse(Mat img, double angle);

    void DrawFi1ledCirc1e(Mat img, Point center);

    int main()

    {

    Mat atomImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);

    Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);

    //绘制椭圆

    DrawEllipse(atomImage, 90);

    DrawEllipse(atomImage, 0);

    DrawEllipse(atomImage, 45);

    DrawEllipse(atomImage, -45);

    //绘制圆心

    DrawFi1ledCirc1e(atomImage, Point(WINDOW_WIDTH / 2,WINDOW_WIDTH / 2));

    imshow(WINDOW_NAME1, atomImage);

    waitKey(0);

    return 0;

    }

    void DrawEllipse(Mat img, double angle) {

    int thickness = 2;

    int lineType = 8;

    ellipse(img, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),

    Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16), angle, 0, 360, Scalar(255, 129, 0),

    thickness, lineType);

    }

    void DrawFi1ledCirc1e(Mat img, Point center) {

    int thickness = -1;

    int lineType = 8;

    circle(img, center, WINDOW_WIDTH / 32, Scalar(0, 0, 255), thickness, lineType);

    }

    2019122709474611.png?2019112794811

    总结

    以上所述是小编给大家介绍的opencv中画圆circle函数和椭圆ellipse函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

    展开全文
  • 1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1, int lineType...
  • 1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle,const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);...
  • 1. void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle,const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);...
  • Opencv的Ellipse函数

    万次阅读 2013-07-21 15:42:12
    Ellipse 绘制椭圆圆弧和椭圆扇形。 void cvEllipse( CvArr* img, CvPoint center, CvSize axes, double angle, double start_angle, double end_angle, CvScalar color, int thickness=1,
  • !... 代码是 CBrush *brush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));... memDC.Ellipse(ell.p1.x, ell.p1.y, ell.p2.x, ell.p2.y); 我也加过 pDC->SelectObject(brush); 没用
  • Ellipse()函数需要一个矩形的左上角坐标和右下角坐标,但我发现用左下角坐标和右上角坐标画出来也是一样的,是不是这样? 例如: Ellipse(hdc,-50,850,50,950); Ellipse(hdc,-50,950,50,850); 这两个画出来的...
  • 函数ellipse

    千次阅读 2018-04-17 17:21:00
    功能:画椭圆 函数原型: void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int ...
  • 目录1、line函数2、circle函数3、rectangle、Rect函数4、ellipse函数5、polylines函数6、随机初始化颜色7、putText函数总结 1、line函数 line(img,(0,0),(511,511),(255,0,0),5) 这个函数有5个参数,img是图像名称...
  • C语言编程之用ellipse画椭圆

    千次阅读 2019-03-08 08:39:15
    问题描述:请使用ellipse函数画椭圆。 程序源码: #include "stdio.h" #include "graphics.h" #include "conio.h" void main() { int x=360,y=160,driver=VGA,mode=VGAHI; int num...
  • 在OpenCV里用ellipse画椭圆形

    千次阅读 2019-12-27 10:22:23
    在OpenCV里绘制椭圆,需要使用到ellipse函数,这个函数在这里是比较复杂的参数,要一下子了解它是不容易的事情,先来看一下OpenCV里是怎么样定义它的,如下图: 从上面函数可以看到,在这里参数非常多,要理解每...
  • 前面学习过使用ellipse函数来绘制椭圆,如果你并不需要这么真实的椭圆曲线,那么就可以使用ellipse2Poly函数。因为这个函数可以从椭圆里根据需要的角度来生成近似的椭圆线段。这个函数的定义如下: 其中参数: ...
  • ellipse

    2020-07-06 13:30:29
    void ellipse( int left, int top, int right, int bottom ); 参数 left 椭圆外切矩形的左上角 x 坐标。 top 椭圆外切矩形的左上角 y 坐标。 right 椭圆外切矩形的右下角 x 坐标。 bottom 椭圆外切...
  • EllipseTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2012 Accepted Submission(s): 857Problem DescriptionMath is important!! Many students f...
  • Ellipse

    2019-10-01 03:55:54
    BOOL Ellipse( HDC hdc, int left, int top, int right, int bottom ); [功能] 绘制一个椭圆。 [参数] hdc-----设备上下文的句柄。 left----逻辑坐标中的边界矩形左上角的x坐标。 top-----逻辑坐标中的y坐标...
  • cv2.fitEllipse函数详解:ellipse参数并根据参数计算出椭圆焦点坐标 最近因为用到了这个函数,所以就趁着这个机会,好好顺顺,做下记录。 ellipse = cv2.fitEllipse(cnt) #(x, y), (a, b), angle = cv2.fitEllipse...
  • 然而,如果不先讨论一下Ellipse函数,那么Arc函数将难以理解;而如果不先讨论Rectangle函数,那么Ellipse函数又将难以理解;而如果讨论Ellipse和Rectangle函数,那么我又会讨论RoundRect、Chord和Pie函数。问题在于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,668
精华内容 6,267
关键字:

ellipse函数