python opencv学习(入门篇)图像的基本操作

一.OpenCV入门
一.安装opencv

1.安装Opencv-Contrib-Python

2.win+r打开电脑终端输入pip install opencv-contrib-python

二.入门,图像
1.图像的简单操作

1.cv2.imread(filename,flages)读取图像的函数*

filenname:要读取的图像的完整文件名或文件路径。

cv2.imread("D:\\CH\\cv\\add.jpg",1)双反斜杠

cv2.imread(r"D:\CH\cv\add.jpg",1)转换符

flages:要读取的图像颜色类型 ,参数默认为1,1为彩色,0为灰色

2.cv2.imshow(winname,mat)显示图像的函数

winname:显示图像的窗口名称

mat:要显示的图像

3.cv2.waitKey(delay)==27方法用于等待用户按下键盘上按键的时间

delay:等待用户在键盘上按键的时间单位毫秒,当delay等于0,负数,空格时为无限时间

27为Ascll值对应的键是Esc键,理解:按下Esc键关闭窗口Ascll值查看用ord()方法

4.cv2.destroyAllWindows()方法用于销毁所有正在显示的窗口

5.cv2.imwrite(filename,ing),方法用于保存图像

filename:要保存图像的完整路径从盘名到你要保存的图像名例如:

H:\python\opencv\CV\CH.jpg,其中CH.jpg为将保存的图片从新命名

ing:为读取图像信息的变量

import cv2
a=cv2.imread(r"图片名称.png",0)#读取的颜色为灰色
c=cv2.imread(r"图片名称.png“)#读取色彩图
print(a)#输出图片的像素值
cv2.imshow("image",a)#显示上面的图像
cv2.imshow("b",b)
cv2.waitKey(0)#永久显示图像并且按下任意键关闭窗口
cv2.destroyAllWindows()#销毁所显示的全部图像

2.图像的基本性质

一.shape,size,dtype三个属性

shape:彩色图像,获取的是一个包含图像的水平像素、垂直像素、和通道数的数组,即(垂直像素,水平像素,通道数),如果是灰度图获取的是垂直像素和水平像素。

size:获取的是像素个数,其值为“水平像素x垂直像素x通道数”灰度图像的通道为1。

dtype:获取图像的数据类型

三.像素
1.像素是图像的最小单位,是构成数字图像的基本单位。
import cv2
jmh=cv2.imread("CH.jpg")
for x in range(125,520):#x轴
    for y inrange(0,500):#y轴
        jmh[x,y]=[0,0,0]#修改BGR为黑色
cv2.imshow("ch",jmh)
cv2.waitKey()
cv2.destroyAllWindows()
#使用循环遍历像素点修改像素点

四.numpy操作像素
1.array(object,dtype,ndmin) 生成矩阵

abject:数组

dtype:数组的数据类型

ndmin:数组的最小维度

2.empty([x,y],dtype=type) 随机生成x行,y列可指定数据类型的二维矩阵

3.ones(x,y) 生成x行y列其元素为1且默认参数为浮点型的矩阵

2.二维矩阵的切片

a[嵌套列表的索引,嵌套列表内的索引] 要是索引了多个嵌套列表,则返回多个嵌套列表内部索引

高维度矩阵索引,从高维到低维

import numpy as np
a=np.array([[1,2,3],[4,5,6],[7,8,9]])
a[1,:3]
>>[4,5]
a[:,0]
>>[1,4,7]
#一维索引和二维索引
a[:,0]
>>[1,4,7]
a[:,0:1]
>>[[1],
   [4],
   [7]]
3.创建图像

黑白图像是二维数组,彩色图像是三维数组,数组的每个元素就是图像对应的像素值,修改像素就是修改数组

import cv2
import numpy as np
w=2000#设置长
h=1000#设置宽
jmh=np.zeros((w,h),np.uint8)#生成长为w,宽为h的二维数组
for i in range(0,w,40):#循环以宽为遍历,跨度为40
    jmh[:,i:i+20]=255#白色区域宽为20个像素
cv2.imshow("ch",jmh)
cv2.waitKey(0)
cv2.destroyAllWindows()

彩色图像是由三位数组构成的像素以及通道构成------水平像素,垂直像素,通道数

b=255,0,0

g=0,255,0

r=0,0,255

import cv2
import numpy as np
h=700
w=1500
# a=np.zeros((w,h,3),np.uint8)#创建全是0的三位数组显示图片为纯黑
# b=a.copy()#为下面的蓝色操作图像拷贝数组,下同
# g=a.copy()
# r=a.copy()
# b[:,:,0]=255#修改第一通道蓝色
# g[:,:,1]=255#修改第二通道绿色
# r[:,:,2]=255#修改第三通道红色
# cv2.imshow("blue",b)#显示图像
# cv2.imshow("green",g)
# cv2.imshow("red",r)
# cv2.waitKey()
# cv2.destroyAllWindows()
a=np.random.randint(0,256,size=(h,w,3),dtype=np.uint8)#y,x轴
cv2.imshow("ch",a)
cv2.waitKey()
cv2.destroyAllWindows()

上面可执行代码的结果

4.拼接图像

a=np.hstack(tup) 水平拼接

参数tup:要拼接的图片像素矩阵

a=np.vstack

importcv2
importnumpyasnp
x=80
y=80
jmh=np.zeros((y,x,3),np.uint8)#生成一个宽为x,高为y的纯黑图像,指定维度为3,类型为uint8
a=jmh.copy()#浅拷贝
b=jmh.copy()
a[:,:,0]=255#修改第一通道为b
b[:,:,1]=255#修改第二通道为g
bmh=np.hstack((a,b))#水平拼接
vss=np.vstack((a,b))#垂直拼接
cv2.imshow("ch",vss)
cv2.imshow("CH",bmh)
cv2.waitKey()
cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值