python+opencv 学习笔记(一)

本文介绍了使用OpenCV进行图像读取和显示的基本操作,包括解决因图片路径不完整导致的错误。同时,讲解了opencv中的Img.shape属性,用于获取图像的尺寸信息。此外,详细阐述了图像通道的概念,并通过示例展示了如何保留图像的单个颜色通道。最后,演示了如何使用numpy创建与原图像大小相同的全0矩阵,并将特定颜色通道的值复制到新矩阵中,以显示单色图像。
摘要由CSDN通过智能技术生成

小白边学边记录,主要是为了给自己之后复习看的。

图像读取以及显示:

代码:

import cv2 as cv
# 图片读取
Img = cv.imread('C:/Users/78761/Pictures/Saved Pictures/learnCV')
cv.imshow('Image', Img)

出现报错:

cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

原因:读入图片路径不完整,导致找不到图片无法正确读入。注意:图片文件名不能省略后缀。

解决后代码:

import cv2 as cv
# 图片读取
Img = cv.imread('C:/Users/78761/Pictures/Saved Pictures/learnCV.jpg')
cv.imshow('Image', Img)

opencv中的Img.shape函数:

返回值:(行数,列数,色彩通道数) 

注意的点:行数对应的是y轴的高度,列数对应x轴宽度。(y,x)


图像中blue[:, :, 0] = Img[:, :, 0]的理解:

# 0 保留蓝色通道 其他颜色值为0
blue = np.zeros_like(Img)
blue[:, :, 0] = Img[:, :, 0]
cv.imshow('blue', blue)
cv.waitKey(0)

通过该数值测试得到以下结论:

[行起始值:行终点值:stride,列起始值:列终点值:stride,图片的通道]
前两个逗号之前对应的模式是 start:end:stride
stride为-1时反向遍历,不填写或为1时正向遍历

实际上是python的切片相关的知识:

1. [], [:], [::]

[]访问序列中的一个元素,例如 str_list[3] 表示访问 str_list 序列中的第四个元素,index = 3。

[:]访问序列中的一段元素,例如 str_list[1:4] 表示访问 str_list 序列中的第二到第四个元素 (str_list[1],str_list[2],str_list[3]),不包含 str_list[4] 元素。

如果没有提供索引值,则默认从 0 开始。str_list[:4] 表示访问这个序列的第一到第四个元素 (不包含 str_list[4] 元素),str_list[4:] 表示访问第五到最后一个元素。

[::-1]翻转序列的元素,例如 str_list[::-1] 表示翻转 str_list 序列中的元素。

[::2]每隔一个元素取一个。

相关知识原文链接:https://blog.csdn.net/chengyq116/article/details/100145100


green = np.zeros_like(Img)的理解:

生成和Img一样大小的矩阵,其元素均为0。


全部代码:

import numpy as np
import cv2 as cv
# 图片读取
Img = cv.imread('C:/Users/78761/Pictures/Saved Pictures/learnCV.jpg')
cv.imshow('Image', Img)
# 等待键盘输入关闭窗口
cv.waitKey(0)
# 显示图像中每个颜色通道的图像
print(Img.shape)

# 0 保留蓝色通道 其他颜色值为0
blue = np.zeros_like(Img)
blue[:, :, 0] = Img[:, :, 0]
cv.imshow('blue', blue)
cv.waitKey(0)

# 1 保留绿色通道 其他颜色值为0
green = np.zeros_like(Img)
green[:, :, 1] = Img[:, :, 1]
cv.imshow('green', green)
cv.waitKey(0)

# 2 保留红色通道 其他颜色值为0
red = np.zeros_like(Img)
red[:, :, 2] = Img[:, :, 2]
cv.imshow('red', red)
cv.waitKey(0)
# 图像文件的保存
cv.imwrite('C:/Users/78761/Pictures/Saved Pictures/learnBlue.jpg', blue)

代码来源:

https://blog.csdn.net/weixin_45081640/article/details/118147714

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值