一.读取图像
import cv2
# 读取图像
retval = cv2.imread("20170701031428774.jpg", -1)
# ("图片在当前路径下的文件名",-1代表保持原有图片格式不变)
print(retval)
.print会打印出图像的像素值:
添加图片注释,不超过 140 字(可选)
二.显示图像
# 显示图像函数
cv2.namedWindow("1") # namedWindow函数会创建一个小括号里面的名称窗口
cv2.imshow("2", retval) # ("创建窗口名称",要显示的图片名称)
cv2.waitKey(0) # 解决创建窗口一闪而过的问题,后边加cv2.waitKey(0)
三.waitKey函数的用法
import cv2
# 主要实现在键盘上按住不同的键,就会显示不同的界面
retval = cv2.imread("20170701031428774.jpg", -1)
cv2.imshow("1", retval)
key = cv2.waitKey() # 获取键盘上所按下字符的ASC11值
if key == ord("A"): # 把获取的特定字符的ASC11值,与A 的值比较,ord()函数,获取特定字符的ASC11值
cv2.imshow("A", retval)
cv2.waitKey() # 按下键盘上的A会显示窗口A
elif key == ord("B"):
cv2.imshow("B", retval)
cv2.waitKey() # 按下键盘上的B会显示窗口B
.四.销毁所创建的窗口
# cv2.destroyWindow("1") # destroyWindow销毁窗口1函数
cv2.destroyAllWindows() # 括号里什么也没有,销毁所有窗口
.五.保存图像imwrite
retval = cv2.imread("20170701031428774.jpg", -1)
cv2.imshow("1.jpg", retval) # 文件名后需要加文件格式
# 保存图像
retval1 = cv2.imwrite("2.jpg", retval) # 文件名后需要加文件格式
# ("另存为图像的名称",需要保存的图像)
六.二值图像
也就是黑白图像,在计算机眼里,黑色为0,白色为1
编辑切换为居中
添加图片注释,不超过 140 字(可选)
每一个小格格就是一个像素点。
计算机眼中的图像:
编辑切换为居中
添加图片注释,不超过 140 字(可选)
七.灰度图像
计算机把0设定为纯白,把255设置为纯黑,0-255之间设置为不同的灰度。
八.彩色图像
由三个R,G,B矩阵组成的图像
编辑切换为居中
添加图片注释,不超过 140 字(可选)
在opencv顺序里,通道顺序是B-G-R。
九.像素出来,像素是图像处理的基本单元
对像素进行基本的像素修改
# 使用numpy库生成一个全是0的8X8的数组,并且对这个数组进行修改和显示
import numpy as np
import cv2
img = np.zeros((8, 8), dtype=np.uint8) # (数组大小,数值类型是uint8)
print("img=\n", img)
cv2.imshow("1", img)
cv2.waitKey()
print("图像的像素点[0,3]=", img[0, 3])
img[0, 3] = 255
cv2.imshow("2", img)
cv2.waitKey()
print("图像的像素点[0,3]=", img)
.读取一个灰度图像并且对他的像素进行修改
# 读取一个灰度图像,并且对它的像素进行修改和访问
import cv2
img = cv2.imread("22986182_173540093000_2.jpg", -1)
cv2.imshow("1", img)
for i in range(10, 100):
for j in range(80, 100):
img[i, j] = 255 # 灰度图像的第10行到99行与第80列到99列的交叉区域像素点设置为255
cv2.imshow("2", img)
cv2.waitKey()
cv2.destroyAllWindows()
.十.对于彩色图像的处理
编辑切换为居中
添加图片注释,不超过 140 字(可选)
使用Numpy生成三维数组,用来观察三个通道值的变化情况。
import cv2
import numpy as np
# 蓝色图像
blue = np.zeros((300, 300, 3), dtype=np.uint8)
blue[:, :, 0] = 255
print("blue=\n", blue)
cv2.imshow("blue", blue)
# 绿色图像
green = np.zeros((300, 300, 3), dtype=np.uint8)
green[:, :, 1] = 255
print("green=\n", green)
cv2.imshow("green", green)
# 红色图像
red = np.zeros((300, 300, 3), dtype=np.uint8)
red[:, :, 2] = 255
print("red=\n", red)
cv2.imshow("red", red)
cv2.waitKey()
cv2.destroyAllWindows()
.使用Numpy生成一个三维数组,用来模拟一幅BGR模式的彩色图像,并对其进行访问、修改。
import numpy as np
img = np.zeros((2, 4, 3), dtype=np.uint8) # 2X4的矩阵,有三个通道
print("img=\n", img)
print("像素点[0,3]:", img[0, 3]) # 打印第0行3列的BGR值
print("像素点[1,2,2]:", img[1, 2, 2]) # 打印第一行第二列第二个通道值
img[0, 3] = 255
img[0, 0] = [66, 77, 88]
img[1, 1, 1] = 3
img[1, 2, 2] = 4
print("修改后的像素值=\n", img)
.读取一幅彩色图像,并对其像素进行访问、修改。
import cv2
img = cv2.imread("20170701031428774.jpg", -1)
cv2.imshow("1", img)
for i in range(0, 50):
for j in range(0, 100):
for k in range(0, 3):
img[i, j, k] = 255 # 白色
for i in range(50, 100):
for j in range(0, 100):
img[i, j] = [128, 128, 128] # 灰色
for i in range(100, 150):
for j in range(0, 100):
img[i, j] = [0, 0, 0] # 黑色
cv2.imshow("2", img)
cv2.waitKey()
cv2.destroyAllWindows()