Python OpenCV | cv2.putText () Methode

| | | | | | | | | | | | | | | |

OpenCV Python ist eine Python-Linkbibliothek, die entwickelt wurde, um Computer-Vision-Probleme zu lösen. Die Methode cv2.putText () wird verwendet, um eine Textzeichenfolge auf ein beliebiges Bild zu zeichnen.

cv2 puttext

< td class="paramname">lineType = LINE_8,
void cv::putText ( InputOutputArray  img,
const String &  text,
Punkt  org ,
int  fontFace,
double  fontScale,
< /td> Skalar  Farbe,
int  Dicke = 1 ,
int 
bool  bottomLeftOrigin = false 
)

Syntax: cv2.putText(image, text, org, font, fontScale, color[, width[, lineType[, bottomLeftOrigin]]]) Parameter: image : Es ist das Bild, auf das Text gezeichnet werden soll.

text: Textzeichenfolge, die gezeichnet werden soll.

org: Dies sind die Koordinaten der unteren linken Ecke der Textzeichenfolge im Bild. Die Koordinaten werden als Tupel von zwei Werten dargestellt, dh (X-Koordinatenwert, Y-Koordinatenwert).

Schriftart: Gibt die Schriftart an. Einige Schriftarten sind FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, usw.

fontScale: Skalierungsfaktor der Schriftart, der mit der schriftartspezifischen Basisgröße multipliziert wird.

Farbe: Dies ist die Farbe der zu zeichnenden Textzeichenfolge. Für BGR übergeben wir ein Tupel. zB: (255, 0, 0) für blaue Farbe.

Dicke: Es ist die Dicke der Linie in px.

Linientyp: Dies ist ein optionaler Parameter. Er gibt den Typ der zu verwendenden Linie an.

bottomLeftOrigin: Dies ist ein optionaler Parameter. Wenn dies wahr ist, befindet sich der Ursprung der Bilddaten in der unteren linken Ecke. Andernfalls befindet es sich in der oberen linken Ecke.

Rückgabewert: Gibt ein Bild zurück.


Wie schreibe ich Text auf ein Bild in Windows mit Python OpenCV2?

StackOverflow-Frage

Ich möchte Text einfügen ein Bild. Ich schreibe den Code wie folgt:

cv2.putText(image,"Hallo Welt!!!", (x,y), cv2.CV_FONT_HERSHEY_SIMPLEX, 2, 255) 

Es gibt einen FEHLER, der besagt, dass das `Modul`-Objekt kein Attribut `CV_FONT_HERSHEY_SIMPLEX` hat

Abfrage kann` t ich die Schriftart wie oben verwende? Ich habe im Internet gesucht, aber nur die Syntax gefunden, die sich auf Opencv C++ für initFont bezieht. Dann dachte ich daran, putText zu verwenden, um die Schriftart als Parameter zu übergeben. Aber es funktioniert bei mir nicht.

Irgendwelche Vorschläge?

Antwort:

Dieser Code verwendet cv2.putText, um Text über ein Bild zu legen. NumPy und OpenCV müssen installiert sein.

import numpy as np import cv2 # Erstellt ein schwarzes Bild  img = np.zeros((512,512,3), np.uint8) # Text schreiben font = cv2.FONT_HERSHEY_SIMPLEX bottomLeftCornerOfText = ( 10,500) fontScale = 1 fontColor = (1). ">255,255,255) lineType = 2 cv2.putText(img,`Hello World!`, bottomLeftCornerOfText, font, fontScale, fontColor, lineType) #Anzeigen das Bild cv2.imshow("img",img) #Bild speichern cv2.imwrite ("out.jpg", img) cv2.waitKey(0) 

Text mit Python cv2.puttext in die Mitte des Bildes schreiben

Wenn Sie die Form (Breite, Höhe) des Textes kennen, den Sie auf das Bild schreiben, können Sie ihn in die Mitte setzen am Bild ausgerichtet.

Die ungefähre Form des Textes im obigen Beispiel ist (268, 36). Möglicherweise müssen Sie die Form eines bestimmten Textes mit Paint oder einer anderen Anwendung finden.

import numpy as np import cv2 image = cv2.imread(`sample.png`,cv2.IMREAD_UNCHANGED) position = ( (int) (image.shape[1]/2 - 268/2), (int) (image.shape[0]/2 - 36/2)) cv2.putText( image, #numpy Array, in das Text geschrieben wird "Python-Beispiele", #Textposition, #Position, an der geschrieben werden muss cv2.FONT_HERSHEY_SIMPLEX, #Schriftfamilie 1, #Schriftgröße (209, 80, 0, 255), #Schriftfarbe 3) #Schriftstrich cv2.imwrite (`output.png`, Bild) 

Ausgabebild:

cv2 puttext

Python OpenCV puttext




cv2 putte xt Beispiel #

def detect(imgfile): origimg = cv2.imread(imgfile) img = preprocess(origimg) img = img.astype(np.float32) img = img.transpose((2, 0 , 1)) net.blobs[`data`].data[...] = img out = net.forward() box, conf, cls = postprocess(origimg, out) for i in range(len(box)) : p1 = (box[i][0], box[i][1]) p2 = (box[i][2], box[i][3]) cv2.rectangle(origimg, p1, p2, ( 0,255,0)) p3 = (max(p1[0], 15), max(p1[1], 15)) title = "%s:%.2f" % (COCO_CLASSES[int(cls[i])] , conf[i]) cv2.putText(Ursprung, Titel, p3, cv2.FONT_ITALIC, 0.6, (0, 255, 0), 1) cv2.imshow("SSD", Ursprung) k = cv2.waitKey(0) & 0xff #Exit wenn ESC gedrückt if k == 27: return False return True 

cv2.puttext Beispiel #

def drawBoundingBox(self,imgcv,result): für Box im Ergebnis : # print(box) x1,y1,x2,y2 = (box[`topleft`][`x`],box[`topleft`][`y`],box[`bottomright`][`x`] ,box[`bottomright`][`y`]) conf = box[`confidence`] # print(conf) label = box[`label`] if conf < self.predictThresh: Continue # print(x1,y1,x2 ,y2,conf, label) cv2.rectangle(imgcv,(x1,y1),(x2,y2),(0,255,0),6) labelSize=cv2.getTextSize(label,cv2.FONT_HERSHEY_COMPLEX,0.5,2) # print(`labelSize> >`,labelSize) _x1 = x1 _y1 = y1#+int(labelSize[0][1]/2) _x2 = _x1+labelSize[0][0] _y2 = y1-int(labelSize[0][1]) cv2.rectangle(imgcv,(_x1,_y1),(_x2,_y2),(0,255,0),cv2.FILLED) cv2.putText(imgcv,label,(x1,y1),cv2.FONT_HERSHEY_COMPLEX,0.5,(0 ,0,0),1) return imgcv 

cv2 puttext Beispiel #

def draw_labels(x, y, class_names=None): img = x.numpy() if img. ndim == 2 oder img.shape[2] == 1: img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) Boxen, Klassen = tf.split(y, (4, 1), Achse=-1) Klassen = class[..., 0] wh = np.flip(img.shape[0:2]) min_wh = np.amin(wh) if min_wh <= 100: font_size = 0.5 else: font_size = 1 for i in range( len(boxes)): x1y1 = tuple((np.array(boxes[i][0:2]) * wh).astype(np.int32)) x2y2 = tuple((np.array(boxes[i][ 2:4]) * wh).astype(np.int32)) img = cv2.rectangle(img, x1y1, x2y2, (255, 0, 0), 1) if class_names: img = cv2.putText(img, class_names[classes[i]], x1y1, cv2.FONT_HERSHEY_COMPLEX_SMALL, font_size, (0, 0, 255), 1) sonst: img = cv2.putText(img, str(classes[i]), x1y1, cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1) return img 

cv2.puttext Beispiel #

def draw_outputs(img, output, class_names=None): Boxen, Objekthaftigkeit, Klassen = gibt #boxes, Objekthaftigkeit, Klassen aus = Boxen[0], Objekthaftigkeit[0], Klassen[0] wh = np.flip(img.shape[0:2]) if img.ndim == 2 oder img.shape[ 2] == 1: img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) min_wh = np.amin(wh) if min_wh <= 100: font_size = 0.5 else: font_size = 1 for i in range(classes.shape[0 ]): x1y1 = tuple((np.array(boxes[i][0:2]) * wh).astype(np.int32)) x2y2 = tuple((np.array(boxes[i][2:4 ]) * wh).astype(np.int32)) img = cv2.rectangle(img, x1y1, x2y2, (255, 0, 0), 1) img = cv2.putText(img, `{}`.format( int(classes[i])), x1y1, cv2.FONT_HERSHEY_COMPLEX_SMALL, font_size, (0, 0, 255), 1) return img 

cv2 puttext Example #

def detect( imgfile): origimg = cv2.imread(imgfile) img = preprocess(origimg) img = img.astype(np.float32) img = img.transpose((2, 0, 1)) net.blobs[`data`].data[.. .] = img out = net.forward() box, conf, cls = postprocess(origimg, out) for i in range(len(box)): p1 = (box[i][0], box[i][ 1]) p2 = (box[i][2], box[i][3]) cv2.rectangle(origimg, p1, p2, (0,255,0)) p3 = (max(p1[0], 15) , max(p1[1], 15)) title = "%s:%.2f" % (CLASSES[int(cls[i])], conf[i]) cv2.putText(origimg, title, p3, cv2 .FONT_ITALIC, 0.6, (0, 255, 0), 1) cv2.imshow("SSD", origimg) k = cv2.waitKey(0) & 0xff #Beenden wenn ESC gedrückt wird if k == 27: return False return True 

cv2.puttext Beispiel #

def draw_boxes_frame(frame, frame_size, boxes_dicts, class_names, input_size): """Zeichnet erkannte Boxen in einem Videoframe""" boxes_dict = boxes_dicts[ 0] resize_factor = (frame_size[0] / input_size[1], frame_size[1] / input_size[0]) for cls in range(len(class_names)): boxes = boxes_dict[cls] color = (0, 0, 255 ) if np.size(boxes) != 0: für Box in Boxen: xy = box[:4] xy = [int(xy[i] * resize_factor[i % 2]) for i in range(4)] cv2.rectangle(frame, (xy[0], xy[1]), (xy [2], xy[3]), color[::-1], 2) (test_width, text_height), baseline = cv2.getTextSize(class_names[cls], cv2.FONT_HERSHEY_SIMPLEX, 0.75, 1) cv2.rectangle(frame , (xy[0], xy[1]), (xy[0] + test_width, xy[1] - text_height - baseline), color[::-1], width=cv2.FILLED) cv2.putText(frame , class_names[cls], (xy[0], xy[1] - baseline), cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 0), 1) 

cv2 puttext Example #

def ProcessFrame(self, frame): # segment arm region segment = self.SegmentArm(frame) # eine Kopie des segmentierten Bildes zum Zeichnen erstellen draw = cv2.cvtColor(segment, cv2.COLOR_GRAY2RGB) # etwas zeichnen Helfer für die richtige Platzierung der Hand cv2.circle(draw,(self.imgWidth/2,self.imgHeight/2),3,[255,102,0],2) cv2.rectangle(draw, (self.imgWidth/3,self. imgHeight/3), (self.imgWidth*2/3, self.imgHeight*2/3), [255,102,0],2) # Finde die Hülle des segmentierten Bereichs und finde basierend darauf # c Wölbungsdefekte [Konturen, Defekte] = self.FindHullDefects(segment) # Anzahl der Finger in Abhängigkeit von Konturen und Konvexitätsdefekten erkennen # Defekte zeichnen, die zu Fingern gehören grün, andere rot [nofingers,draw] = self.DetectNumberFingers(contours, Fehler, Draw) # Anzahl der Finger auf Bild drucken cv2.putText(draw, str(nofingers), (30,30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255)) return draw 

cv2.puttext Beispiel #

def vis_class(img, pos, class_str, bg_color): """Visualisiert die Klasse.""" font_color = cfg.VIS.SHOW_CLASS.COLOR font_scale = cfg.VIS.SHOW_CLASS.FONT_SCALE x0 , y0 = int(pos[0]), int(pos[1]) # Textgröße berechnen. txt = class_str font = cv2.FONT_HERSHEY_SIMPLEX ((txt_w, txt_h), _) = cv2.getTextSize(txt, font, font_scale, 1) # Texthintergrund platzieren. back_tl = x0, y0 - int(1.3 * txt_h) back_br = x0 + txt_w, y0 cv2.rectangle(img, back_tl, back_br, bg_color, -1) # Text anzeigen. txt_tl = x0, y0 - int(0.3 * txt_h) cv2.putText(img, txt, txt_tl, font, font_scale, font_color, lineType=cv2.LINE_AA) return img 

cv2 puttext Beispiel #

def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plottet einen Begrenzungsrahmen auf dem Bild img tl = line_thickness or round(0.002 * (img.shape[0] + img. shape[1]) / 2) + 1 # Linienstärke color = color oder [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x [1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, Thickness=tl) if label: tf = max(tl - 1, 1) # Schriftstärke t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, width=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 cv2.rectangle(img, c1, c2, color, -1) # gefüllt cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255 , 255], Thickness=tf, lineType=cv2.LINE_AA) 

cv2.puttext Example #

def vis_det_and_mask(im, class_name, dets, masks, thresh=0.8): " ""Visuelles Debugging von Erkennungen.""" n um_dets = np.minimum(10, dets.shape[0]) colors_mask = random_colors(num_dets) colors_bbox = np.round(np.random.rand(num_dets, 3) * 255) # Rois nach Koordinaten sortieren, oben zeichnen bbox first draw_mask = np.zeros(im.shape[:2], dtype=np.uint8) for i in range(1): bbox = tuple(int(np.round(x)) for x in dets[i, :4]) mask = masks[i,:,:] full_mask = unmold_mask(mask, bbox, im.shape) score = dets[i, -1] if score > thresh: word_width = len(class_name) cv2.rectangle( im, bbox[0:2], bbox[2:4], colors_bbox[i], 2) cv2.rectangle(im, bbox[0:2], (bbox[0] + 18 + word_width*8, bbox[ 1]+15), colors_bbox[i], Thickness=cv2.FILLED) apply_mask(im, full_mask, draw_mask, colors_mask[i], 0.5) draw_mask += full_mask cv2.putText(im, `%s` % (class_name) , (bbox[0]+5, bbox[1] + 12), cv2.FONT_HERSHEY_PLAIN, 1.0, (255,255,255), Thickness=1) return im 

Wir hoffen, dass dieser Artikel Ihnen geholfen hat, das Problem zu lösen. Sehen Sie sich neben Python OpenCV | cv2.putText () Methode auch andere __del__-bezogene Themen an.

Möchten Sie sich in Python auszeichnen? Sehen Sie sich unseren Rückblick auf die besten Python-Online-Kurse 2022 an. Wenn Sie an Data Science interessiert sind, sehen Sie sich auch an, wie Sie Programmieren in R lernen.

Dieses Material ist übrigens auch in anderen Sprachen verfügbar:



Davies Jackson

Singapore | 2022-11-29

Vielleicht gibt es andere Antworten? Was bedeutet Python OpenCV | cv2.putText () Methode genau bedeutet?. Werde es in meiner Bachelorarbeit verwenden

Anna Robinson

Boston | 2022-11-29

Einfach und klar formuliert. Danke für den Austausch. Python OpenCV | cv2.putText () Methode und andere Fragen mit zeros war immer mein Schwachpunkt 😁. Werde es in meiner Bachelorarbeit verwenden

Frank Ungerschaft

Moscow | 2022-11-29

Vielleicht gibt es andere Antworten? Was bedeutet Python OpenCV | cv2.putText () Methode genau bedeutet?. Melde mich morgen mit Rückmeldung

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically