我正在编写一个程序,从USB显微镜收集一系列图像,并生成一个平均值作为去噪方法。我要把图像转换成一个numpy数组,求出像素的和,然后在转换成图像之前进行除法。
在线路的某个地方,通道混合,所以我的输出是BGR而不是RGB,我试图使用cvtcolor来纠正这个问题,但得到了错误:
---> 55 RgbImage = cv2.cvtcolor(ave_image,cv2.COLOR_BGR2RGB) 56 return RgbImage
AttributeError: 'module' object has no attribute 'cvtcolor'
可能cvtcolour不是从CV2进口的,但我不明白为什么。这是相关的代码部分。
最后,虽然平均值工作得很好,但有没有更优雅的方法呢?我需要一个简单的平均数而不是加权平均数。
import os, numpy, PIL
from PIL import Image
import cv2
import time
frameaverage=5
def average_image():
arr=numpy.zeros((h,w,3),numpy.float)
# Build up average pixel intensities as floating
for im in xrange(frameaverage):
camera_capture = get_image()
imarr=numpy.array(camera_capture,dtype=numpy.float)
arr=arr+imarr/frameaverage
# Round values convert to 8-bit integer
arr=numpy.array(numpy.round(arr),dtype=numpy.uint8)
ave_image=Image.fromarray(arr,mode="RGB")
RgbImage = cv2.cvtcolor(ave_image,cv2.COLOR_BGR2RGB)
return RgbImage
在cv2函数中,cvtcolor重命名为
cvtColor
。所以你应该使用RgbImage = cv2.cvtColor(ave_image,cv2.COLOR_BGR2RGB)
相关问题 更多 >
编程相关推荐