Opencv C++ 繪製橢圓/圓形
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
//繪製橢圓;
void DrawEllipse(Mat img, double angle, int nThickness)
{
int nWidth = img.cols;
int nHeight = img.rows;
int lineType = 8;
if (nThickness != -1)
ellipse(img, Point(nWidth / 2, nHeight / 2), Size(nWidth / 4, nWidth / 16), angle, 0, 360, Scalar(255, 129, 0), nThickness, lineType);
else
ellipse(img, Point(nWidth / 8, nHeight / 8), Size(nWidth / 16, nWidth / 32), angle, 0, 360, Scalar(255, 129, 0), nThickness, lineType);
}
//繪製圓形
void DrawCircle(Mat img, int radius, int nThickness)
{
int nWidth = img.cols;
int nHeight = img.rows;
int lineType = 8;
circle(img, Point(nWidth / 2, nHeight / 2), radius, Scalar(255, 129, 0), nThickness, lineType);
}
int main()
{
//1.創建圖片
Mat imageDraw = Mat::zeros(600, 600, CV_8UC3);
//2.繪製橢圓形
for (int i = -90; i < 90; )
{
DrawEllipse(imageDraw, i, 2);
i += 30;
}
DrawEllipse(imageDraw, 90, -1);
DrawEllipse(imageDraw, 0, -1);
//3.繪製圓形
int nWidth = imageDraw.cols;
DrawCircle(imageDraw, nWidth/32, -1);
DrawCircle(imageDraw, nWidth /4 + 5, 1);
//4.顯示圖片
imshow("imageDraw", imageDraw);
waitKey(0);
destroyAllWindows();
}
繪製結果
繪製橢圓
void cv::ellipse (
InputOutputArray img, //所繪製的圖片
Point center, //橢圓中心點
Size axes, //橢圓長短軸
double angle, //旋轉角度(角度)
double startAngle, //開始繪製角度
double endAngle, //結束繪製角度
const Scalar & color, //繪製所使用顏色
int thickness = 1, //線寬 -1 全填充
int lineType = LINE_8, // 線類型 8領域繪製
int shift = 0 //小數位數
)
//繪製圓形
void cv::circle (
InputOutputArray img, //所繪製的圖片
Point center, //圓形中心點
int radius, //圓形半徑
const Scalar & color, //圓形顏色
int thickness = 1, //線寬 -1 全填充
int lineType = LINE_8, //線類型 8領域繪製
int shift = 0 //小數位數
)