我的图片集存放在D:\jieguo\batch1\real中,写一段tensorflow2.0的不用cv2的代码根据每个图像太湖湖面轮廓内像素的颜色值提取叶绿素浓度值,并形成列表输出每个图像叶绿素浓度值
时间: 2024-05-13 08:19:16 浏览: 92
可以使用TensorFlow的tf.io模块来读取图像文件,使用tf.image模块对图像进行预处理,使用tf.boolean_mask函数来提取太湖湖面轮廓内的像素,使用tf.reduce_mean函数来计算叶绿素浓度值。
以下是代码示例:
```python
import tensorflow as tf
import os
# 定义太湖湖面轮廓坐标
contour = [(1332, 146), (1281, 184), (1283, 233), (1299, 276), (1318, 277), (1351, 242), (1359, 177), (1356, 154)]
# 定义颜色阈值
threshold = tf.constant([100, 150, 100])
# 定义图像文件路径
image_dir = "D:/jieguo/batch1/real"
# 读取图像文件列表
image_files = [os.path.join(image_dir, f) for f in os.listdir(image_dir) if f.endswith(".jpg")]
# 遍历图像文件列表
for image_file in image_files:
# 读取图像文件
image = tf.io.read_file(image_file)
image = tf.image.decode_jpeg(image, channels=3)
# 对图像进行预处理
image = tf.image.resize(image, size=(1024, 1024))
image = tf.cast(image, dtype=tf.float32)
image = image / 255.0
# 提取太湖湖面轮廓内的像素
mask = tf.image.polyline_mask(tf.shape(image)[:2], [contour], 1)
mask = tf.expand_dims(mask, axis=-1)
pixels = tf.boolean_mask(image, mask)
# 计算叶绿素浓度值
chlorophyll = tf.reduce_mean(tf.cast(tf.greater(pixels, threshold), dtype=tf.float32))
# 输出叶绿素浓度值
print("{}: {}".format(image_file, chlorophyll.numpy()))
```
其中,contour是太湖湖面轮廓的坐标列表,threshold是颜色阈值,可以根据实际情况进行调整。使用tf.image.polyline_mask函数生成太湖湖面轮廓的掩码,使用tf.boolean_mask函数提取掩码内的像素,使用tf.reduce_mean函数计算叶绿素浓度值。遍历图像文件列表,对每个图像进行处理并输出叶绿素浓度值。
阅读全文