图像的读和写操作
OpenCv 的 imread() 和 imwrite() 函数可以支持各种静态图像文件格式,像png、jpg、tiff 等。图片是由一个个像素点组成,每个像素的都由一个三元数组表示,并且每个整型向量分别表示一个 B,G,R通道。一个像素点用一个字节来表示区间为(0-255),我们可以通过shape属性来查看图像的结构,它会返回行列。
import cv2
image = cv2.imread("test.jpg") #读取所在文件目录下的图片
print(image.shape)
返回值为:(606,646,3)
图像质量
我们也可以把一种图片格式转变成另一种格式,在这里小编讲一下 PNG和JPG 的区别。PNG格式的图片在压缩时是由压缩损耗的,也就是通常说的有损压缩,而JPG格式是可以无损压缩的,并且它比前者多了一个透明度的通道。下面小编给大家举个例子:
import cv2
image = cv2.imread("test.jpg",1)
# 第一个参数是文件名,第二个参数 “1”表示彩色格式,“0”表示灰度格式
cv2.imwrite("imagetest.jpg",image,[cv2.IMWRITE_JPEG_QUALTTY,50])
#50表示的是压缩比,它是有损压缩,取值是[0,100]
cv2.imwrite("imgtest.png",image,[cv2.IMWRITE_PNG_COMPRESSION,0])
#无损压缩,透明度属性 压缩比取值是[0,9]
前面已经说过图像是针对像素点的,所以我们可以把一副图片放在坐标轴上面进行操作。也就是说以矩阵的形式来对其进行变换。下面小编将举一个例子,我们对图片的(100,100)这个位置画一条直线
"""
import cv2
"""
功能:读取一张图片,并显示出来
"""
image = cv2.imread('test.jpg') # 根据路径读取一张图片
cv2.namedWindow("Image") # 初始化一个名为Image的窗口
(b,g,r) = image[100,100]
for i in range (1,100):
image[10+i,100] = [0,0,255] #在(100,100)-(200,100)画了一条红色的线
cv2.imshow("Image", image) # 显示图片
cv2.waitKey(0)
输出结果如下:
小编还在成长,希望大家可以不吝赐教。