若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/101026612
目录
OpenCV开发专栏
《OpenCV开发笔记(〇):使用mingw530_32编译openCV3.4.1源码,搭建Qt5.9.3的openCV开发环境》
《OpenCV开发笔记(六):基础数据结构、颜色转换函数和颜色空间》
持续补充中…
OpenCV开发笔记(七):基础图形绘制
前言
OpenCV基础图形绘制,可用于做图形标记。
Demo
基础绘制
绘制直线:line
// line
cv::line(mat, cv::Point(30, 30) , cv::Point(370, 30) , cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(370, 30), cv::Point(370, 370), cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(370, 370), cv::Point(30, 370), cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(30, 370), cv::Point(30 , 30), cv::Scalar(255, 255, 255), 1);
绘制椭圆:ellipse
// ellipse
cv::ellipse(mat, cv::Point(50+1, 50+1) , cv::Size(10, 20), 45.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), 1);
cv::ellipse(mat, cv::Point(50+1, 350-1), cv::Size(10, 20), 135.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), -1);
cv::ellipse(mat, cv::Point(350-1, 50+1), cv::Size(20, 10), 45.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), 1);
cv::ellipse(mat, cv::Point(350-1, 350-1), cv::Size(20, 10), 135.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), -1);
绘制矩形:rectangle
// rectangle
cv::rectangle(mat, cv::Rect(100 , 100 , 20, 20), cv::Scalar(0, 255, 0));
cv::rectangle(mat, cv::Rect(100 , 300-20, 20, 20), cv::Scalar(0, 255, 0));
cv::rectangle(mat, cv::Rect(300-20, 100 , 20, 20), cv::Scalar(0, 255, 0), -1);
cv::rectangle(mat, cv::Rect(300-20, 300-20, 20, 20), cv::Scalar(0, 255, 0), -1);
绘制圆形:circle
// circle
cv::circle(mat, cv::Point(200, 200), 10, cv::Scalar(200, 200, 200), -1);
cv::circle(mat, cv::Point(200, 200), 20, cv::Scalar(200, 200, 200), 1);
cv::circle(mat, cv::Point(200, 200), 30, cv::Scalar(200, 200, 200), 2);
cv::circle(mat, cv::Point(200, 200), 40, cv::Scalar(200, 200, 200), 3);
cv::circle(mat, cv::Point(200, 200), 50, cv::Scalar(200, 200, 200), 4);
绘制多边形填充:fillPoly
// fillPoly
cv::Point rootPoints[1][4];
rootPoints[0][0] = cv::Point(200, 150);
rootPoints[0][1] = cv::Point(250, 200);
rootPoints[0][2] = cv::Point(200, 250);
rootPoints[0][3] = cv::Point(150, 200);
Demo源码
void OpenCVManager::testBaseDraw()
{
cv::Mat mat(400, 400, CV_8UC3, cv::Scalar());
while(true)
{
mat = cv::Scalar();
cv::imshow("1", mat);
cv::waitKey(0);
cv::putText(mat, "Hello world!!!", cv::Point(0, 200), cv::FONT_HERSHEY_COMPLEX,
1, cv::Scalar(0, 0, 255));
cv::imshow("1", mat);
cv::waitKey(0);
// line
cv::line(mat, cv::Point(30, 30) , cv::Point(370, 30) , cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(370, 30), cv::Point(370, 370), cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(370, 370), cv::Point(30, 370), cv::Scalar(255, 255, 255), 1);
cv::line(mat, cv::Point(30, 370), cv::Point(30 , 30), cv::Scalar(255, 255, 255), 1);
cv::imshow("1", mat);
cv::waitKey(0);
// ellipse
cv::ellipse(mat, cv::Point(50+1, 50+1) , cv::Size(10, 20), 45.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), 1);
cv::ellipse(mat, cv::Point(50+1, 350-1), cv::Size(10, 20), 135.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), -1);
cv::ellipse(mat, cv::Point(350-1, 50+1), cv::Size(20, 10), 45.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), 1);
cv::ellipse(mat, cv::Point(350-1, 350-1), cv::Size(20, 10), 135.0, 0.0, 360.0,
cv::Scalar(0, 0, 255), -1);
cv::imshow("1", mat);
cv::waitKey(0);
// rectangle
cv::rectangle(mat, cv::Rect(100 , 100 , 20, 20), cv::Scalar(0, 255, 0));
cv::rectangle(mat, cv::Rect(100 , 300-20, 20, 20), cv::Scalar(0, 255, 0));
cv::rectangle(mat, cv::Rect(300-20, 100 , 20, 20), cv::Scalar(0, 255, 0), -1);
cv::rectangle(mat, cv::Rect(300-20, 300-20, 20, 20), cv::Scalar(0, 255, 0), -1);
cv::imshow("1", mat);
cv::waitKey(0);
// circle
cv::circle(mat, cv::Point(200, 200), 10, cv::Scalar(200, 200, 200), -1);
cv::circle(mat, cv::Point(200, 200), 20, cv::Scalar(200, 200, 200), 1);
cv::circle(mat, cv::Point(200, 200), 30, cv::Scalar(200, 200, 200), 2);
cv::circle(mat, cv::Point(200, 200), 40, cv::Scalar(200, 200, 200), 3);
cv::circle(mat, cv::Point(200, 200), 50, cv::Scalar(200, 200, 200), 4);
cv::imshow("1", mat);
cv::waitKey(0);
// fillPoly
cv::Point rootPoints[1][4];
rootPoints[0][0] = cv::Point(200, 150);
rootPoints[0][1] = cv::Point(250, 200);
rootPoints[0][2] = cv::Point(200, 250);
rootPoints[0][3] = cv::Point(150, 200);
const cv::Point * ppt[1] = { rootPoints[0] };
const int npt[] = {4};
cv::fillPoly(mat, ppt, npt, 1, cv::Scalar(0, 255, 255));
cv::imshow("1", mat);
cv::waitKey(0);
}
}
工程模板:对应版本号v1.4.0
对应版本号v1.4.0
原博主博客地址:https://blog.csdn.net/qq21497936
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/101026612
转载:https://blog.csdn.net/qq21497936/article/details/101026612
查看评论