OpenCV python:cv2.split()vs在BGR图像中获取通道时切片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了OpenCV python:cv2.split()vs在BGR图像中获取通道时切片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1514字,纯文字阅读大概需要3分钟。
内容图文
我想只获取BGR图像中的第一个通道(蓝色),然后将其保存到磁盘.
当我使用cv2.split()时一切正常
>>> import cv2
>>> a = cv2.imread("/home/s18/theVIDEO/1_resized.jpg")
>>> b = cv2.split(a)[0]
>>> type(b)
<type 'numpy.ndarray'>
>>> b
array([[223, 222, 224, ..., 88, 80, 71],
[222, 221, 225, ..., 84, 78, 67],
[220, 221, 225, ..., 77, 71, 62],
...,
[163, 178, 182, ..., 107, 107, 106],
[148, 170, 186, ..., 104, 104, 103],
[156, 181, 201, ..., 102, 101, 100]], dtype=uint8)
>>> b.shape
(600, 800)
>>> cv2.imwrite("/home/s18/theVIDEO/1_resized2.jpg", b)
True
但是在使用模拟切片操作时,我会收到错误
>>> c = a[:,:,0]
>>> c
>>> type(c)
<type 'numpy.ndarray'>
array([[223, 222, 224, ..., 88, 80, 71],
[222, 221, 225, ..., 84, 78, 67],
[220, 221, 225, ..., 77, 71, 62],
...,
[163, 178, 182, ..., 107, 107, 106],
[148, 170, 186, ..., 104, 104, 103],
[156, 181, 201, ..., 102, 101, 100]], dtype=uint8)
>>> c.shape
(600, 800)
>>> cv2.imwrite("/home/s18/theVIDEO/1_resized3.jpg", c)
False
数组b和c中的元素相等,维度和类也是相似的.为什么我不能使用简单的切片来获得其中一个频道?
解决方法:
如果您没有直接切片但是复制内容,则结果是OK
...
>>> c = zeros((a.shape[0],a.shape[1]), dtype=a.dtype)
>>> c[:,:] = a[:,:,0]
>>> cv2.imwrite('out.jpg', c)
True
内容总结
以上是互联网集市为您收集整理的OpenCV python:cv2.split()vs在BGR图像中获取通道时切片全部内容,希望文章能够帮你解决OpenCV python:cv2.split()vs在BGR图像中获取通道时切片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。