【问题标题】:An alternative to read image from scipy to cv2从 scipy 读取图像到 cv2 的替代方法
【发布时间】:2025-12-22 01:00:17
【问题描述】:

下面的python脚本我想用opencv python转换,如何转换?

脚本:scipy.misc.imread(path, mode='RGB').astype(np.float)

我想用 cv2 转换它,用这个替代 astype(np.float) 有什么用?

import cv2
import scipy.misc

img = scipy.misc.imread(path, mode='RGB').astype(np.float)

【问题讨论】:

    标签: python numpy opencv


    【解决方案1】:

    您可以使用cv2.imread,将颜色格式从BGR转换为RGB,再转换为float

    path = 'chelsea.png'
    
    ref_img = scipy.misc.imread(path, mode='RGB').astype(np.float)
    
    img = cv2.imread(path)  # Read input imgae
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # Convert color format form BGR to RGB (OpenCV default is BGR).
    img = img.astype(np.float)  # Convert ot float
    
    print(np.all(img == ref_img))
    

    【讨论】:

      【解决方案2】:

      这应该可以解决问题:

      img = cv2.imread(path, -1).astype(np.float)
      

      【讨论】:

      • 在这个链接中用于 rgb 读取的标志是 1 但给定 -1 什么是正确的?
      • 数字-1 表示“不变”,没有转换或其他什么
      • 我想以 rgb 模式读取图像,这意味着即使输入图像二进制或灰度也必须以 rgb 模式读取,感谢该评论也很有帮助我认为以下脚本可以 img = cv2 .imread(path, 1).astype(np.float)