【OpenCV入门学习--python】图像的矩Image Moments
例子源于OpenCV官网–图像的矩
(https://docs.opencv.org/4.x/d0/d49/tutorial_moments.html)
使用OpenCV函数cv::moments:
计算多边形或栅格化形状的三阶以内的所有力矩。该函数计算矢量形状或栅格形状的三阶力矩。以字典(Dict)形式返回图像的矩。
使用OpenCV函数cv::contourArea:
该函数计算等高线面积。
使用OpenCV函数cv::arcLength:
该函数计算曲线长度或封闭轮廓周长。
代码:
from __future__ import print_function
from __future__ import division
import cv2 as cv
import numpy as np
import argparse
import random as rng
rng.seed(12345)
def thresh_callback(val):threshold = val#canny检测边缘轮廓canny_output = cv.Canny(src_gray, threshold, threshold * 2)#找轮廓contours, _ = cv.findContours(canny_output, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)# Get the momentsmu = [None]*len(contours)for i in range(len(contours)):mu[i] = cv.moments(contours[i])# Get the mass centers得到质心mc = [None]*len(contours)for i in range(len(contours)):# add 1e-5 to avoid division by zero加1e-5以避免被零除mc[i] = (mu[i]['m10'] / (mu[i]['m00'] + 1e-5), mu[i]['m01'] / (mu[i]['m00'] + 1e-5))# Draw contours画轮廓drawing = np.zeros((canny_output.shape[0], canny_output.shape[1], 3), dtype=np.uint8)for i in range(len(contours)):color = (rng.randint(0,256), rng.randint(0,256), rng.randint(0,256))cv.drawContours(drawing, contours, i, color, 2)cv.circle(drawing, (int(mc[i][0]), int(mc[i][1])), 4, color, -1)cv.imshow('Contours', drawing)# Calculate the area with the moments 00 and compare with the result of the OpenCV function#利用矩00计算面积,并与OpenCV函数的结果进行比较for i in range(len(contours)):print(' * Contour[%d] - Area (M_00) = %.2f - Area OpenCV: %.2f - Length: %.2f' % (i, mu[i]['m00'], cv.contourArea(contours[i]), cv.arcLength(contours[i], True)))
parser = argparse.ArgumentParser(description='Code for Image Moments tutorial.')
parser.add_argument('--input', help='Path to input image.', default='monster.jpg')
args = parser.parse_args()
src = cv.imread(cv.samples.findFile(args.input))
if src is None:print('Could not open or find the image:', args.input)exit(0)
# Convert image to gray and blur it 图像转换为灰度并模糊处理
src_gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
src_gray = cv.blur(src_gray, (3,3))
source_window = 'Source'
cv.namedWindow(source_window)
cv.imshow(source_window, src)
max_thresh = 255
thresh = 100 # initial threshold初始阈值
cv.createTrackbar('Canny Thresh:', source_window, thresh, max_thresh, thresh_callback)
thresh_callback(thresh)
cv.waitKey()
原图:
运行结果:
【OpenCV入门学习--python】图像的矩Image Moments相关推荐
- 【OpenCV入门学习--python】索贝尔算子Sobel operator提取边缘
例子源于OpenCV官网手册(https://docs.opencv.org/4.x/d2/d2c/tutorial_sobel_derivatives.html) 使用OpenCV函数Sobel() ...
- 【OpenCV入门学习--python】Image Segmentation with Distance Transform and Watershed Algorithm图像分割
例子源于OpenCV官网–基于距离变换和分水岭算法的图像分割 (https://docs.opencv.org/4.x/d2/dbd/tutorial_distance_transform.html) ...
- 【OpenCV入门学习--python】Anisotropic image segmentation by a gradient structure tensor
例子源于OpenCV官网–基于梯度结构张量的各向异性图像分割 (https://docs.opencv.org/4.x/d4/d70/tutorial_anisotropic_image_segmen ...
- 【计算机视觉】opencv入门学习笔记Part.1
[计算机视觉]opencv入门学习笔记Part.1 1 前言 1.1 opencv概述(摘取自百度百科) 1.2 图像概念引入 1.3 安装opencv库 2 图像基本操作 2.1 图像的读取 2.2 ...
- 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版
Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...
- 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)
小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...
- 零基础入门学习Python,我与python的第一次亲密接触后的感受!
前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...
- 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...
第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...
- 0基础学python难吗-零基础入门学习Python技术难不难?
原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...
最新文章
- 密码篇——非对称加密
- 在创建表时,对于auto_now=True与 auto_now_add=True 的区别
- 计算机系统 过程调用
- jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗
- OpenCV_ cv2.imshow()
- 从P1到P7——我在淘宝这7年(一)
- 新建模块 pom.xml依赖无法识别_使用模块依赖关系,第2部分
- 传智播客 GIL(全局解释器锁)学习
- 深度学习画图软件收集
- [Linux网络编程]高并发-Epoll模型
- 【非标自动化】2017年的最NB的非标自动化内容都在这了
- 单例模式详解(线程安全,饿汉,懒汉模式)
- 数据库中的主键与外键的关系
- linux系统编程界面,App主界面比较 - Android学习系列_Linux编程_Linux公社-Linux系统门户网站...
- Flutter —快速开发的IDE快捷方式
- 整理最全的图床集合——三千图床
- npm安装任何包都报错解决方法
- 知识蒸馏 | (1) 知识蒸馏概述
- 在非金融应用中在哪里使用区块链?
- 这群年轻人禁欲8年,成了日本最好的匠人! (程序员专注可以借鉴)
热门文章
- 密度计算机公式,密度计算公式及单位
- 东北大学计算机录取分数线2020,985双一流大学 东北大学2020年各省分专业最低录取分数线...
- 数据库规范化理论详解
- Android开发——如何解决三方库中的类名冲突问题
- I2C调试遇到的问题以及解决办法---“busy死锁状态”以及“从设备地址无应答”问题
- Nii图像的读取、操作与保存
- 如何成功实现“从经理到总监”的跨越?
- 五分钟you-get入门
- Android_使用Android killer破解apk
- 陕西省第九次大学生高等数学竞赛复赛试题