Python的各种matlab的imread函数数在实现方式和读取速度上有何区别

python-opencv(cv2) 之一 图像的简单读取 - CSDN博客
python-opencv(cv2) 之一 图像的简单读取
#!/usr/bin/env python
#coding=utf-8
__author__ = 'zhangdebin'
import cv2
if __name__ == '__main__':
#image read
image = cv2.imread("/Users/zhangdebin/Documents/checkFace2.jpg")
image0 = cv2.imread("/Users/zhangdebin/Documents/checkFace2.jpg",0)
image1 = cv2.imread("/Users/zhangdebin/Documents/checkFace2.jpg",1)
print image
cv2.namedWindow("the window")
cv2.imshow("the window", image)
cv2.namedWindow("the window0")
cv2.imshow("the window0", image0)
cv2.namedWindow("the window1")
cv2.imshow("the window1", image1)
cv2.waitKey(0)
其中,cv2是我在mac系统中安装的python-opencv包,具体安装方法在另一篇博文有介绍,
cv2.imread和matlab中的imread函数很像,其中源码有一个参数imread(…)
imread(filename[, flags]) -& retval,falgs经测试,当缺省时为原图像,当falgs=0时,因为只读取第一个字节,彩色图像读取为灰度图像,当falgs逐渐增加,向7(0~7,8位)靠拢时,字节数增加,图像色彩越来越靠近原图像,当超过8位,比如8,变为(8-8=0),又是只取一个字节,视觉效果为灰度图,同理,15位为原图,有兴趣的朋友可以自己测试下,具体效果见下图:
同时,cv2中自带了falgs =cv2.CV_LOAD_IMAGE_GRAYSCALE或
cv2.CV_LOAD_IMAGE_COLOR,其实这两个参数和上面是一样的,0为grayimage,但是color=1,而且显示时候也不是彩色的,这和matlab的imread有很大区别
grayimage = cv2.imread('/Users/zhangdebin/Documents/checkoutFace2.jpeg',cv2.CV_LOAD_IMAGE_GRAYSCALE);
colorimage = cv2.imread('/Users/zhangdebin/Documents/checkoutFace2.jpeg', cv2.CV_LOAD_IMAGE_COLOR)
print 'cv2.grayscale:'
print cv2.CV_LOAD_IMAGE_GRAYSCALE
print 'colr:'
print cv2.CV_LOAD_IMAGE_COLOR
cv2.grayscale:
本文已收录于以下专栏:
相关文章推荐
将代码放在师姐电脑上跑的时候,用的是python2.7
出现c2.cv,没有cv这个属性,在命令行import cv 时出错,没有cv这个module,但是可以import cv2,解决方式是下载安装...
Python + opencv 图片颜色域识别提取-检测图片LED 颜色 及其变化,判定设备的状态。
, 测试HSV色域数据
, 增加滤波器处理&轮廓框取处理
OpenCV Python教程之图像元素的访问、通道分离与合并
转载请详细注明原作者及出处,谢谢!
像素的访问和访问numpy中ndarray的方法完全一样,灰度图为:
img[j,i]...
1、SIFT、SURF SURF特征是SIFT特征的一个更快的特征提取版,详细请参阅文献[1]。以下将展示python open cv 的 SURF 的特征提取命令,及绘制命令。2、特征提取# -*-...
caffe对于训练数据格式,支持:lmdb、h5py……,其中lmdb数据格式常用于单标签数据,像分类等,经常使用lmdb的数据格式。对于回归等问题,或者多标签数据,一般使用h5py数据的格式。当然好...
利用cv2读取图像和使用matlab读取图像在每个channel的值不同,cv2读入的形式为BGR,matlab读入的形式为RGB。
为什么使用Python-OpenCV
虽然python 很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV 来讲,它还是弱小很多。跟很多开源软件一样OpenCV 也提供了完善的pyt...
相比C++而言,Python适合做原型。本系列的文章介绍如何在Python中用OpenCV图形库,以及与C++调用相应OpenCV函数的不同之处。这篇文章介绍在Python中使用OpenCV的霍夫变换...
1准备工作1.1 实战环境windows环境,自行安装深度学习框架 Caffe1.2 数据集准备LFW人脸数据集官网自行下载,速度慢的可在百度云盘地址处下载:
:http://blog.csdn.n...
一、问题描述从UTF-8编码的文件中获取到一个str,想要存到windows的txt里面,出现了乱码问题。这个问题一般是由于数据库需要的编码格式导致的,你先确认你的数据库是采用什么编码的,然后在入库之...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&& OpenCV 用imread函数读入灰度图变成彩色图(三通道)怎么回事
阿里云双11红包领不停,充值返券5%,爆款限时惠!
在使用的C&#43;&#43;编程的时候遇到了这样的情况,当我用: img = (&F:\\My_Desktop\\data\\gesture_frame\\test\\1\\1\\0.jpg&); 语句读入该路径下面的0.jpg这张图像的时候,再用img.channel()输出图片的数,惊奇地发现输出的结果是3而不是1。 查看了imread的原始定义如下: CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR ); 这时候才恍然大悟,当我们在使用imread()函数而没有给出第二个参数的时候,第二个参数的默认&#20540;是IMREAD_COLOR,即默认读入的图片是图片。 当我把上面读入的img图片的每个通道的&#20540;都输出来的时候,发现每个像素的三个通道的&#20540;都是相等的,也就是说,0.jpg虽然是一张灰度图片,但是默认以彩色的方式读入,所以三个通道的&#20540;都取了该像素对应的灰度&#20540;。 所以~~正确的读入灰度图的方式是: img = imread(&F:\\My_Desktop\\data\\gesture_frame\\test\\1\\1\\0.jpg&,0); 即使0.jpg本来就是一张灰度图,还是得让第二个参数等于0!!!
阿里云双11红包领不停,充值返券5%,爆款限时惠!
6小时前455阅6小时前486阅6小时前479阅6小时前105阅6小时前250阅6小时前340阅1天前116阅1天前210阅1天前196阅1天前290阅
CentOS专题
3191阅7562阅4445阅9629阅9159阅8792阅1157阅8491阅4224阅3496阅
5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!
按 Ctrl+D 键,
把本文加入收藏夹
12345678910
12345678910
12345678910Python的各种imread函数在实现方式和读取速度上有何区别_编程_答辩数码百科
Python的各种imread函数在实现方式和读取速度上有何区别
编辑: 答辩数码百科 &&&来源:用户发布&&&发布时间:&&&查看次数:82
Python的各种imread函数在实现方式和读取速度上有何区别哎哟网友回答前类似问题 参考:
更多相关内容
本站内容来自网友发布,本站无法保证其部分内容的正确性,请用户一定仔细辨别。
[] &&[联系QQ:885&971&98] &
沪ICP备号&37被浏览3715分享邀请回答try:
from .pilutil import *
from . import pilutil
__all__ += pilutil.__all__
del pilutil
except ImportError:
也算是学了一招,从 pilutil 导入其所有函数添加到当前空间,然后又删除了 pilutil 消除影响。4. skimage.io.imread代码在这里:是通过插件 plugin 来读入不同的文件,而且会试用几个不同的 plugins 来找到合适的。使用 call_plugin 来调用,代码在这里:可以根据如下代码查看插件调用的优先级# For each plugin type, default to the first available plugin as defined by
# the following preferences.
preferred_plugins = {
# Default plugins for all types (overridden by specific types below).
'all': ['pil', 'matplotlib', 'qt', 'freeimage'],
'imshow': ['matplotlib'],
'imshow_collection': ['matplotlib']
plugins 的源代码在这里:。可以看到 pil 的 imread,是用 open 打开图像之后,再转换成 ndarray。5. cv2.imread这里是调用的 CV::imread(),代码在这里:。一般来说 C\C++ 的实现,应该比 python 速度快一点。6. matplotlib.image.imreadmatplotlib 的文档里面说,matplotlib 原生只可以读取 PNG 文件,有 PIL 的时候,可以读取其他类型的文件。如果使用 URL 打开在线图像文件,需要符合 PIL 的文档要求。matplotlib.image.imread 的代码在这里:。matplotlib 的原生 PNG 读取和写入,是用 C 实现的,代码在这里:。matplotlib 是先用 pil 的 open 打开图像,如果格式是 png,就用原生方法打开。相关代码如下:
handlers = {'png': _png.read_png, }
if format is None:
if cbook.is_string_like(fname):
parsed = urlparse(fname)
# If the string is a URL, assume png
if len(parsed.scheme) & 1:
ext = 'png'
basename, ext = os.path.splitext(fname)
ext = ext.lower()[1:]
elif hasattr(fname, 'name'):
basename, ext = os.path.splitext(fname.name)
ext = ext.lower()[1:]
ext = 'png'
ext = format
if ext not in handlers:
im = pilread(fname)
if im is None:
raise ValueError('Only know how to handle extensions: %s; '
'with Pillow installed matplotlib can handle '
'more images' % list(six.iterkeys(handlers)))
声明的处理器只有 png。如果是 png 文件,调用 _png.read_png。如果不是 png 直接使用 pilread(就是用 pil 的 Image.open 然后 pil_to_array)。matplotlib 的源码确实比较复杂,一大部分主体是用 C 写的,改动很激进,功能更新猛烈。小结从源码看,绝大多数常用代码库其实都还是用的 PIL。原因容易理解,PIL 是纯 Python 实现的,而且经过了优化,性能应该还不错。除了 PIL 之外,常用的就是 OpenCV 和 Qt。OpenCV 和 Qt 是 C/C++ 实现的,可能速度会快一些,但具体要测试才知道。稍后会在 GitHub 上开一个对比测试的 Repo 再测试一下性能。scikit-images 的插件机制很灵活有趣,尤其是它提供了其他几种图像读取的实现。matplotlib 代码稍显乱一点,但更证明了其功能迭代速度快,开发激进。用 matplotlib 尽量多用PNG 以便利用原生的 PNG 支持补充补充一些读代码时遇到的一些其他的图像读取方法。7. PyQt4.QtGui.QImage.load(filename)8. freeimagescikit-image 是使用 ctype 调用 freeimage 的动态链接库,来调用 Freeimage_Load()。代码在此:9. imread其在 PyPi 上的主页:。代码在此:。25添加评论分享收藏感谢收起}

我要回帖

更多关于 opencv imread函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信