Python+OpenCV:生成并处理600x600彩色图,最终实现中间白周围黑的二值化效果
要完成这个任务,我们可以使用Python和OpenCV库来生成和处理图像。以下是一个完整的代码示例,它将按照你的要求生成并处理图像: 1. 创建一个600x600的灰色图像。 2. 在中间300x300的区域填充蓝色。 3. 将灰色变为黄色,蓝色变为红色。 4. 将图像转换为灰度图,并进行二值化处理,使中间区域为白色,周围区域为黑色。 ```python import cv2 import numpy as np # 创建一个600x600的灰色图像 height, width = 600, 600 image = np.full((height, width, 3), [127, 127, 127], dtype=np.uint8) # 在中间300x300的区域填充蓝色 start_row, start_col = (height - 300) // 2, (width - 300) // 2 end_row, end_col = start_row + 300, start_col + 300 image[start_row:end_row, start_col:end_col] = [255, 0, 0] # 将灰色变为黄色,蓝色变为红色 image[image == [127, 127, 127]] = [0, 255, 255] image[image == [255, 0, 0]] = [0, 0, 255] # 将图像转换为灰度图 gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用自定义公式进行灰度转换 # 公式:gray = 0.299 * R + 0.587 * G + 0.114 * B gray_image_custom = np.dot(image[..., :3], [0.299, 0.587, 0.114]).astype(np.uint8) # 进行二值化处理,使中间区域为白色,周围区域为黑色 _, binary_image = cv2.threshold(gray_image_custom, 127, 255, cv2.THRESH_BINARY) # 显示图像 cv2.imshow('Original Image', image) cv2.imshow('Gray Image', gray_image) cv2.imshow('Custom Gray Image', gray_image_custom) cv2.imshow('Binary Image', binary_image) # 保存图像 cv2.imwrite('original_image.png', image) cv2.imwrite('gray_image.png', gray_image) cv2.imwrite('custom_gray_image.png', gray_image_custom) cv2.imwrite('binary_image.png', binary_image) # 等待用户按键关闭窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` 解释: 1. 创建灰色图像:使用`np.full`函数创建一个600x600的图像,初始值为[127, 127, 127](灰色)。 2. 填充蓝色区域:计算中间300x300区域的起始和结束坐标,并将该区域填充为蓝色[255, 0, 0]。 3. 颜色替换:使用条件索引将灰色区域替换为黄色[0, 255, 255],将蓝色区域替换为红色[0, 0, 255]。 4. 灰度转换:使用OpenCV的`cvtColor`函数将图像转换为灰度图。使用自定义公式进行灰度转换。 5. 二值化处理:使用`threshold`函数将灰度图像进行二值化处理,使中间区域为白色(255),周围区域为黑色(0)。 6. 显示和保存图像:使用OpenCV的`imshow`函数显示图像,并使用`imwrite`函数保存图像。 运行上述代码后,你将看到四个窗口分别显示原始图像、灰度图像、自定义灰度图像和二值化图像,并且这些图像也会被保存到当前目录下。 ######[AI写代码神器 | 903点数解答 | 2024-10-17 10:25:46]
- 用C++找出奶牛“中间”产量的方法(字节豆包 | 457点数解答 | 2026-02-25 12:30:30)29
- 使用C++解决农夫约翰寻找“中间”奶牛产奶量问题(字节豆包 | 199点数解答 | 2026-02-27 19:35:09)27
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)345
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)358
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)419
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)491
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)444
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)438
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)485
- OpenCV.js 轻松实现图片识别:详细步骤全解析 ( | 824点数解答 | 2024-03-22 16:22:16)206
- OpenCV.js 实战:轻松识别图片中电梯轮廓( | 1193点数解答 | 2024-03-22 16:23:32)221