【问题标题】:what is the error : "ValueError: assignment destination is read-only"?错误是什么:“ValueError:赋值目标是只读的”?
【发布时间】:2019-08-07 19:49:43
【问题描述】:

当我使用 cv2.imread() 打开 jpg 文件时,有时会失败,这可能是由于我使用了 BGR 格式。所以我改用 PLT 来使用 RGB。

import matplotlib.pyplot as plt
import numpy as np

def rgb_to_gray(img):
        grayImage = np.zeros(img.shape)
        R = np.array(img[:, :, 0])
        G = np.array(img[:, :, 1])
        B = np.array(img[:, :, 2])

        R = (R *.299)
        G = (G *.587)
        B = (B *.114)

        Avg = (R+G+B)
        grayImage = img

        for i in range(3):
           grayImage[:,:,i] = Avg

        return grayImage       

image_file = 'C:\A.jpg';
img = plt.imread(image_file,0)
gray = rgb_to_gray(img).copy()

当我将图像转换为灰度时出现错误。 : "ValueError: assignment destination is read-only" 我怎样才能在这里更改我的代码以避免它?

【问题讨论】:

标签: python rgb bgr


【解决方案1】:

不确定 PIL 库,但如果它基于 numpy 数组,试试这个 (https://numpy.org/doc/stable/reference/generated/numpy.copy.html):

grayImage = img.copy()

这将通过初始化一个完全不同的实例而不是引用它来创建一个完整的副本(您可以使用“=”运算符来引用它)

https://pythonexamples.org/python-numpy-duplicate-copy-array/#:~:text=Following%20is%20the%20syntax%20to%20make%20a%20copy,of%20array1.%20Example%201%3A%20Copy%20Array%20using%20Numpy

【讨论】:

    【解决方案2】:

    这一行显得多余并导致错误,删除它:

            grayImage = img
    

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2018-09-01
      • 2011-03-09
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 2018-12-05
      相关资源
      最近更新 更多