一、OpenCV读取图像

本文在python3.7和OpenCV进行实验,首先安装OpenCV,网上有很多教程,这里不再赘述。

1.图像读入

OpenCV读取图像函数

img = cv2.imread(“文地址”,[,参数])

参数(1) cv2.IMREAD_UNCHANGED (图像不可变)
参数(2) cv2.IMREAD_GRAYSCALE (灰度图像)
参数(3) cv2.IMREAD_COLOR (读入彩色图像)
参数(4) cv2.COLOR_BGR2RGB (图像通道BGR转成RGB)

 2.显示图像

显示图像调用以下函数

cv2.imshow("窗口名",图像名)

 

3.窗口等待

窗口等待调用以下函数

cv2.waitKey(delay)

如果其参数为0,则表示无限期的等待键盘输入;参数>0表示等待delay毫秒;参数<0表示等待键盘单击。

4.删除所有窗口

删除所有窗口调用以下函数

cv2.destroyAllWindows() 删除所有窗口
cv2.destroyWindows() 删除指定的窗口

5.写入图像

写入图像调用以下函数

cv2.imwrite(“文件地址”,文件名)

以下实验是读入图片并显示保存

import cv2

#读入图片
img = cv2.imread("E:/pythonProject/mei.jpeg")

#显示图片
cv2.imshow("demo", img)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图片
cv2.imwrite("E:/pythonProject/caomei.jpeg",img)

输出图片如下图所示,并且在文件夹下保存了一张caomei.jpeg的图片

python的图片处理 python图片处理opencv_彩色图像

 

二、OpenCV像素处理

1.读取像素

灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。

灰度图像:返回值 = 图像[位置元素]
eg: mei=image[88,142]
彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
eg: blue=image[88,142,0] green=image[88,142,1] red=image[88,142,2]

2.修改图像

修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。

灰度图像:
img[88,142] = 255
彩色图像:
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
彩色图像:方法二
img[88,142] = [255, 255, 255]

以下代码为获取像素及修改操作:

import cv2

#读取图片
image = cv2.imread("E:/pythonProject/mei.jpeg",cv2.IMREAD_UNCHANGED)
mei = image[88,148]
print(mei)

#修改像素
image[88,148] = [255,255,255]
print(mei)

#分别获取BGR通道像素
blue = image[88,148,0]
print(blue)
green = image[88,148,1]
print(green)
red = image[88,148,2]
print(red)

#显示图片
cv2.imshow("demo",image)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图像
cv2.imwrite("E:/pythonProject/text.jpeg",image)

输出结果如下:

[178 215 243]
[255 255 255]
255
255
255

下面代码是将行200到300,列300到400的像素区域设置为白色,(也可设置为黑色,将255该成0即可)

import cv2

# 读取图片
image = cv2.imread("E:/pythonProject/mei.jpeg",cv2.IMREAD_UNCHANGED)

# 该区域设置为白色
image[200:300,300:400] = [255,255,255]

#显示图片
cv2.imshow("demo", image)

#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

#写入图片
cv2.imwrite("E:/pythonProject/caomei.jpeg",image)

输出图片如下所示:

python的图片处理 python图片处理opencv_python的图片处理_02