python - 如何计算图像属性,例如面积、周长、实心度
问题描述
我有以下图片
我想在 python 中使用 Opencv() 计算图像中 Maroon Color 的属性,例如 area、mean_intensity'、'maroon color 的强度。
解决方案
以下是如何在 Python/OpenCV/Skimage 中执行此操作。阈值化后,只有一个区域的值为 1,背景为 0。
输入:
import cv2
import numpy as np
from skimage import measure
# load image
img = cv2.imread("2blobs.jpg")
# threshold on color
binary = cv2.inRange(img, (0,0,50), (50,50,255))
# get region properties
region = measure.regionprops(binary)
# get number of regions
num = len(region)
print('number of regions:',num)
print('')
# print all properties
for prop in region[0]:
print(prop, region[0][prop])
# display threshold
cv2.imshow("thresh", binary)
cv2.waitKey(0)
文本输出:
number of regions: 1
area 5484
bbox (32, 47, 156, 250)
bbox_area 25172
centroid (95.14277899343544, 150.97264770240702)
convex_area 21020
convex_image [[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]]
coords [[ 32 81]
[ 32 82]
[ 32 83]
...
[154 205]
[154 207]
[155 191]]
eccentricity 0.9062580193617534
equivalent_diameter 83.56102957316665
euler_number -24
extent 0.21786111552518672
filled_area 5650
filled_image [[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]]
image [[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]]
inertia_tensor [[5257.30195061 -310.920572 ]
[-310.920572 965.87512838]]
inertia_tensor_eigvals [5279.711609050717, 943.4654699433576]
label 255
local_centroid (63.14277899343545, 103.972647702407)
major_axis_length 290.6464961853342
minor_axis_length 122.86353209595482
moments [[5.48400000e+03 5.70186000e+05 8.81147920e+07 1.50278944e+10]
[3.46275000e+05 3.77082170e+07 5.75855208e+09 9.65562546e+11]
[2.71616250e+07 3.03617436e+09 4.54017781e+11 7.43711931e+13]
[2.35839324e+09 2.68925634e+11 3.95385779e+13 6.34332897e+15]]
moments_central [[ 5.48400000e+03 -1.16529009e-11 2.88310439e+07 -1.28913740e+08]
[ 5.48254775e-11 1.70508842e+06 -1.59825871e+08 1.12144760e+10]
[ 5.29685920e+06 -3.21975429e+06 2.15192576e+10 -2.10407654e+11]
[-2.55840616e+07 3.93254074e+09 -3.11193913e+11 1.94422438e+13]]
moments_hu [ 1.13478794e+00 6.25220141e-01 4.44028567e-02 1.04506936e-02
6.70377030e-06 -1.54890578e-03 2.25024857e-04]
moments_normalized [[ nan nan 0.95866192 -0.05788361]
[ nan 0.05669595 -0.07176348 0.06799651]
[ 0.17612603 -0.0014457 0.1304773 -0.01722743]
[-0.01148751 0.0238441 -0.02547945 0.02149595]]
orientation 1.498845558177429
perimeter 2039.2926394116744
slice (slice(32, 156, None), slice(47, 250, None))
solidity 0.2608943862987631
推荐阅读
- c++ - 如何将对象函数作为模板参数传递
- asp.net-core - Attempting to add a role queries 'AspNetRoles' instead of 'AspNetUserRoles'
- java - 重用 choco 求解器模型以进一步约束解决方案
- reactjs - React Checkbox 组件需要单击两次才能更改为选中
- python - Keras:如何减去两个不同模型的输出并馈送到另一个模型?
- qt - QML:更改文本字段中的光标颜色
- php - Laravel - 显示用户所在公司的所有项目
- python - 我想换一会儿
- firebase - 在身份验证后保护移动应用程序的 API
- c++ - 重新排序内存操作的简单示例