想用python处理比较大的单色图片文件,如何提高速度

想用python处理比较大的单色图片文件,如何提高速度,第1张

你好州枯培,你可以考虑使用numpy的函数来做,下面是例子败竖的python代码

image = np.zeros((400,400,3), dtype="uint8")

raw = image.copy()

image[np.where((image==[0,0,0]).all(axis=2))] = [255,255,255]

cv2.imshow('Test0', image)

lower_black = np.array([0,0,0], dtype 册唯= "uint16")

upper_black = np.array([70,70,70], dtype = "uint16")

black_mask = cv2.inRange(image, lower_black, upper_black)

image[np.where((image == [0,0,0]).all(axis = 2))] = [155,255,155]

black_mask[np.where(black_mask == [0])] = [155]

你把上面的那个image的数值改成你需要改的目标就可以直接替换了。

你可以看看numpy.fromfile()方法,也可以自己open一个文件,再read()一定字节实现。

前者是把整个原文件读入内存成为数组,再选择数组的一部分写入文件(numpy.tofile())。后者是从原文件中读入一些字节,再把这些字节write到新文件中。

因此,方法并不难,基本上就是一个copy过程。

特别要注意的是,二进制文件是不存储任何格式信息的,所以,一定要弄清楚这个文件是如何产生的,因此,在分割文件时不要把一个数所对或灶应的字节给分开。比如二进制文件中是32bit数据,那么,就要4字节为一个单位,不能在分割时分出一衫兄扮个尘兄1字节或2字节来,否则数据就错了。

NumPy是Python语言的一个扩充程序库。支持高级大量的春绝备维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy内部解除了CPython的GIL(全局解释器锁),运行效率极好,是大量机器学习框架的基础库!

相关推荐:《Python基础教程》

NumPy的全名为Numeric Python,是一个开源的Python科学计算库,它包括:

·一个强大的N维数组对象ndrray;

·比较成熟的(广宏物播)函数库;

·用于整合C/C++和Fortran代码的工具包;

·实用的线性代数、傅里叶变换和随机数生成函数。

NumPy的优点:

·对于同样的数值计算任务,使用NumPy要比直接编写Python代码便捷得多;

·NumPy中的数组的存储效率和输入输出性能均远远优于Python中等价的基本数据结构,且其能够提升的性能是与数组中的元素成比例的;

·NumPy的大部分代码都是用C语言写的,其底层算法在设计时就有着优异的性能,这使得NumPy比纯Python代码高效得多。

当然,NumPy也有其不足之处,由于NumPy使用内存映射文件以达到最优的数据读写性能,而扒毁内存的大小限制了其对TB级大文件的处理;此外,NumPy数组的通用性不及Python提供的list容器。因此,在科学计算之外的领域,NumPy的优势也就不那么明显。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12276233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存