Cv2中的cvtcolor - 没有该属性

2 投票
1 回答
27515 浏览
提问于 2025-04-18 08:15

我正在写一个程序,用USB显微镜收集一系列图像,然后生成一个平均图像,以此来减少噪声。我需要把图像转换成numpy数组,先把像素值加起来,然后再除以数量,最后再转换回图像。

在这个过程中,图像的颜色通道搞混了,所以我的输出是BGR格式,而不是RGB格式。我想用cvtcolor来修正这个问题,但遇到了一个错误:

---> 55 RgbImage = cv2.cvtcolor(ave_image,cv2.COLOR_BGR2RGB) 56 return RgbImage

AttributeError: 'module' object has no attribute 'cvtcolor'

我猜是因为没有从CV2导入cvtcolour,但我不知道为什么。以下是相关的代码部分。

最后,虽然平均值计算得很好,但有没有更优雅的方法来实现呢?我需要的是简单的平均值,而不是加权平均。

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

1 个回答

11

在cv2这个库里,函数cvtcolor被改名为cvtColor。所以你应该使用RgbImage = cv2.cvtColor(ave_image,cv2.COLOR_BGR2RGB)这行代码。

撰写回答