opencv计算图像几何矩, 中心矩, 归一化几何矩

#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>

using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("nazha1.jpg");
    if (img.empty())
    {
        cout << "输入为空";
        return -1;
    }
    //二值化
    Mat gray, binary;
    cvtColor(img, gray, COLOR_BGR2GRAY);
    threshold(gray, binary, 105, 255, THRESH_BINARY);
    //开运算消除细小区域
    Mat k = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
    morphologyEx(binary, binary, MORPH_OPEN, k);
    //轮廓发现
    vector<vector<Point>> contours;
    vector<Vec4i> hierachy;
    findContours(binary, contours, hierachy, 0, 2, Point());

    //计算几何矩 中心矩 归一化几何矩
    for (int n = 0; n < contours.size(); n++)
    {
        Moments M;
        M = moments(contours[n], true);
        cout << "几何矩: " << endl
            << "m00: " << M.m00 << " m01: " << M.m01 << " m10:" << M.m10
            << " m11: " << M.m11 << " m02: " << M.m02 << " m20: " << M.m20 << endl;
        cout << "中心矩: " << endl
            << "mu20: " << M.mu20 << " m02: " << M.mu02 << " m20:" << M.mu20
            << " mu11: " << M.mu11 << " m02: " << M.mu02 << " m20: " << M.mu20 << endl; 
        cout << "归一化几何矩: " << endl
            << "nu20: " << M.nu20 << " nu21: " << M.nu21 << " nu02:" << M.nu20
            << " nu11: " << M.nu11 << " nu02: " << M.nu02 << " nu20: " << M.nu20 << endl; 
    }
}


输出结果:
几何矩: 
m00: 6 m01: 2814 m10:1407 m11: 659883 m02: 1.31977e+06 m20: 329946
中心矩: 
mu20: 4.5 m02: 2 m20:4.5 mu11: 0 m02: 2 m20: 4.5
归一化几何矩: 
nu20: 0.125 nu21: 0 nu02:0.125 nu11: 0 nu02: 0.0555556 nu20: 0.125
几何矩: 
m00: 6 m01: 2814 m10:1095 m11: 513555 m02: 1.31977e+06 m20: 199842
中心矩: 
mu20: 4.5 m02: 2 m20:4.5 mu11: 0 m02: 2 m20: 4.5
归一化几何矩: 
nu20: 0.125 nu21: 0 nu02:0.125 nu11: 0 nu02: 0.0555556 nu20: 0.125
几何矩: 
m00: 6 m01: 2808 m10:1665 m11: 779220 m02: 1.31415e+06 m20: 462042
中心矩: 
mu20: 4.5 m02: 2 m20:4.5 mu11: 0 m02: 2 m20: 4.5
归一化几何矩: 
nu20: 0.125 nu21: 0 nu02:0.125 nu11: 0 nu02: 0.0555556 nu20: 0.125
几何矩: 
m00: 11 m01: 5152.33 m10:2167 m11: 1.01501e+06 m02: 2.41333e+06 m20: 426912
中心矩: 
mu20: 13.1667 m02: 7.4596 m20:13.1667 mu11: 0 m02: 7.4596 m20: 13.1667
归一化几何矩: 
nu20: 0.108815 nu21: -0.00453563 nu02:0.108815 nu11: 0 nu02: 0.0616496 nu20: 0.108815
几何矩: 
m00: 11 m01: 5135 m10:2993.5 m11: 1.39743e+06 m02: 2.39712e+06 m20: 814652
中心矩: 
mu20: 12.1288 m02: 13.1364 m20:12.1288 mu11: 7.02273 m02: 13.1364 m20: 12.1288
归一化几何矩: 
nu20: 0.100238 nu21: -0.00146901 nu02:0.100238 nu11: 0.0580391 nu02: 0.108565 nu20: 0.100238
几何矩: 
m00: 6 m01: 2766 m10:1575 m11: 726075 m02: 1.27513e+06 m20: 413442
中心矩: 
mu20: 4.5 m02: 2 m20:4.5 mu11: 0 m02: 2 m20: 4.5
归一化几何矩: 
nu20: 0.125 nu21: 0 nu02:0.125 nu11: 0 nu02: 0.0555556 nu20: 0.125
几何矩: 
m00: 6 m01: 2766 m10:1281 m11: 590541 m02: 1.27513e+06 m20: 273498
中心矩: 
mu20: 4.5 m02: 2 m20:4.5 mu11: 0 m02: 2 m20: 4.5
归一化几何矩: 
nu20: 0.125 nu21: 0 nu02:0.125 nu11: 0 nu02: 0.0555556 nu20: 0.125
几何矩: 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值