我正在生成一个图像,其中包含RGB上某些位深度的所有可能的颜色值(在3个通道上相同的值,因此看起来是灰度的),创建易于读取的图案,此代码可能有用(它生成 uint16 NumPy数组):
import cv2
import numpy as np
w = 1824
h= 948
bits = 16
max_color = pow(2,bits)
hbar_size = round((w*h)/(max_color))
num_bars = round(h/hbar_size)
color = 0
image_data = np.zeros((h, w, 3)).astype(np.uint16)
for x in range(0,num_bars+1):
if((x+1)*hbar_size < h):
for j in range(0,w):
color += 1
for i in range(x*hbar_size , (x+1)*hbar_size):
#print(i)
image_data[i, j] = color
else:
for j in range(0,w):
color += 1
for i in range(x*hbar_size , h):
#print(i)
image_data[i, j] = min(color , max_color)
当我使用cv2.imwrite('allValues.png',image_data)
保存它时,我可以看到图像,它似乎是正确的,但但是它实际上是以8位深度保存的(当我用{{1}读取时) }我得到一个 uint8 NumPy数组)。
在python的OpenCV上是否有适当的方式写入/读取 16位RGB 图像?
png格式有问题吗?
答案 0 :(得分:1)
它以16位保存,但是在加载时会自动转换为8位,以便您可以在屏幕上查看它。您可以使用
绕过该功能 DB::table('devices')
->leftJoin('hotel_device','hotel_device.device_id','devices.id')
->whereNull("hotel_device.device_id")
->delete();