OpenCV学习:图片的读取、展示
以下代码都是在python中使用OpenCV
import cv2
img = cv2.imread('ex1.jpg', 1)
cv2.imshow('image', img)
cv2.waitKey(0)
OpenCV库的引入:import cv2
OpenCV读取的图片,图片数据的组织形式为bgr
读取图像:cv2.imread(arg1, arg2)
函数参数:arg1表示想要读取的图片所在的位置
arg2表示读取模式,其中arg2 = 1表示读取彩色 arg2 = 0表示灰度
读取后的img可以看作是一个由像素点组成的数组,通过改变这些像素点,可以改变图片信息
展示图片:cv2.imshow(arg1, img)
函数参数:arg1表示显示出来的图片窗口的名称
img表示图片数据,这个img可以是通过cv2.imread()读取到的,也可以是在程序中经过处理得到的
等待输入:cv2.waitKey(n)
函数参数:n值表示等待用户输入需要的时间,单位时毫秒,n = 0表示一直等待下去
此处调用cv2.waitKey(0),用于避免程序结束太快
上述代码运行结果:
import cv2
img = cv2.imread('ex1.jpg', 0)
cv2.imwrite('ex1_1.jpg', img)
cv2.imwrite('ex1_2.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 0])
cv2.imwrite('ex1_3.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])
cv2.imwrite('ex1_4.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 0])
将图片数据输出为一个图片:cv2.imwrite(arg1, arg2, arg3)
函数参数:arg1表示输出后的图片文件名
arg2表示已知的图片数据
arg3:
[cv2.IMWRITE_JPEG_QUALITY, 0]输出为JPG图片
表示输出的图片质量,后面跟的数字用于控制文件压缩比
压缩比0-100 有损压缩 数值越小压缩比越高(JPG)
[cv2.IMWRITE_PNG_COMPRESSION, 0]输出为PNG图片
数值范围0-9 数值越小,压缩比越低PNG
import cv2
img = cv2.imread('ex1.jpg', 1)
(b, g, r) = img[100,100]
print(b, g, r)
for i in range(1, 100):#在图片上画一条蓝色的线
img[10 + i, 100] = [255, 0, 0]# [i, j, k] bgr的形式 [255, 0, 0]为蓝色
cv2.imshow('image', img)
cv2.waitKey(0)
上述代码通过改变图片的像素点的信息,在图片上画了一条蓝色的线
(b, g, r) = img[100,100]:读取了位置为[100, 100]的像素点的信息
img表示读取到的图片数据以(b, g, r)的格式,以数组的形式储存的结果
可以将图片看做一个直角坐标系,其中图片的左上角为(0, 0)位置 ,向下第一个0增加,向右第二个0增加
其中img[m, n],m最大为图片的高度-1 n最大为图片的宽度-1
上述代码运行结果:
转载请注明出处