Heim > Artikel > Backend-Entwicklung > Die Grundlagen der Python-Bildverarbeitung und die Einführungsfunktionen von OpenCV
Dieser Artikel vermittelt Ihnen die Grundlagen der Python-Bildverarbeitung und die Einführungsfunktionen von OpenCV. Ich hoffe, dass er für Freunde hilfreich ist.
Bilder bestehen aus Pixeln, also kleinen Quadraten im Bild, denen eine klare Position und Farbwerte zugeordnet sind , und die Farbe und Position dieser kleinen Quadrate bestimmen, wie das Bild erscheint. Pixel ist die kleinste Einheit in einem Bild. Jedes Bitmap-Bild enthält eine bestimmte Anzahl von Pixeln, die die Größe des Bildes auf dem Bildschirm bestimmen.
Bilder umfassen normalerweise Binärbilder, Graustufenbilder und Farbbilder.
1. Binärbild
Binärbild Jeder Punkt in ist entweder schwarz oder weiß, entweder weiß (Pixel ist 255) oder schwarz (Pixel ist 0). Der Prozess der Konvertierung eines Graustufenbilds in ein Binärbild wird häufig durch sequentielle Durchlaufbeurteilung implementiert. Wenn die Pixel >= 127 sind, wird sie auf 255 gesetzt, andernfalls wird sie auf 0 gesetzt.
2. Graustufenbild
Graustufenbilder haben zusätzlich zu Schwarz und Weiß auch Grau, das Grau kombiniert Der Grad ist in 256 verschiedene Farben unterteilt und das Bild wirkt klarer. Das Konvertieren von Farbbildern in Graustufenbilder ist der grundlegendste Vorverarbeitungsvorgang für die Bildverarbeitung, der normalerweise die folgenden Methoden umfasst:
(1) Gleitkomma-Algorithmus: Gray=R*0,3+G*0,59+B*0,11
( 2) Ganzzahlmethode: Gray=(R*30+G*59+B*11)/100
(3) Verschiebungsmethode: Gray=(R*28+G*151+B*77)> ;> 8;
(4) Durchschnittsmethode: Gray=(R+G+B)/3; (Dieses Programm verwendet einen Algorithmus)
(5) Nimm nur Grün: Gray=G; Durchschnittsalgorithmus: Gemäß den Helligkeitseigenschaften des Lichts lautet die Formel: R=G=B=R*0,299+G*0,587+B0,144
3. Farbbild Farbbild ist ein RGB-Bild, RGB repräsentiert die drei Primärfarben Rot, Grün und Blau , alle Farben im Computer Sie bestehen alle aus drei Primärfarben in unterschiedlichen Anteilen, also drei Farbkanälen.
1 Lesen Sie die Bild
OpenCV liest Bilder hauptsächlich durch Aufrufen der folgenden Funktionen:
Parameter (1) cv2.IMREAD_UNCHANGED (Bild unveränderlich)
Parameter (2) cv2.IMREAD_GRAYSCALE (Graustufenbild)
Parameter (3) cv2.IMREAD_COLOR (Farbbild lesen)
Parameter (4) cv2.COLOR_BGR2RGB (Bildkanal BGR konvertiert in RGB)
2. Bild anzeigen Die Funktion zum Anzeigen des Bildaufrufs lautet wie folgt:
3. Fensterwartezeit Die aufrufende Funktion lautet wie folgt:
Die Tastaturbindungsfunktion hat einen Parameter, der die Anzahl der zu wartenden Millisekunden angibt. Sie wartet eine bestimmte Anzahl von Millisekunden, um zu sehen, ob eine Eingabe von der Tastatur erfolgt, und der Rückgabewert ist ein ASCII-Wert. Wenn der Parameter 0 ist, bedeutet dies, dass auf unbestimmte Zeit auf Tastatureingaben gewartet wird; Parameter >0 bedeutet, auf Verzögerungsmillionen zu warten; Parameter
4. Alle Fenster löschen Rufen Sie die Funktion wie folgt auf:
cv2.destroyWindows() löscht das angegebene Fenster
5. Schreiben Sie das Bild Rufen Sie die Funktion wie folgt auf:
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg") #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)Das Ausgabeergebnis ist wie in der Abbildung unten dargestellt und ein Bild mit dem Namen „testyxz.jpg“ wird im Ordner gespeichert.
同时
可以对代码进行升级,如下所示:
#无限期等待输入 k=cv2.waitKey(0) #如果输入ESC退出 if k==27: cv2.destroyAllWindows()
1.读取像素
灰度图像直接返回灰度值,彩色图像则返回B、G、R三个分量。注意OpenCV读取图像是BGR存储显示,需要转换为RGB再进行图像处理。
灰度图像:返回值 = 图像(位置参数)
eg: test=img[88,42]
彩色图像:返回值 = 图像[位置元素, 0 | 1 | 2 ] 获取BGR三个通道像素
eg: blue=img[88,142,0] green=img[88,142,1] red=img[88,142,2]
2.修改图像
修改图像如果是灰度图像则直接赋值新像素即可,彩色图像依次给三个值赋值即可。
灰度图像:
img[88,142] = 255
彩色图像:
img[88,142, 0] = 255
img[88,142, 1] = 255
img[88,142, 2] = 255
彩色图像:方法二
img[88,142] = [255, 255, 255]
下面代码是获取像素及修改的操作。
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) test = img[88,142]print test img[88,142] = [255, 255, 255]print test #分别获取BGR通道像素 blue = img[88,142,0]print blue green = img[88,142,1]print green red = img[88,142,2]print red #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)
输出结果如下所示:
[158 107 64]
[255 255 255]
255
255
255
下面代码是将行为100到200、列150到250的像素区域设置为白色。
# -*- coding:utf-8 -*-import cv2 #读取图片 img = cv2.imread("test.jpg", cv2.IMREAD_UNCHANGED) #该区域设置为白色 img[100:200, 150:250] = [255,255,255] #显示图像 cv2.imshow("Demo", img) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows() #写入图像 cv2.imwrite("testyxz.jpg", img)
运行结果如下图所示:
相关推荐:
Python零基础入门之八lambda的表达式和filter、map内置函数
Das obige ist der detaillierte Inhalt vonDie Grundlagen der Python-Bildverarbeitung und die Einführungsfunktionen von OpenCV. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!