2020/08/01
图像就是结构化存储的数据信息;图像属性(通道数目,高与宽,像素数据,图像类型)
Python中加载图像的模块与API;支持常见格式
★注意:opencv读视频时是分析视频的内容,对视频每一帧进行处理,对内容进行视频分析对象检测对象跟踪,所有opencv对的视频都是没有声音的,且对视频大小有一定的限制
见文档
在图5.1.1的第12行代码后面加上一下代码,如图5.2.1所示
for row in range(height): #遍历数组
for col in range (width):
for c in range(channels):
pv = image[row,col,c] #获取每个通道的每个数值,c维数组
image[row,col,c] = 255 - pv #255减去 高、宽、维度,得到新的
cv.imshow("pixels_demo",image) #显示图片,pixels_demo是窗口名,image是图片
利用OpenCV的API实现图像取反,可以大大缩短程序运行时间,实现代码如下所示
def inverse(image):
dst = cv.bitwise_not(image)
cv.imshow("pixels_demo", image)
在图5.1.1的第17行代码后面加上一下代码,如图5.3所示
t1 = cv.getTickCount() #getTickCount获取CPU所有时间的总数
access_pixels(src) #调用
t2 = cv.getTickCount() #getTickCount获取CPU所有时间的总数
time = ((t2-t1)/cv.getTickFrequency())#t2-t1除以每一秒钟的数量,得到总的秒数
print("time : %s ms" % (time*1000)) #总的秒数*1000得毫秒数,并打印输出
def create_image():
""""
多通道
一般就是RGB图像
"""
img = np.zeros([400,400,3],np.uint8) #创建一个三通道的高和宽都是400,3通道,类型是np.uint8(八位的)
#img[:, :, 0] = np.ones([400, 400] * 255) #修改第0个通道的值;ones跟大小一样相当于都是0,相当于是第0个通道了蓝色;
#img[:, :, 1] = np.ones([400, 400] * 255) # 如果是1就是绿色;前面必须默认是整个的
img[:, :, 2] = np.ones([400, 400] * 255) # 如果是2就是红色;
cv.imshow("new.image",img) #显示出来
def create_image():
"""
单通道
最常见的单通道就是灰度图像
"""
img = np.zeros([400,400,1],np.uint8) #zeros初始化为0;同样是8位
img[:,:,0] = np.ones([400,40])*127 #ones初始化为1;乘127就是灰度的
"""
36和37行代码可写成41和42行代码
"""
img = np.ones([400, 400, 1], np.uint8) #ones初始化为1,单通道
img =img *255 #乘255是白色
cv.imshow("new.image", img)
cv.convertScaleAbs()
计算完后将结果浮点数变成八位的整型,绝对值变成正的
m1 = np.ones([3,3],np.float32)#注意选择合适类型
m1.fill(122,388)
print(m1)
m2 = m1.reshape([1,9])#1行9列
print(m2)
#以上是三维转二维
m3 = np.array([[2,3,4][4,5,6],[7,8,9]],np.int32)
m3.fill(9)
print(m3)
输出结果本是
[[2,3,4]
[4,5,6]
[7,8,9]]
加上m3.fill(9)后输出结果是
[[9,9,9]
[9,9,9]
[9,9,9]]