#!/usr/bin/env python
import rawpy
raw = rawpy.imread("/some/path.cr2")
bayer = raw.raw_image # with border
bayer_visible = raw.raw_image_visible # just visible area
#!/usr/bin/env python
import ctypes
from rawkit.raw import Raw
with Raw(filename="some_file.CR2") as raw:
raw.unpack()
# For more information, see the LibRaw docs:
# http://www.libraw.org/docs/API-datastruct-eng.html#libraw_rawdata_t
rawdata = raw.data.contents.rawdata
data_size = rawdata.sizes.raw_height * rawdata.sizes.raw_width
data_pointer = ctypes.cast(
rawdata.raw_image,
ctypes.POINTER(ctypes.c_ushort * data_size)
)
data = data_pointer.contents
# Grab the first few pixels for demonstration purposes...
for i in range(5):
print('Pixel {}: {}'.format(i, data[i]))
因为libraw/dcraw可以读取cr2,所以应该很容易实现。使用rawpy:
bayer
和{您可以使用
rawkit
来获取这些数据,但是,您将无法使用实际的rawkit
模块(它为处理原始图像提供了更高级别的api)。相反,您将希望主要使用libraw
模块,该模块允许您访问底层LibRaw api。在我很难从图像中看出这些像素是什么。以下脚本(完全未经测试)将允许您获得所需的内容:
很有可能是我误会了一些东西,尺寸也变小了,这样的话,最终还是会出错的,但这不是我以前想让天秤座做的事情。在
更多信息可以在LibRaw forums或LibRaw struct docs上找到。在
在numpy数组中存储时,我会将其作为一种过度使用留给用户,或者作为后续的答案(我没有使用numpy的经验)。在
相关问题 更多 >
编程相关推荐