32Bit RGBA Image
조회 수: 11 (최근 30일)
이전 댓글 표시
Hello,
i read via MicroMager Core succseedfull images in Graymode - But the device give me an 32bit RGBA Image that would not
display with function imshow()
import mmcorej.*
mmc = CMMCore;
mmc.unloadAllDevices();
mmc.loadSystemConfiguration ('C:\Program Files\Micro-Manager-2.0gamma\DijSDKcameraMgr.cfg');
mmc.prepareSequenceAcquisition('DijSDKcamera');
mmc.startContinuousSequenceAcquisition(0);
imgRaw = mmc.getLastImage(); %mmc.snapImage(); %img = mmc.getImage();
pixelType = 'uint8';%8BIT GRAY default
if depth == 4
pixelType = 'uint32';%32BIT RGBA can't display img as 32BIT RGBA only 16Bit RGB is possible ?
elseif depth == 2
pixelType = 'uint16';%16BIT RGB not supportet by Micromanger normaly 32bit or 8bit
end
img = typecast(imgRaw,pixelType);
img = reshape(img, [width, height]);
img = transpose(img);
cla reset;
imshow(img);
mmc.unloadAllDevices(); %complettly destruct MMCore
How i can convert tzhe image correctly ? The Funktion image(img) Display an point cloud of image, but not in real colors given from map...
thx for any suggestions
Karsten (www.FlexxVision.de)
댓글 수: 4
Guillaume
2020년 2월 26일
편집: Guillaume
2020년 2월 26일
Please answer Image Analyst question. We need to know the type of imgRaw that's returned by your device. Is it double, uint8 or something else? We also need to know the size. whos imgRaw will give us all that information.
Once we know that, we can probably figure out a way to display your image. It's probably trivial, just split the transparency channel from the colour channels.
Also, doesn't your library document the memory arrangement of the data returned by getLastImage? That would also be useful information for us to have.
채택된 답변
Guillaume
2020년 2월 26일
"My Camera give me back an RGBA Image R8|G8|B8|A8 = 32 Bit"
"size is : width*height*(bpp/3)"
Shouldn't that be width*height*(bpp/4) ?
Assuming it's 4 bytes per pixel, and that imgRaw is indeed of class uint8:
img = permute(reshape(imgRaw, 4, width, height), [3, 2, 1])
imgRGB = img(:, :, 1:3); %discard alpha channel which is all 0
imshow(imgRGB);
This assumes that the image pixel are stored in row-major order, which your code also assumed.
댓글 수: 16
Guillaume
2020년 2월 27일
Oh! I made a typo. It should have been:
imgRGB = img(:, :, [3, 2, 1]); %was missing one :
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 National Instruments Frame Grabbers에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!