用摄像头抓取实验者自己的彩色图像,转换为灰度图像,然后在屏幕的8个区域中分别显示该图像的256、128、64、32、16、8、4、2色图像,并存成磁盘文件,用python给出代码并给出注释
时间: 2024-05-22 09:16:15 浏览: 47
# 导入必要的库
import cv2
# 定义函数将彩色图像转换为灰度图像并返回
def gray_scale(img):
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
return gray_img
# 定义函数将灰度图像转换为指定颜色数的图像,并在屏幕上显示,并存储为磁盘文件
def color_quantization(gray_img, num_colors):
# 使用K-Means算法进行颜色量化
Z = gray_img.reshape((-1,1))
Z = np.float32(Z)
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
ret,label,center=cv2.kmeans(Z, num_colors, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS)
center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((gray_img.shape))
# 在屏幕上显示图像
cv2.imshow(str(num_colors) + "-color image", res2)
# 存储为磁盘文件
filename = str(num_colors) + "-color image.jpg"
cv2.imwrite(filename, res2)
# 捕获实验者自己的彩色图像
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
# 将彩色图像转换为灰度图像
gray_img = gray_scale(frame)
# 分别将灰度图像转换为不同颜色数的图像,并显示在屏幕上,并存储为磁盘文件
color_quantization(gray_img, 256)
color_quantization(gray_img, 128)
color_quantization(gray_img, 64)
color_quantization(gray_img, 32)
color_quantization(gray_img, 16)
color_quantization(gray_img, 8)
color_quantization(gray_img, 4)
color_quantization(gray_img, 2)
# 等待用户按下任意键后关闭窗口和释放摄像头
cv2.waitKey(0)
cv2.destroyAllWindows()
cap.release()
阅读全文