在本文中,任务是在C++中使用OpenCV绘制椭圆。将使用OpenCV C++库中的ellipse()函数。
句法:
ellipse(image, centerCoordinates, axesLength, angle, startAngle, endAngle, color, thickness, lineType, shift)
参数:
- 图像:是要在其上绘制椭圆的图像。
- centerCoordinates:椭圆中心的坐标。 (两个坐标的元组(X坐标,Y坐标))
- axesLength:包含椭圆的长轴和短轴的元组(长轴长度,短轴长度)。
- angle:椭圆旋转角度,以度为单位。
- startAngle:椭圆弧的起始角度(度)。
- endAngle:椭圆弧的终止角度(度)。
- color:它是要绘制的椭圆的边界线的颜色。表示3种颜色(B,G,R)(即(蓝色,绿色,红色))的元组。
- 厚度:它是椭圆边界线的粗细(以px为单位) 。 -1 px的厚度将通过指定的颜色填充椭圆形状。
- lineType:线的类型。有3种类型的线:
- LINE_4:使用4个连接的Bresenham算法绘制了线。
- LINE_8:使用8个连接的Bresenham算法绘制了线。
- LINE_AA:绘制使用高斯滤波器形成的抗锯齿线。
- shift:点坐标中的小数位数。
返回值:返回图像。
程序1:
下面是C++程序,演示了如何在自形成的背景图像上绘制椭圆:
C++
// C++ program to demonstrating ellipse
// over a self-formed background image
#include
#include
// Drawing shapes
#include
#include
using namespace cv;
using namespace std;
// Driver Code
int main(int argc, char** argv)
{
// Creating a blank image with
// white background
Mat image(500, 500, CV_8UC3,
Scalar(255, 255, 255));
// Check if the image is created
// successfully or not
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n";
return 0;
}
// Drawing the ellipse
ellipse(image, Point(256, 256),
Size(100, 50), 0, 0,
360, Scalar(0, 255, 255),
-1, LINE_AA);
// Showing image inside a window
imshow("Output", image);
waitKey(0);
return 0;
}
C++
// C++ program to demonstrate rectangle
// over a loaded image with an ellipse
// around the GFG logo
#include
#include
// Drawing shapes
#include
#include
using namespace cv;
using namespace std;
// Driver Code
int main(int argc, char** argv)
{
// Reading the Image
Mat image = imread("C:/Users/harsh/Downloads/geeks.png",
IMREAD_COLOR);
// Check if the image is created
// successfully or not
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n";
return 0;
}
// Drawing the ellipse
ellipse(image, Point(115, 110),
Size(105, 55), 0, 0,
360, Scalar(0, 255, 255),
1, LINE_AA);
// Show our image inside a window
imshow("Output", image);
waitKey(0);
return 0;
}
输出:
说明:在上面的程序中,以0度的角度绘制椭圆,即水平椭圆。
程式2:
下面是C++程序,它说明了已加载图像上的矩形,并在GFG徽标周围带有一个椭圆:
C++
// C++ program to demonstrate rectangle
// over a loaded image with an ellipse
// around the GFG logo
#include
#include
// Drawing shapes
#include
#include
using namespace cv;
using namespace std;
// Driver Code
int main(int argc, char** argv)
{
// Reading the Image
Mat image = imread("C:/Users/harsh/Downloads/geeks.png",
IMREAD_COLOR);
// Check if the image is created
// successfully or not
if (!image.data) {
std::cout << "Could not open or "
<< "find the image\n";
return 0;
}
// Drawing the ellipse
ellipse(image, Point(115, 110),
Size(105, 55), 0, 0,
360, Scalar(0, 255, 255),
1, LINE_AA);
// Show our image inside a window
imshow("Output", image);
waitKey(0);
return 0;
}
输出:
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。