OpenCV python:cv2.split()vs在BGR图像中获取通道时切片
发布时间:2020-12-20 13:25:35 所属栏目:Python 来源:网络整理
导读:我想只获取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,
我想只获取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,77,71,62],[163,178,182,107,106],[148,170,186,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,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |