日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://www.90in.net/space-4-do-blog-id-10218.html

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

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);
}

執(zhí)行結(jié)果:


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

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


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

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);
}

執(zhí)行結(jié)果:
(1)RotateAngle=0,StartDrawingAngle=0,StopDrawingAngle=360


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


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

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


下面的這個跟cvEllipse()很像,但是他是屬於OpenCV演算法專用的繪圖函數(shù),可以藉由一個方框來繪製橢圓,利用ROI(Region Of Interest)的方式,OpenCV的應(yīng)用上有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);
}

執(zhí)行結(jié)果:


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

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

總結(jié)

以上是生活随笔為你收集整理的OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。