我的图片集存放在D:\jieguo\batch1\real中,写一段tensorflow2.0的不用cv2的代码根据每个图像太湖湖面轮廓内像素的颜色值提取叶绿素浓度值,并形成列表输出每个图像叶绿素浓度值
时间: 2024-05-08 07:21:51 浏览: 46
下面是一段TensorFlow 2.0的代码,可以根据每个图像太湖湖面轮廓内像素的颜色值提取叶绿素浓度值,并形成列表输出每个图像叶绿素浓度值:
``` python
import tensorflow as tf
import numpy as np
from PIL import Image
# 定义叶绿素浓度计算函数
def chlorophyll_concentration(img):
# 定义太湖湖面轮廓的颜色范围
lower = np.array([0, 50, 50])
upper = np.array([10, 255, 255])
# 将图片转换为HSV格式
hsv_img = tf.image.rgb_to_hsv(img)
# 获取太湖湖面轮廓的掩码
mask = tf.where(tf.logical_and(tf.reduce_all(tf.greater_equal(hsv_img, lower), axis=-1),
tf.reduce_all(tf.less_equal(hsv_img, upper), axis=-1)), 1, 0)
# 计算叶绿素浓度值
chlorophyll = tf.reduce_mean(tf.boolean_mask(hsv_img[:, :, 0], mask))
return chlorophyll
# 读取图片集
image_paths = ['D:/jieguo/batch1/real/1.jpg', 'D:/jieguo/batch1/real/2.jpg', 'D:/jieguo/batch1/real/3.jpg']
images = [np.array(Image.open(path)) for path in image_paths]
# 计算每张图片的叶绿素浓度值
chlorophylls = [chlorophyll_concentration(img) for img in images]
# 输出叶绿素浓度值列表
print(chlorophylls)
```
说明:
1. `chlorophyll_concentration` 函数用于计算单张图片的叶绿素浓度值,其中 `lower` 和 `upper` 定义了太湖湖面轮廓的颜色范围。
2. `tf.image.rgb_to_hsv` 函数用于将图片从 RGB 格式转换为 HSV 格式,方便对颜色进行处理。
3. `tf.logical_and` 和 `tf.logical_or` 函数分别实现逻辑与和逻辑或操作。
4. `tf.reduce_all` 函数用于在指定维度上执行逻辑与或逻辑或操作。
5. `tf.boolean_mask` 函数用于根据掩码提取符合条件的像素值。
6. `np.array(Image.open(path))` 用于读取图片文件并将其转换为 numpy 数组。
阅读全文