我目前正在重新研究Gejima,Zhang和Nagata的研究,该研究的标题是使用L a b *彩色图像处理对番茄品质的成熟度判断。我将OpenCV用于图像处理部分。
从本文来看,L a b *颜色空间中的a *可以为负值,而在OpenCV中,它的范围为0-255,以使其成为8位无符号整数。如何获得与L a b *相同的读数?
我提取了感兴趣的区域,即番茄,将ROI中的所有a *相加,然后除以所有像素的数量。但是,这仍然会给出错误的结果,因为OpenCV中L a b *颜色空间中a *的范围是255,并且不能像本文中那样为负数。此外,他们的论文中的G(36)是什么意思?我已经在互联网上搜索了所有内容,但找不到。
答案 0 :(得分:0)
如OpenCV docs中所述,LAB范围将取决于原始图像的类型(uint8,float32等)。
要实现目标,您需要确保原始图像为float32。
import cv2
import numpy as np
img = cv2.imread("1.jpeg", cv2.IMREAD_COLOR)
img = img.astype('float32')
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
lab = np.asarray(lab)
print (f'{lab.min()}, {lab.max()}')
结果:
-107.859375, 100.0