Базовое представление изображений
Прежде чем понять, как сделать изображение ярче, нам нужно понять основное представление изображения. В компьютерах изображения делятся на три типа: бинарные изображения, изображения в градациях серого и цветные изображения.
Двоичное изображение относится к изображению, которое содержит только два цвета: черный и белый.Например, в программе, чтобы представить число A, мы можем представить его с помощью следующего набора данных в виде сетки, как показано в следующем фигура:
Где 0 — черный, а 1 — белый, поэтому мы можем определить, что хотим отобразить, но у него нет ни цвета, ни оттенка, только формы.
Второй тип изображения — это изображение в градациях серого, которое может отображать приблизительную форму символа, стиль содержимого и т. д. с помощью оттенков, но не имеет цвета. Эффект такой же, как и выше, за исключением того, что значение каждого блока не 0 и 1, а [0,255].
Последний тип представляет собой цветное изображение, которое добавляет цвет к изображению в градациях серого.Хотя оно также может быть представлено приведенным выше бинарным изображением, один из квадратов не 0 и 1, ни [0,255], а [[ 0,255],[ 0,255],[0,255]]. Таким образом, он становится трехмерной матрицей.
Для основ изображений мы остановимся здесь. Ниже каждый из наших постов в блоге будет представлять собой комбинацию реального боя и теории.В этой статье в основном объясняется операция добавления изображений и реализуется регулировка яркости изображений.
Две операции сложения для изображений
Для обработки изображений операции сложения являются относительно базовыми операциями. И сложная обработка изображений осуществляется с помощью этих базовых знаний. Итак, для начала OpenCV мы хотим подробно представить его операцию сложения.
В процессе обработки изображений OpenCV предоставляет нам две операции добавления к изображениям. Один — обрабатывать его напрямую через знак «+», а другой — обрабатывать через функцию добавления.
"+" и функция добавления
Прежде чем знакомиться с оператором «+», нам нужно понять состав цветов изображения RGB. Как мы все знаем, будь то красный, синий или зеленый, максимальное значение, установленное программой, равно 255. Итак, теперь есть хитрая проблема, что, если после операции сложения оно больше 255?
Для оператора «+», если оно больше 255, необходимо взять остаток. Например, значение зеленого равно 222, а теперь нам нужно добавить 55, поэтому итоговое значение будет не 277, а 21.
Это не относится к функции сложения.Операция сложения изображения реализуется через сложение, и нет такой вещи, как взятие остатка.Все, что больше 255 после сложения, равномерно устанавливается на 255. Зная это, мы можем очень гибко использовать операцию сложения.
получить изображение
Теперь, когда мы поняли операцию сложения изображений, давайте получим изображение для операции.Код выглядит следующим образом:
import cv2
img = cv2.imread("1.jpg", 1)
Здесь мы импортируем библиотеку OpenCV с помощью import cv2, а затем получаем изображение, здесь нужно обратить внимание на второй параметр. Блогер специально приводит здесь таблицу, чтобы всем было понятно значение второго параметра.
Численная величина | значение |
---|---|
-1 | Сохраняйте исходный формат без изменений (то есть, если это изображение в градациях серого, это изображение в градациях серого, а если это цветное изображение, это цветное изображение). |
0 | Изменить размер изображения на одноканальное изображение в градациях серого |
1 | Настройте изображение на 3-канальное изображение BGR, это более пятилетнее значение |
2 | Когда глубина загруженного изображения составляет 16 или 32 бита, возвращается соответствующее изображение глубины; в противном случае оно преобразуется в 8-битное изображение. |
4 | Чтение изображения в любом возможном цветовом формате |
8 | Загрузить образ с драйвером gdal |
Выше приведены часто используемые значения параметров.Конечно, не только эти параметры, но и множество параметров для уменьшения размера изображения после получения изображения.Если вам интересно, вы можете запросить документацию по разработке.
Далее мы отображаем полученное изображение, и конкретный код выглядит следующим образом:
import cv2
img = cv2.imread("1.jpg", -1)
cv2.imshow("图片", img)#显示图像,参数1为窗口标题,2为获取的图像,中文乱码后续讲解
cv2.waitKey()#等待用户按下
cv2.destroyAllWindows()#释放所有窗口
Приведенные выше комментарии достаточно подробны, поэтому я не буду повторять их здесь. После запуска отображаемый эффект выглядит следующим образом:
Настройка яркости изображения
Чтобы настроить яркость изображения, мы обычно используем функцию добавления, но чтобы различить разницу между двумя дополнениями, мы одновременно вычисляем и отображаем изображение.Конкретный код выглядит следующим образом:
import cv2
img = cv2.imread("1.jpg", -1)
symbol_img=img+img
add_img=cv2.add(img,img)
cv2.imshow("图片1", symbol_img)
cv2.imshow("图片2", add_img)
cv2.waitKey()
cv2.destroyAllWindows()
После запуска отображаемый эффект показан на следующем рисунке (слева «+», справа добавить):
Среди них левое изображение больше 255, а все остальные берутся, в результате чего изначально яркие пиксели становятся темнее. Изображение справа не нужно брать по модулю, потому что используется функция добавления, а значение больше 255 равномерно присваивается 255, поэтому каждая деталь будет только ярче, чем исходное изображение.