OpenCV学习日记1

opencv 1

numpy基础

例:import numpy as np

a = np.int8(1203) #定义为八位的整数

a = np.array([]) #将列表转换为数组 可延申,格式参考列表[]元组()

在将嵌套的多维数据转换为数组时,同维度数据的个数应该相同;否则,NumPy会将其作为一个Python对象放入数组。

使用zeros()函数创建数组,数组元素默认值为0

例:np.zeros((2,3),dtype=int) #创建2行3列的二维数组,指定数组元素的数据类型

用arange()创建数组,按左闭右开规则递增

例:np.arange(5.6),取值范围为[0,5],元素数据类型默认与参数一致

用linspace(a,b,c)创建数组 第一个元素是a,最后一个是b,差值是(b-a)/(c-1)

用indices创建数组,indices((a,b))为a*b的数组

ones函数创建单位矩阵,元素值全为1

用shape查看数组形状,查看数值范围,(a,-1)改变数组形状,a为行数,-1为每行元素自动运算;reshape()可以改变数组形状,并返回更改后的新数组,但它不能用于减少或增加行个数.

例:a.resize((2,5),refcheck=False)

resize方法可以改变形状同时改变元素个数。

np.revel(a,order="F")可以将数组转换为一维数组,默认优先行,如果加上F则优先列。

a[-1]表示a列表内最后一个元素

d[a:b]表示从第a+1个元素读到第b+1个元素,即为原列表的切片

d[:b]表示从起点读到第b+1个,同理可得d[a:]

矩阵运算符号:+ - @ .dot()  .T转置 

存在运算:min(),max(),sum()

numpy数组支持+= *=赋值运算,并且会用计算结果覆盖原数组

a.max(axis=0) #返回最大值所在的行

axis=1 #返回每一行中的最大值

sum(axis=0/1)#按列/行执行加法

Max min axis=0 则 把数据映射到横轴上进行运算(横轴压扁)
        Axis=1 则 把矩阵数据映射到 竖轴y轴 上进行运算(纵轴压扁)
如果不指定axis 则对全部的矩阵元素进行操作, 全部元素求最大最小。

2.读写显示图像

import cv2

img=cv2.imread('lena.jpg')      #读取图像

print(type(img))                #输出数据类型

print(img)                          #输出图像数组

print(img.shape)        #输出数组形状 即高度宽度通道数

print(img.dtype)            #输出数组元素的数据类型

print(img.size)            #输出数组元素的个数

代码中img.dtypes的输出结果为uint8,说明每个数组元素用一个字节(8位)保存,每个数组元素为一个像素的B、G和R通道的颜色值,颜色值取值范围为[0,255]。

代码中img.size的输出结果等于数组形状的3个维度大小的乘积

import cv2

import numpy

img=numpy.zeros((50,50),dtype=numpy.uint8)    #创建大小为50×50的黑色grb(0,0,0)正方形图像

cv2.imwrite('mypic2-1.jpg',img)          #将图像存入文件

import  os
print(os.getcwd()) # 获取当前工作目录路径
print(os.path.abspath('.')) # 获取当前工作目录路径

imshow("name",mode)用于显示图像,name为文件名/路径(窗口名称),mode为图形数组。

waitKey()等待用户输入,基本格式如下:

rv=cv2.waitKey([delay])  没有输入返回-1,有输入返回键的ASCII码,delay表示等待按键时间(ms),负数或者0表示无限等待;等待时间结束时结束等待,函数返回-1.

import cv2

img=cv2.imread('lena.jpg',cv2.IMREAD_REDUCED_COLOR_2)  #读取图像,缩小为原来的1/2 cv2.imshow('lena',img)              #显示图像

key=0 while key!=27:                      #按Esc键时终止循环    

key=cv2.waitKey()               #等待按键

cv2.destroyWindow('lena')           #关闭图像窗口

cv.release()   #关闭视频窗口

3.

可以利用while True达到渐变画面效果 

img[:,:]=n                                          #更改图像灰度值

b=img[:,:,0B1G2R]获得BGR通道图像

cv.imshow("img_BGR",bgr)显示通道图像

用b,g,r=cv2.split(img)命令拆分图像

gbr=cv2.merge([g,b,r])                          #按新顺序合并

用+和cv2.add()函数进行图像加法运算,但要保证两幅图同一维度,有相同一个brg值

加权加法运算:img3=cv2.addWeighted(img1,0.8,img2,0.2,0)

位运算:

cv2.bitwise_and(src1,src2[,mask]):mask对应的位不为0时,图像src1和src2执行按位与操作。 cv2.bitwise_or(src1,src2[,mask]):mask对应的位不为0时,图像src1和src2执行按位或操作。 cv2.bitwise_not(src1[,mask]):mask对应的位不为0时,图像src1执行按位取反操作。 cv2.bitwise_xor(src1,src2[,mask]):mask对应的位不为0时,图像src1和src2执行按位异或操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值