Как я могу захватить изображение с веб-камеры и иметь конкретный размер без пробелов?Захват изображения определенного размера с веб-камеры
указываю нужный размер:
var screenshot:BitmapData = new BitmapData(VD1.width,VD1.height,false);
Это 400x300 пикселов
А потом рисую точечного рисунка из моего видео элемента screenshot.draw(VD1);
я могу сделать Camera.getCamera.height
и .width
и посмотреть что моя камера 352x264px
Когда я просматриваю результирующее изображение, я вижу пробелы по всем краям (цвет серый, поэтому вы можете сказать), вот так:! [Введите описание изображения здесь] [1]
Если вы измеряете фактическое изображение, вы увидите, что он даже не занимает 352x264 пикселей. Даже при этом измерении все еще есть пробелы вокруг правого и нижнего краев.
Метод Camera.setMode
масштабирует захват, чтобы соответствовать 400x300, но похоже, принимая непосредственный захват от объекта видео, что он прикреплен к (с VD1.attachCamera(myCam)
выводит другой результат, когда объект VD1 обращаются к растровому изображению.
Я хотел бы все мои отснятые изображения, чтобы быть тем же размером, независимо от разрешения камеры есть ли способ, я могу сделать это
для справки, вот как я захватить изображение:.?
private function takeScreenShot():void{
var screenshot:BitmapData = new BitmapData(VD1.width,VD1.height,false);
screenshot.draw(VD1);
var encoder:PNGEncoder = new PNGEncoder();
var pngByteArray:ByteArray = encoder.encode(screenshot);
var responder:Responder = new Responder(function(res:Object):void{
trace("createThumbnail success");
},
function(res:Object):void{
trace("createThumbnail call failed");
});
mync.call("saveThumbnail", responder,pngByteArray);
}
Вот как настроить фотоаппарат
VD1 = new Video();
VD1.width = 400;
VD1.height = 300;
myMic = Microphone.getMicrophone();
myMic.rate = 22;
myMic.setSilenceLevel(0);
myMic.setUseEchoSuppression(true);
myMic.soundTransform = new SoundTransform(0,0);
myCam = Camera.getCamera();
trace(myCam.height+","+ myCam.width);
myCam.setMode(400,300,15);
myCam.setQuality(0,100);
myCam.setLoopback(true);