Python Opencv实践 - 图像的距(Moments,Hu Moments)

参考资料:​​​​​​矩特征---OpenCV-Python开发指南(25)_cv2.moments_李元静的博客-CSDN博客

探究opencv中的moments函数和HuMoments函数_opencv moment_傲笑风的博客-CSDN博客

复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt


img = cv.imread("../SampleImages/stars.png", cv.IMREAD_GRAYSCALE)
plt.imshow(img, cmap=plt.cm.gray)

#直接计算灰度图的距
#cv.moments(array, binaryImage=False)
#array:输入的数组,可以是灰度图像或二维数组,比如轮廓提取结果
#binaryImage:默认False,若为True,则所有非零的像素会按值1对待,
#            也就是相当于对图像进行了二值化,阈值为1,次参数仅对图像生效
#参考资料:https://blog.csdn.net/liyuanjinglyj/article/details/113916287
img_gray_moments = cv.moments(img)
print("Image Moments:\n", img_gray_moments)
#计算灰度图的Hu距
#cv.HuMoments(moments)
#参考资料:https://blog.csdn.net/Caesar6666/article/details/103257632
img_gray_huMoments = cv.HuMoments(img_gray_moments)
print("Image HuMoments:\n", img_gray_huMoments)

#转换为二值图
ret,img_bin = cv.threshold(img, 127, 255, cv.THRESH_BINARY)
#提取轮廓
contours,hierarchy = cv.findContours(img_bin, 1, 2)
#计算轮廓的Hu距
for i in range(len(contours)):
    contour_moments = cv.moments(contours[i])
    contour_huMoments = cv.HuMoments(contour_moments)
    print("Contour HuMoments", str(i), ":\n", contour_huMoments)

相关推荐
Elnaij8 分钟前
从C++开始的编程生活(24)——C++11标准Ⅰ
开发语言·c++
程序员三藏8 分钟前
接口自动化测试思路和实战:编写线性测试脚本实战
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
丁当粑粑8 分钟前
Pydantic的主要用法
python
哈伦201910 分钟前
第二章 Python语法基础
python·语法·anaconda3
mjhcsp10 分钟前
AT_arc205_c [ARC205C] No Collision Moves 题解
开发语言·c++·算法·题解
Clavis11 分钟前
我给 Mac 的 Photo Booth 写了自动化脚本。为什么隐私比你想的重要得多
人工智能·python
MLGDOU19 分钟前
【Qt开发】信号与槽
开发语言·数据库·qt
龙文浩_19 分钟前
AI机器学习中NumPy随机种子的应用
人工智能·python·深度学习·神经网络·机器学习
大江东去浪淘尽千古风流人物25 分钟前
【Basalt】 VIO(sqrt_keypoint_vio)主流程measure函数梳理
数据库·人工智能·python·机器学习·oracle
风萧萧199926 分钟前
Milvus Java 快速入门
java·开发语言·milvus