我使用步进功能从视频中读取帧(使用vision.VideoFileReader
),图像结果是拜耳的一维和三维,问题是我无法从拜耳移动用'去马赛克'功能。
我获得的图像是0-1。
解释更多:
当我显示图像大小时,我获得[1024 1024 3],通常我使用demosaic
从拜耳移动到RGB,然后从RGB移动到灰度。 {2D}图像上载有demosaic
函数。
代码:
function obj = setupSystemObjects2()
obj.reader = vision.VideoFileReader(video);
obj.videoPlayer = vision.VideoPlayer('Position', [20, 400, 700, 400]);
end
function frame = readFrame()
frame = obj.reader.step();
end
感谢您的帮助。
答案 0 :(得分:1)
您所阅读的框架似乎不是拜耳格式,并且不需要demosaic
尝试使用rgb2gray
:
gImg = rgb2gray( frame );
答案 1 :(得分:1)
据我所知,vision.VideoFileReader
,不会给你拜耳格式。它读取标准视频格式,并且您获得大小为[1024 1024 3]的帧的事实表明该帧是RGB。尝试使用imshow
显示一个框架,看看它是否有意义。如果它看起来像您期望的那样,那么只需使用rgb2gray
,如果您需要转换为灰度。
请注意,您的像素值介于0和1之间。vision.VideoFileReader
默认情况下会为您提供类'single'
的帧。如果您希望'uint8'
帧的范围介于0到255之间,请将'VideoOutputDataType'
属性设置为'uint8'
:
obj.reader = vision.VideoFileReader(video, 'VideoOutputDataType', 'uint8');