广州设计网站公司,网页设计与制作html,苏州苏网建设公司在建工程,360免费常用函数简介
OpenCV 中用于绘制不同图形的 C 函数的简要介绍#xff1a; 绘制矩形框#xff1a; cv::rectangle(image, cv::Point pt1, cv::Point pt2, cv::Scalar color, int thickness); image#xff1a;目标图像pt1 和 pt2#xff1a;矩形的对角线顶点坐标color…常用函数简介
OpenCV 中用于绘制不同图形的 C 函数的简要介绍 绘制矩形框 cv::rectangle(image, cv::Point pt1, cv::Point pt2, cv::Scalar color, int thickness); image目标图像pt1 和 pt2矩形的对角线顶点坐标color矩形的颜色thickness线条的粗细如果为负数表示填充矩形 绘制文字 cv::putText(image, text, cv::Point org, int fontFace, double fontScale, cv::Scalar color, int thickness); image目标图像text要绘制的文本org文本的起始坐标fontFace字体类型fontScale字体缩放因子color文本颜色thickness线条的粗细 绘制圆 cv::circle(image, cv::Point center, int radius, cv::Scalar color, int thickness); image目标图像center圆心坐标radius半径color圆的颜色thickness线条的粗细如果为负数表示填充圆 绘制椭圆 cv::ellipse(image, cv::Point center, cv::Size axes, double angle, double startAngle, double endAngle, cv::Scalar color, int thickness); image目标图像center椭圆中心坐标axes长轴和短轴的大小angle椭圆旋转角度startAngle 和 endAngle椭圆的起始和结束角度color椭圆的颜色thickness线条的粗细如果为负数表示填充椭圆 绘制线段: cv::line(image, cv::Point pt1, cv::Point pt2, cv::Scalar color, int thickness); image目标图像pt1 和 pt2线段的起点和终点坐标color线段的颜色thickness线条的粗细 绘制多边形 cv::polylines(image, std::vectorstd::vectorcv::Point contours, bool isClosed, cv::Scalar color, int thickness); image目标图像contours多边形的顶点坐标isClosed是否封闭多边形color多边形的颜色thickness线条的粗细 绘制填充多边形 cv::fillPoly(image, std::vectorstd::vectorcv::Point contours, cv::Scalar color); image目标图像contours多边形的顶点坐标color填充颜色 绘制箭头 cv::arrowedLine(image, cv::Point pt1, cv::Point pt2, cv::Scalar color, int thickness, int line_type, int tipLength); image目标图像pt1 和 pt2箭头的起点和终点坐标color箭头的颜色thickness线条的粗细line_type线条的类型tipLength箭头的尖端长度
测试例子
在C中使用OpenCV库可以轻松实现在图像上绘制矩形框、文字、圆、椭圆、线段、多边形等各种图形和操作。以下是一些示例代码来演示如何在图像上执行这些操作
#include opencv2/opencv.hpp
#include opencv2/highgui/highgui.hpp
#include opencv2/imgproc/imgproc.hppint main() {// 创建一个空白图像cv::Mat image cv::Mat::zeros(400, 400, CV_8UC3);// 在图像上绘制矩形框cv::rectangle(image, cv::Point(50, 50), cv::Point(150, 150), cv::Scalar(0, 0, 255), 2);// 在图像上绘制文字cv::putText(image, OpenCV, cv::Point(160, 180), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 2);// 在图像上绘制圆cv::circle(image, cv::Point(200, 200), 50, cv::Scalar(0, 255, 0), 2);// 在图像上绘制椭圆cv::ellipse(image, cv::Point(300, 300), cv::Size(60, 40), 45, 0, 360, cv::Scalar(255, 0, 0), 2);// 在图像上绘制线段cv::line(image, cv::Point(50, 200), cv::Point(150, 300), cv::Scalar(255, 0, 255), 2);// 在图像上绘制多边形五角星std::vectorcv::Point star_points;star_points.push_back(cv::Point(250, 50));star_points.push_back(cv::Point(265, 100));star_points.push_back(cv::Point(305, 100));star_points.push_back(cv::Point(280, 130));star_points.push_back(cv::Point(295, 175));star_points.push_back(cv::Point(250, 150));star_points.push_back(cv::Point(205, 175));star_points.push_back(cv::Point(220, 130));star_points.push_back(cv::Point(195, 100));star_points.push_back(cv::Point(235, 100));cv::polylines(image, star_points, true, cv::Scalar(255, 255, 0), 2);// 在图像上绘制贝叶斯曲线cv::Mat curve_image cv::Mat::zeros(400, 400, CV_8UC3);std::vectorcv::Point curve_points;for (int x 0; x curve_image.cols; x) {int y 200 - static_castint(50 * sin(x * 0.05));curve_points.push_back(cv::Point(x, y));}cv::polylines(curve_image, curve_points, false, cv::Scalar(0, 255, 255), 2);// 创建一个子图将子图绘制到图片上// 创建子图像ROIcv::Rect roi_rect(100, 100, 200, 150); // 在(100, 100)位置创建一个200x150的子图像cv::Mat roi image(roi_rect);// 在子图像上绘制一个矩形cv::rectangle(roi, cv::Point(20, 20), cv::Point(180, 130), cv::Scalar(0, 0, 255), 2);// 在子图像上绘制文字cv::putText(roi, Subimage, cv::Point(40, 40), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 2);// 显示图像cv::imshow(Shapes, image);cv::imshow(Sin Curve, curve_image);// 等待按键cv::waitKey(0);return 0;
}
上述示例代码创建了一个400x400的空白图像然后在图像上绘制矩形框、文字、圆、椭圆、线段和多边形五角星以及一个sin曲线 子图。您可以根据需要修改图形的位置、颜色、大小等参数。请确保您的C项目中已正确包含OpenCV库并已配置编译环境。