栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

OpenCV Python:3通道float32图像读取的快速解决方案?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV Python:3通道float32图像读取的快速解决方案?

使用这种方法,可能没有太多的事情可以加快图像读取速度。我以为Matplotlib可能会更快,因为它直接以浮点数和RGB顺序读取,但是即使转换类型和通道顺序后,它也比OpenCV慢三倍。PIL比Matplotlib快一点,但仍然是OpenCV的两倍,因此无济于事,并且scikit-
image的速度与PIL大致相同:

import matplotlib.image as mpimgimport cv2import numpy as npfrom skimage import iofrom PIL import Imageimport timeittimes = range(1000)# matplotlibstart_time = timeit.default_timer()for t in times:    img = mpimg.imread('img1.png')print("mpimg.imread(): ", timeit.default_timer() - start_time, "s")# OpenCVstart_time = timeit.default_timer()for t in times:    img = cv2.cvtColor(        cv2.imread('img1.png'), cv2.COLOR_BGR2RGB).astype(np.float32)/255.0print("cv2.imread(): ", timeit.default_timer() - start_time, "s")# scikit-imagestart_time = timeit.default_timer()for t in times:    img = io.imread('img1.png').astype(np.float32)/255.0print("io.imread(): ", timeit.default_timer() - start_time, "s")# PILstart_time = timeit.default_timer()for t in times:    img = np.asarray(Image.open('img1.png')).astype(np.float32)/255.0print("Image.open(): ", timeit.default_timer() - start_time, "s")

mpimg.imread():37.68960806101677 s
cv2.imread():13.830177563999314 s
io.imread():29.395271296001738 s
Image.open():26.633562815986807 s

相反,最好通过读取所有图像并将其保存为更好的格式以进行读取(即直接从字节读取)进行预处理,而不是使用图像读取器。您可以将图像序列化(刺入)到

.p
.pickle
文件中,然后将数据直接加载到列表中。这样,您只需要一次执行一次缓慢加载即可。正如DanMašek在下面的注释中指出的那样,对文件进行腌制意味着将其解压缩为原始数据,因此文件大小
大得多。您可以使用正确的类型和频道顺序创建与现在相同的列表(缓冲区),然后对列表进行腌制;培训时间到了,您可以加载泡菜文件;它的 方式 更快,超级简单:

with open(training_file, mode='rb') as f:    training_data = pickle.load(f)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号