注册 登录
编程论坛 Python论坛

python如何现读取应力云图

xiangyue0510 发布于 2021-04-21 14:25, 1727 次点击
RT,现在手边有个项目需要处理大批量的有限元软件的应力云图结果(别人的报告,而且只有报告,不提供模型给我们)。
人力处理不仅只能是读取一个整体的水平,而且效率低下,还容易出现错误。
所以我想,是不是可以利用python读取所有点的颜色方式来读取应力结果。
我查了一下利用numpy、cv2可以,但是找到的例子都是RGB,对于云图来说,还远远不足,自己水平也有限,无法修改代码。
哪位大神可以帮写一段代码,实现这个功能。下面是我找到的代码示例
只有本站会员才能查看附件,请 登录

程序代码:

# Imports
import cv2
import numpy as np
from matplotlib import pyplot as plt
import operator

# Read image
imagePath = "D://"
img = cv2.imread(imagePath+"test.png")
cv2.imshow('Imagem:',img)

color = ('b','g','r')
qtdBlue = 0
qtdGreen = 0
qtdRed = 0
totalPixels = 0

for channel,col in enumerate(color):
    histr = cv2.calcHist([img],[channel],None,[256],[1,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
    totalPixels+=sum(histr)
    # print(histr)
    if channel==0:
        qtdBlue = sum(histr)
    elif channel==1:
        qtdGreen = sum(histr)
    elif channel==2:
        qtdRed = sum(histr)

qtdBlue = (qtdBlue/totalPixels)*100
qtdGreen = (qtdGreen/totalPixels)*100
qtdRed = (qtdRed/totalPixels)*100

# qtdBlue = filter(operator.isNumberType, qtdBlue)
#
qtdGreen = filter(operator.isNumberType, qtdGreen)
#
qtdRed = filter(operator.isNumberType, qtdRed)

plt.title("Red: "+str(qtdRed)+"%; Green: "+str(qtdGreen)+"%; Blue: "+str(qtdBlue)+"%")
plt.show()

0 回复
1