Python OpenCV 练习指南
02:图像基础操作
1 访问和修改像素值
练习题 1:编写一个Python脚本来加载一张图像,然后找到图像中左上角顶点坐标为(200, 200),边长为200个像素的正方形区域的像素值,并将该区域内的所有像素修改为红色。最后展示修改前后的图像对比。
import cv2
# 加载图像
image = cv2.imread(r"C:\Users\jinli\Desktop\photos\123.jpg")
# 确定正方形区域的位置和大小
x = 200 # 左上角顶点的x坐标
y = 200 # 左上角顶点的y坐标
side_length = 200 # 正方形的边长
# 找到正方形区域的像素值并将其修改为红色
for i in range(x, x + side_length):
for j in range(y, y + side_length):
image[j, i] = (0, 0, 255) # 将像素值修改为红色,红色像素的BGR值为(0, 0, 255)
# 展示修改前后的图像对比
cv2.namedWindow('Original Image', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Original Image', 600, 400)
cv2.imshow('Original Image', cv2.imread(r"C:\Users\jinli\Desktop\photos\123.jpg")) # 显示原始图像
cv2.namedWindow('Modified Image', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Modified Image', 600, 400)
cv2.imshow('Modified Image', image) # 显示修改后的图像
cv2.waitKey(0) # 等待按键继续
cv2.destroyAllWindows() # 关闭所有窗口
练习题 2:编写一个程序,该程序顺序访问图像的每个像素,并将其更改为灰阶版本。提示:灰度值可以通过取每个像素的BGR值的平均值来计算。
import cv2
# 加载图像
image = cv2.imread(r"C:\Users\jinli\Desktop\photos\4.jpg")
# 获取图像的宽度和高度
height, width, _ = image.shape
# 遍历图像的每个像素并将其更改为灰阶版本
for y in range(height):
for x in range(width):
# 获取每个像素的BGR值
blue, green, red = image[y, x]
# 计算灰度值
gray_value = int((int(blue) + i