1、circle()函数模板:circle(cv::InputOutputArray img,cv::Point center,int radius,const cv::Scalar&color,int thickness=1,int lineType =8,int shift =0)
函数作用:在图像上绘制圆
img:画圆的图像
center:圆的圆心
radius:圆的半径
color:圆的颜色
thickness:如果为整数,表示圆轮廓的厚度;如果为负数,表示要绘制一个填充的圆
lineType:圆形边界的类型
shift:位移中心坐标和半径值的小数位数
2、putText()函数模板:putText(cv::InputOutputArray img,const cv::String &text,cv::Point org,int fontFace,double fontScalar ,cv::Sacalr color,int thickness=1,int lineType=8,bool bottomLeftOrigin = false)
函数作用:在图像上写入文本文档
img:写文本的图像
text:要绘制的文本字符串
org:文本位置
fontFace:字体类型
fontScalar:字体大小
color:文本颜色
thickness:绘制文本线条的厚度
lineType:线类型
bottomLeftOrigin :当为true时,图像数据源位于左下角,为false时位于右上角
下面为测试案例(分文件编写的)
a、头文件
#pragma once
#include<opencv2/opencv.hpp>
class example_demonstration
{
public:
void click_on_the_image(cv::Mat& image); //click on the image
};
b、实现头文件中函数
#include"1-image_show_save.h"
void example_demonstration::click_on_the_image(cv::Mat& image)
{
cv::namedWindow("输出窗口",cv::WINDOW_AUTOSIZE);
cv::circle(image, cv::Point(417, 143), 95, 0, 3); //绘制圆
//图片 圆心 半径 颜色 轮廓厚度
cv::putText(image, "This is a dog", cv::Point(300, 261), cv::FONT_HERSHEY_PLAIN, 2.0, 255, 3);
//图片 文本内容 文本起始位置 字体类型 字体大小 字体颜色 文本厚度
cv::imshow("输出窗口", image);
}
c、实现案例
#include"1-image_show_save.h"
int main()
{
cv::Mat src = cv::imread("柯基.jpeg",cv::IMREAD_GRAYSCALE); //当加上参数IMREAD_GRAYSCALE图像会被加载为灰度图像
example_demonstration ed;
ed.click_on_the_image(src); //调用案例
cv::waitKey();
cv::destroyAllWindows();
return 0;
}
d、结果展示(圈出了柯基的头部,并进行文本说明,通过使用cirle()函数和putText()函数实现)