OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox

OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox转自:http://www.90in.net/space-4-do-blog-id-10218.htmlOpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox圓的製作,要給他目標圖片,圓心座標,半徑,其他參數等.cvCircle()函式的實作#include<cv.h>#include<highgui.h>IplImag…

大家好,又见面了,我是你们的朋友全栈君。

转自:http://www.90in.net/space-4-do-blog-id-10218.html

OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox
圓的製作,要給他目標圖片,圓心座標,半徑,其他參數等.

cvCircle()函式的實作
#include <cv.h>
#include <highgui.h>

IplImage *Image1;

CvPoint CircleCenter;
int Radius;
CvScalar Color;
int Thickness;
int Shift;

int main()
{

CvSize ImageSize1 = cvSize(1000,700);
Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,3);

CircleCenter=cvPoint(500,350);
Radius=300;
Color=CV_RGB(255,0,0);
Thickness=3;

cvCircle(Image1,CircleCenter,Radius,Color,Thickness,CV_AA,Shift);

cvNamedWindow(“Circle”,1);
cvShowImage(“Circle”,Image1);
cvWaitKey(0);
}

執行結果:

執行出來的結果會是一個座標(500,300),半徑300的紅色圓形.

cvCircle()
繪出圓形的函式,需要給它目標圖形IplImage資料結構,CvPoint圓心座標,半徑長度,CvScalar顏色,粗細,線條種類,縮放比例數據.
cvCircle(IplImage資料結構,CvPoint圓心座標,半徑數據,CvScalar顏色,粗細數據,線條種類,縮放比例數據)

橢圓形,用的是cvEllipse()的函式,這個繪圖也很特殊,可以用橢圓函式畫弧線,需要用到的是,目標圖形IplImage資料結構,橢圓圓心,橢圓長短軸,橢圓旋轉角度,繪製起點(角度),繪製終點(角度)及其他參數.

cvEllipse()函式的實作
#include <cv.h>
#include <highgui.h>

IplImage *Image1;
CvPoint CircleCenter;
CvSize EllipseAxes;
double RotateAngle;
double StartDrawingAngle;
double StopDrawingAngle;
CvScalar Color;
int Thickness;
int Shift;

int main()
{

CvSize ImageSize1 = cvSize(1000,700);
Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,3);

CircleCenter=cvPoint(500,400);
EllipseAxes=cvSize(300,200);
RotateAngle=0;
StartDrawingAngle=0;
StopDrawingAngle=360;
Color=CV_RGB(255,0,0);
Thickness=2;
Shift=0;

cvEllipse(Image1,CircleCenter,EllipseAxes,RotateAngle,
StartDrawingAngle,StopDrawingAngle,Color,Thickness,CV_AA,Shift);

cvNamedWindow(“Ellipse”,1);
cvShowImage(“Ellipse”,Image1);
cvWaitKey(0);
}

執行結果:
(1)RotateAngle=0,StartDrawingAngle=0,StopDrawingAngle=360

(2)修改為RotateAngle=70,StartDrawingAngle=100,StopDrawingAngle=360

上面的執行結果,第一張是標準的橢圓,給它圓心,長短軸半徑,旋轉角度,繪圖起點,繪圖終點,顏色,粗細,線條種類,縮放比例,而弧線的部份,修改了旋轉角度,繪圖起點跟繪圖終點,如果繪圖起點是0~360那就一定是橢圓了,只要他的角度不會繞一圈,愛畫怎樣的弧線都行.

cvEllipse()
可以繪橢圓跟弧線,需要用到目標圖形IplImage資料結構,CvSize長短軸半徑,旋轉角度數據,繪圖起點,繪圖終點的角度數據,CvScalar顏色,粗細數據,線條種類,縮放比例.
cvEllipse(IplImage資料結構,CvSize長短軸,旋轉角度數據,繪圖起點角度,繪圖終點角度,CvScalar顏色,粗細數據,線條種類,縮放比例數據)

下面的這個跟cvEllipse()很像,但是他是屬於OpenCV演算法專用的繪圖函數,可以藉由一個方框來繪製橢圓,利用ROI(Region Of Interest)的方式,OpenCV的應用上有cvCamShift,cvMinAreaRect,cvFitEllipse等.

cvEllipseBox()函式的實作
#include <cv.h>
#include <highgui.h>

IplImage *Image1;
CvBox2D Box1;
CvScalar Color;
int Thickness;
int Shift;

int main()
{

CvSize ImageSize1 = cvSize(1000,700);
Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,3);

Box1.center=cvPoint2D32f(500,400);
Box1.size=cvSize2D32f(300,200);
Box1.angle=70;
Color=CV_RGB(255,0,0);
Thickness=2;
Shift=0;

cvEllipseBox(Image1,Box1,Color,Thickness,CV_AA,Shift);

cvNamedWindow(“EllipseBox”,1);
cvShowImage(“EllipseBox”,Image1);
cvWaitKey(0);
}

執行結果:

這邊可輸入的參數少了,也只能單純的話橢圓,然後讓他旋轉,其他功能都與cvEllipse()類似,而圓心,長短軸長度,旋轉角度,都以CvBox資料結構來代替,OpenCV的演算法也拿CvBox的方框來實作出橢圓.

cvEllipseBox()
給定目標IplImage資料結構,在給它方框CvBox資料結構,藉由方框資料結構的參數繪出橢圓,在給定線條粗細,線條種類,縮放比例大小等數據
cvEllipseBox(IplImage資料結構,CvBox方框資料結構,CvScalar顏色,線條粗細數據,線條種類,縮放比例大小數據)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161544.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略「建议收藏」

    ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略「建议收藏」转载自:ching126,http://blog.csdn.net/chenhongwu666/article/details/41392529asp.netUpdatePanel实现异步局部刷新如有雷同,不胜荣欣,若转载,请注明鉴于最近项目需要,研究了一下UpdatePanel控件的使用方法,现总结如下,可能有很多地方不足,还望大家斧正哦,此文的目的也是为了

    2022年7月23日
    22
  • 免备案cdn的有没有,免备案cdn是适用于什么行业呢[通俗易懂]

    免备案cdn的有没有,免备案cdn是适用于什么行业呢[通俗易懂]蔚可云CDN可以进行网站加速,当然不仅仅是网站,APP也是可以进行加速,提高访问速度提升用户体验,CDN对于互联网公司是离不开的,在一定程度上可有效促进用户的转化,当然CDN还可以用于防御DDOS与CC攻击。那么问题来了,如果是没有备案的网站能不能进行CDN加速呢?大家都知道,随着互联网的发展,必须对其进行规范化,根据工信部的要求,如果你的域名没进行备案,还没取得ICP备案号,那你的网站在国内可能会被禁止用户无法打开的。当然也有例外,蔚可云就可提供免备案的CDN加速产品,支持3…

    2025年10月20日
    5
  • python实现交叉验证_kfold显示不可迭代

    python实现交叉验证_kfold显示不可迭代KFold模块fromsklearn.model_selectionimportKFold为什么要使用交叉验证?交叉验证的介绍交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在…

    2026年2月1日
    5
  • Kafka 删除topic_kafka自动创建topic

    Kafka 删除topic_kafka自动创建topic2019独角兽企业重金招聘Python工程师标准>>>…

    2022年10月16日
    7
  • 一文搞懂MySQL索引所有知识点(建议收藏)[通俗易懂]

    一文搞懂MySQL索引所有知识点(建议收藏)[通俗易懂]好家伙!老板看了直呼内行!

    2022年5月24日
    29
  • numpy创建数组

    numpy创建数组数组的操作list======特殊的数组数组和列表的区别:数组:存储的时同一种数据类型;list:容器,可以存储任意数据类型;一维数组和数组的计算:#一维数组和数组的计算a=[1,2,3,4]b=[2,3,4,5]#一维数组相加add=lambdax:x[0]+x[1]#[(1,2),(2,3),(3,4),(4,…

    2022年6月7日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号