Python 改进这些opencv嵌套循环

Python 改进这些opencv嵌套循环,python,numpy,opencv,Python,Numpy,Opencv,我想检查11个img中的每个pixcel,去掉极值,然后用中心值计算平均值 导入cv2 将numpy作为np导入 img1=cv2.imread(“J:/1.jpg”,cv2.imread\u颜色) img2=cv2.imread(“J:/2.jpg”,cv2.imread\u颜色) img3=cv2.imread(“J:/3.jpg”,cv2.imread\u颜色) img4=cv2.imread(“J:/4.jpg”,cv2.imread\u COLOR) img5=cv2.imread(“

我想检查11个img中的每个pixcel,去掉极值,然后用中心值计算平均值

导入cv2
将numpy作为np导入
img1=cv2.imread(“J:/1.jpg”,cv2.imread\u颜色)
img2=cv2.imread(“J:/2.jpg”,cv2.imread\u颜色)
img3=cv2.imread(“J:/3.jpg”,cv2.imread\u颜色)
img4=cv2.imread(“J:/4.jpg”,cv2.imread\u COLOR)
img5=cv2.imread(“J:/5.jpg”,cv2.imread\u COLOR)
img6=cv2.imread(“J:/6.jpg”,cv2.imread\u COLOR)
img7=cv2.imread(“J:/7.jpg”,cv2.imread\u COLOR)
img8=cv2.imread(“J:/8.jpg”,cv2.imread\u COLOR)
img9=cv2.imread(“J:/9.jpg”,cv2.imread\u COLOR)
img10=cv2.imread(“J:/10.jpg”,cv2.imread\u颜色)
img11=cv2.imread(“J:/11.jpg”,cv2.imread\u颜色)
imgList=[img1、img2、img3、img4、img5、img6、img7、img8、img9、img10、img11]
高度=img1。形状[0]
宽度=img1.形状[1]
imgall=np.array(imgList)
png=np.zero((高度、宽度,4),dtype=np.uint8)
start1=cv2.getTickCount()
对于范围内的yh(高度):
对于范围内的xw(宽度):
pstd=np.std(imgall[:,yh,xw,:],轴=0)
pstdmean=np.平均值(pstd)
如果pstdmean<50:
如果pstdmean<10:
png[yh,xw]=列表(np.平均值(imgall[:,yh,xw,:],轴=0))+[255]
其他:
pmedian=np.中值(imgall[:,yh,xw,:],轴=0)
png[yh,xw]=列表(pmedian)+[255]
end1=cv2.getTickCount()
during1=(end1-start1)/cv2.getTickFrequency()
打印(期间1)
我试图找到如何获得“聚集数”/“模式数”,如:直方图、欧几里德距离、bgr2grey、正态分布


我想取代这个糟糕的中值法。

没有人回答我。但幸运的是,我自己找到了答案。 必须进行numpy计算,并且不应使用for嵌套循环。 我将bgr拆分为b[]g[]r[],这样他们就可以一个一个地计算,并且易于理解。 然后我把这11个img叠加到每个通道上(axis=-1),很容易理解和计算,最后我把bGr叠加到一个img上,使用mask=cv2。inRange(xxx,a,b)帮助我得到我想要的。png的alpha通道也是使用mask。 png=np.stack((b,g,r,mask),轴=-1)