人力处理不仅只能是读取一个整体的水平,而且效率低下,还容易出现错误。
所以我想,是不是可以利用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()