您的位置:首页 > 编程语言 > Python开发

Python Numpy.ndarray ValueError:assignment destination is read-only

2016-05-23 20:57 1591 查看
参考:http://stackoverflow.com/questions/13572448/change-values-in-a-numpy-array

###################################################################3

从树莓派相机上得到视频流,将其转换为OpenCV格式:

/article/9770362.html

同时想要在每一帧上进行操作,但是出错:



ValueError:assignment destination is read-only

无法操作图像,因为它们是只读模式。

在StackOver上找到一个方法:因为在Python中OpenCV图像格式为Numpy.ndarray,可以通过修改ndarray的属性:

img.flags.writeable = True


####################################################################



Numpy.ndarray有如下几个属性:

C_CONTIGUOUS(c_contiguous)

F_CONTIGUOUS(f_contiguous)

OWNDATA(owndata)

WRITEABLE(writeable)

ALIGNED(aligned)

UPDATEIFCOPY(updateifcopy)

import numpy as np
help(np.ndarray.flags)



flags属性是关于数组内存布局的信息

其中,flags属性可以以字典形式修改,比如:

a.flags['WRITEABLE'] = True


也可以使用小写字母属性名:

a.flags.writeable = True


而缩写词('C' / 'F' 等)仅适用于字典形式



仅有属性UPDATEIFCOPY,WRITEABLE以及ALIGNED属性可以被使用者修改,有3种修改方式:

1.直接赋值:

a.flags.writeable = True


2.字典输入:

a.flags['WRITEABLE'] = True
3.使用函数ndarray.setflags:

help(np.ndarray.setflags)




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: