共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。
实验内容:打开图像,显示图像,灰度化,二值化,存储图像,缩放图像,观察其分辨率,降低灰度分辨率两种模式,观察图像变化
打开图像
import cv2 as cv | |
img = cv.imread('LenaRGB.bmp') | |
img = cv.cvtColor(img, cv.COLOR_BGR2RGB) |
显示图像
import matplotlib.pyplot as plt | |
plt.imshow(img) |
灰度化
gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY) | |
# show_all(img, gray_img) | |
plt.imshow(gray_img, cmap='gray') |
二值化
_, binary_img = cv.threshold(gray_img, 127, 255, cv.THRESH_BINARY) | |
plt.imshow(binary_img, cmap='gray') |
存储图像
cv.imwrite('Lena_binary.png', binary_img)
True
缩放图像 观察分辨率
plt.imshow(img) | |
img.shape |
(512, 512, 3)
row, col, _ = img.shape | |
resize_img = cv.resize(img, (int(row / 2), int(col / 2))) | |
plt.imshow(resize_img) | |
resize_img.shape |
(256, 256, 3)
降低灰度分辨率
def reduce_intensity_levels(img, level): | |
img = cv.copyTo(img, None) | |
for x in range(img.shape[0]): | |
for y in range(img.shape[1]): | |
si = int(img[x, y]) | |
ni = int(level * si / 255 + 0.5) * (255 / level) | |
img[x, y] = ni | |
return img |
8 级
gray_img_level8 = reduce_intensity_levels(gray_img, 7) | |
plt.imshow(gray_img_level8, cmap='gray') |
4 级
gray_img_level4 = reduce_intensity_levels(gray_img, 3) | |
plt.imshow(gray_img_level4, cmap='gray') |
2 级
gray_img_level2 = reduce_intensity_levels(gray_img, 1) | |
plt.imshow(gray_img_level2, cmap='gray') |
正文完