0
点赞
收藏
分享

微信扫一扫

Opencv-python学习(一)图片的基本显示

他说Python 2022-02-06 阅读 89

目录

一、图像处理基本操作

1.读取图像imread() 将图片转换为矩阵,返回该矩阵的值

2.显示图像imshow()

3.等待按键waitKey()

4.destroyAllWindows()释放所有窗口

5.imwrite(filename, image) 将image复制到filename处(文件或者完整路径)

6.b,g,r = cv2.split(image)  将图像数据拆分成三份,蓝色、绿色、红色。

7.image_new = cv.merge([b, g, r])    将b,g,r三份合并

二、图像属性的获取

三、图像通道的拆分与组合

四、生成随机图像

五、可以使用了按位与运算函数,使图像只显示一部分

六、更换色彩空间函数cv2.cvtColor()


一、图像处理基本操作

1.读取图像imread() 将图片转换为矩阵,返回该矩阵的值

retval = cv2.imread(filename)

filename也就是图片文件名或者路径

2.显示图像imshow()

cv2.imshow(window, image)

Window:创建图像窗口名字

Image:显示的图像名(变量)

3.等待按键waitKey()

cv2.waitKey([delay])

delay表示等待键盘的时间单位为毫秒,若delay为负数或0,则无限等待。

4.destroyAllWindows()释放所有窗口

5.imwrite(filename, image) 将image复制到filename处(文件或者完整路径)

6.b,g,r = cv2.split(image)  将图像数据拆分成三份,蓝色、绿色、红色。

7.image_new = cv.merge([b, g, r])    将b,g,r三份合并

最简单的显示图像程序:

import cv2 as cv

image = cv.imread("E:/dahai.jpeg")	#路径中不要有中文。
print(image)						#可以查看矩阵的样子
cv.imshow("image",image)			#显示图像
cv.waitKey(0)						#保持图像显示,按键盘任意键后停止等待
cv.destroyAllWindows()				#关闭所有opencv窗口

cv.imwrite("E:/AAA-test.jpg",image)	#将image图像复制到(第一个参数)路径中

二、图像属性的获取

图像有一些属性,一般常用的有三个:

shape:表示图像的大小(矩阵的长宽高)

size:返回图像的像素数目

dtype:返回图像的数据类型

调用方法很简单。只要是一个图像的对象就可以直接调用

先用image = imread读取一个图像的数据,

然后直接print(image.shape),就可以输出这个图像对象的属性值了。

例:

import cv2 as cv
#可以用属性来获取图像信息,对于图像对象
#shape,size,dtype分别可以获取图像的大小属性、像素数目和类型属性
image = cv.imread("E:/dahai.jpeg")
print("图像大小属性:",image.shape)
print("图像像素数目:",image.size)
print("图像类型属性:",image.dtype)

三、图像通道的拆分与组合

使用split()拆分后显示拆分后的灰度图像

使用merge()函数来组合拆分后的灰度图像,将其变为彩色图像。

import cv2 as cv

image = cv.imread("E:/dahai.jpeg")
b,g,r = cv.split(image) #将图像数据拆分成三份
cv.imshow("reason",image)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
cv.waitKey(0)
cv.destroyAllWindows()

四、生成随机图像

是生成一个随机灰度图像,在程序中用到了Numpy模块,要注意Numpy.random与random的区别

import cv2 as cv
import numpy as np
# import random
# imaaa1 = random.randint(3,6)    #random模块中的randint只能在整数之间返回一个随机数
#                                #但是numpy模块中的random.randint可以返回一定范围内的一整个列表的随机数

imagegray = np.random.randint(0,256,size = [256,256],dtype=np.uint8)


cv.imshow("rand_pict",imagegray)
#生成一个随机灰度图像


cv.waitKey(0)
cv.destroyAllWindows()

若要生成随机彩色图像,则只需修改一行代码。

imagegray = np.random.randint(0,256,size = [256,256,3],dtype=np.uint8)

五、可以使用了按位与运算函数,使图像只显示一部分

import cv2 as cv
import numpy as np

image1 = cv.imread("E:/dahai.jpeg")
cv.imshow("reason",image1)

image2 = np.zeros(image1.shape,dtype=np.uint8)  #创建和image1同样的小的0矩阵(或者说列表)
image2[100:400, 100:400] = 255                  #将列表中间100*100到400*400的部分换成255(也就是11111111)

image3 = cv.bitwise_and(image1, image2) #按位与算法——成功只显示图像中的那一部分
cv.imshow("image3",image3)

cv.waitKey(0)
cv.destroyAllWindows()

六、更换色彩空间函数cv2.cvtColor()

import cv2 as cv
image1 = cv.imread("E:/dahai.jpeg")
cv.imshow("BGR",image1)

image_RGB = cv.cvtColor(image1, cv.COLOR_BGR2RGB)
cv.imshow("RGB",image_RGB)

cv.waitKey(0)
cv.destroyAllWindows()
举报

相关推荐

0 条评论