若该文为原创文章,未经允许不得转载
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/101026612
各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究
红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门)
上一篇:《OpenCV开发笔记(六):OpenCV基础数据结构、颜色转换函数和颜色空间》
下一篇:《OpenCV开发笔记(八):OpenCV常用操作之计时、缩放、旋转、镜像》
OpenCV基础图形绘制,可用于做图形标记。
// 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
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
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
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
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);
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
上一篇:《OpenCV开发笔记(六):OpenCV基础数据结构、颜色转换函数和颜色空间》
下一篇:《OpenCV开发笔记(八):OpenCV常用操作之计时、缩放、旋转、镜像》
原博主博客地址:https://blog.csdn.net/qq21497936
原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/101026612