Qt-OpenCV学习笔记--计算面积--contourArea()

概述

这个函数用来计算轮廓面积。

函数

double cv::contourArea
(
	InputArray 	contour,
    bool 	oriented = false 
)	
contour 轮廓(由点的集合构成轮廓)
oriented

定向区域标志

 ● 如果为真,函数将根据轮廓方向(顺时针或逆时针)返回带符号的面积值。

 ● 使用此功能,可以通过获取区域的符号来确定轮廓的方向。

 ● 默认情况下,参数为false,这意味着返回绝对值。

测试代码

#include "widget.h"
#include "ui_widget.h"

#include 
#include 
#include 

#include 
#include 
#include 

using namespace cv;
using namespace std;

string douToStr(double d)
{
    ostringstream os;
    if(os<setupUi(this);

    //生成画板
    Mat mat(500,500,CV_8UC3,Scalar(240,150,100));
    //构造点
    Point2f a(100,100);
    Point2f b(400,100);
    Point2f c(400,400);
    Point2f d(100,400);
    //绘制点
    circle(mat,a,5,Scalar(255,255,255),2,8);
    circle(mat,b,5,Scalar(255,255,255),2,8);
    circle(mat,c,5,Scalar(255,255,255),2,8);
    circle(mat,d,5,Scalar(255,255,255),2,8);

    //生成轮廓
    vector contour;
    contour.push_back(a);
    contour.push_back(b);
    contour.push_back(c);
    contour.push_back(d);

    //计算面积(所有的一切都是为了它!)
    double area = contourArea(contour);

    //文本参数
    string str = douToStr(area);//文本内容
    int fontFace = FONT_HERSHEY_COMPLEX_SMALL;//定义字体
    double fontScale = 2;//定义大小
    int thickness = 2;//定义线宽
    int baseline = 0;
    //获取文本大小
    Size size = getTextSize(str,fontFace,fontScale,thickness,&baseline);
    //计算文本位置
    Point origin;
    origin.x = mat.size().width/2 - size.width/2;
    origin.y = mat.size().height/2 + size.height/2;
    //其它参数
    Scalar color = Scalar(0,255,0);//定义颜色
    int lineType = 8;//定义线段类型
    bool bottomLoftOrigin = false;//定义左远点
    //绘制文本
    putText(mat,str,origin,fontFace,fontScale,color,thickness,lineType,bottomLoftOrigin);

    //打印
    qDebug()<<"面积:"<

测试结果

Qt-OpenCV学习笔记--计算面积--contourArea()_第1张图片

你可能感兴趣的:(opencv,学习,计算机视觉,qt)