Функция возвращает одномерный массив байт, в который записаны пиксели изображения в формате rgb32, снятого с камеры (размер изображения — 160x120). Данная функция может быть использована для решения задач распознавания маркеров.
Вызов функции
pic =getPhoto()
var pic =getPhoto();
Пример работы
Рассмотрим пример преобразования кадра, снятого на камеру, в цветовые форматы «оттенок серого» и «черно-белый».
Сделайте снимок и выведите результат на экран c помощью функции show.
# взять кадр в формате rgb32pic =getPhoto()brick.display().show(pic, total_height, total_width, "rgb32")script.wait(2000)
// взять кадр в формате rgb32var pic =getPhoto();brick.display().show(pic, total_height, total_width,"rgb32");script.wait(2000);
Результат:
Реализация функции перевода изображения в оттенок серого
defgrayScale(sPic): bufPic = []for i inrange(total_height):for j inrange(total_width): x = i * total_width + j p = sPic[x] r = (p &0xff0000) >>16# взять значение компоненты красного g = (p &0xff00) >>8# взять значение компоненты зеленого b = (p &0xff) # взять значение компоненты синего p = r *0.299+ g *0.587+ b *0.114; # компонента Y из YUV bufPic.append(p)return bufPic
functiongrayScale(sPic){ bufPic = [];for(var i =0; i < total_height; i++)for(var j =0; j < total_width; j++){var x = i * total_width + j;var p = sPic[x];var r = (p &0xff0000) >>16; // взять значение компоненты красногоvar g = (p &0xff00) >>8; // взять значение компоненты зеленогоvar b = (p &0xff); // взять значение компоненты синего p = r *0.299+ g *0.587+ b *0.114; // компонента Y из YUV bufPic[x] = p; }return bufPic;}
Перевод изображения в черно-белый формат и вывод на дисплей:
var pic =grayScale(pic);brick.display().show(pic, total_height, total_width,"grayscale8");script.wait(2000);
Результат:
Реализация функции бинаризации изображения
# Бинаризация -- перевод изображения в ЧБdefbinarization(treshold,sPic): bufPic = []for i inrange(len(sPic)): bufPic.append(255if sPic[i] > treshold else0)return bufPic
// Бинаризация -- перевод изображения в ЧБfunctionbinarization(treshold, sPic){ bufPic = []for(var i =0; i <sPic.length; i++){ bufPic[i] = sPic[i] > treshold ?255:0; }return bufPic;}
Перевод изображения в черно-белого и вывод на дисплей: