Python OpenCV | cv2.putText () yöntemi

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

OpenCV Python, bilgisayarla görme sorunlarını çözmek için tasarlanmış bir Python bağlantı kitaplığıdır. cv2.putText () yöntemi, herhangi bir görüntü üzerine bir metin dizisi çizmek için kullanılır.

cv2 puttext

< td class="paramname">lineType = LINE_8,
void cv::putText ( InputOutputArray  img,
const String &  metin,
Nokta  org ,
int  fontFace,
double  fontScale,
< /td> Skalar  renk,
int  kalınlık = 1 ,
int 
bool  bottomLeftOrigin = false 
)

Sözdizimi: cv2.putText(image, text, org, font, fontScale, color[, Thickness[, lineType[, bottomLeftOrigin]]]) Parametreler: image : Üzerine metnin çizileceği resimdir.

metin: Çizilecek metin dizesi.

org: Görüntüdeki metin dizesinin sol alt köşesinin koordinatlarıdır. Koordinatlar, iki değerin demetleri olarak temsil edilir, yani (X koordinat değeri, Y koordinat değeri).

font: Yazı tipini belirtir. Yazı tiplerinden bazıları FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAIN, vb.`dir.

fontScale: Yazı tipine özgü taban boyutu ile çarpılan yazı tipi ölçek faktörü.

color : Çizilecek metin dizisinin rengidir. BGR için bir Tuple geçiyoruz. örneğin: (255, 0, 0) mavi renk için.

kalınlık: Çizginin piksel cinsinden kalınlığıdır.

lineType: Bu isteğe bağlı bir parametredir. Kullanılacak satırın türünü verir.

bottomLeftOrigin: Bu isteğe bağlı bir parametredir. Doğru olduğunda, görüntü verilerinin kaynağı sol alt köşededir. Aksi takdirde, sol üst köşededir.

Dönüş Değeri: Bir resim döndürür.


Python OpenCV2 kullanarak pencerelerde bir görüntüye nasıl metin yazılır?

StackOverflow sorusu

Bir Resmin üzerine biraz metin koymak istiyorum. Kodu şu şekilde yazıyorum:

cv2.putText(image,"Merhaba Dünya!!!", (x,y), cv2. CV_FONT_HERSHEY_SIMPLEX, 2, 255) 

`Module` nesnesinin `CV_FONT_HERSHEY_SIMPLEX` özelliği yok diyerek HATA veriyor

Sorgu Yapılabilir` t Yazı tipini yukarıdaki gibi mi kullanıyorum? İnternette arama yaptım, ancak initFont için yalnızca Opencv C++ ile ilgili sözdizimini buldum. Sonra yazı tipini parametre olarak geçirmek için putText kullanmayı düşündüm. Ama benim için çalışmıyor.

Herhangi bir öneriniz var mı?

Yanıt:

Bu kod, bir görüntünün üzerine metin yerleştirmek için cv2.putText kullanır. NumPy ve OpenCV`nin kurulu olması gerekir.

içe aktar

 numpy as np içe aktar cv2 # Siyah bir görüntü oluşturun  img = np.zeros((512,512,3), np.uint8) # Biraz Metin Yaz yazı tipi = cv2. FONT_HERSHEY_SIMPLEX bottomLeftCornerOfText = (10,500) fontScale = 1 fontColor = (255,255,255) lineType = 2 cv2.putText(img,`Merhaba Dünya! `, bottomLeftCornerOfText, yazı tipi , fontScale, fontColor, lineType) #Görüntüyü görüntüle cv2.imshow("img",img) #Resmi kaydet cv2.imwrite("out.jpg", img) cv2.waitKey(0) 

Python cv2.puttext kullanarak görüntünün ortasına Metin yazın

Şekli (genişlik) biliyorsanız , yükseklik) resmin üzerine yazdığınız metnin ortasını resmin üzerine gelecek şekilde yerleştirebilirsiniz.

Örnekteki metnin yaklaşık şekli a bove (268, 36). Paint veya başka bir uygulamayı kullanarak belirli bir metnin şeklini bulmanız gerekebilir.

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( resim, üzerine metnin yazıldığı #numpy dizi "Python Örnekleri", #metin konumu, yazmanın cv2`yi başlatması gereken #pozisyon.FONT_HERSHEY_SIMPLEX, #font ailesi 1, #font size (209, 80, 0, 255), #font color 3) #font kontur cv2.imwrite (`output.png`, resim) 

Çıktı resmi:

cv2 puttext

Python OpenCV puttext




cv2 koy metin Örnek #

def tespit(imgfile): origimg = cv2.imread(imgfile) img = önişlem(origimg) img = img.astype(np.float32) img = img.transpose((2, 0 , 1)) net.blobs[`data`].data[...] = img out = net.forward() box, conf, cls = i in range(len(box)) için postprocess(origimg, out) : p1 = (kutu[i][0], kutu[i][1]) p2 = (kutu[i][2], kutu[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(origimg, başlık, p3, cv2. FONT_ITALIC, 0.6, (0, 255, 0), 1) cv2.imshow("SSD", origimg) k = cv2.waitKey(0) & 0xff #Exit, eğer k == 27 ise, ESC`ye basılırsa: return False return True 

cv2.puttext Örnek #

def drawBoundingBox(self,imgcv,result): sonuç kutusu için: # print(box) x1,y1,x2,y2 = (kutu[` topleft`][`x`],kutu[`topleft`][`y`],kutu[`alt`][`x`],kutu[`alt`][`y`]) conf = kutu[` güven`] # print(conf) label = kutu[`label`] if conf < self.predictThresh: devam # 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 Örnek #

def draw_labels(x, y, class_names=Yok): img = x.numpy() if img.ndim == 2 veya img.shape[2] == 1: img = cv2.cvtColor(img, cv2. COLOR_GRAY2BGR) kutuları, sınıflar = tf.split(y, (4, 1), axis=-1) sınıflar = sınıflar[..., 0] wh = np.flip(img.shape[0:2]) min_wh = np.amin(wh) ise min_wh <= 100: font_size = 0,5 başka: font_size = 1 for i in range(len(boxes)): x1y1 = tuple((np.array(boxes[i][0:2]) * wh).astype(np.int32)) x2y2 = demet((np.array(kutular[i][2:4]) * wh).astype(np.int32)) img = cv2.rectangle(img, x1y1 , x2y2, (255, 0, 0), 1) ise sınıf_adları: img = cv2.putText(img, sınıf_adları[sınıflar[i]], x1y1, cv2.FONT_HERSHEY_COMPLEX_SMALL, font_size, (0, 0, 255), 1) else: img = cv2.putText(img, str(classes[i]), x1y1, cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1) return img 

cv2.puttext Örnek #

def draw_outputs(img, outputs, class_names=None): kutular, nesnelik, sınıflar = çıktılar #kutular, nesnelik, sınıflar = kutular[0], nesnelik[0], sınıflar[0] wh = np .flip(img.shape[0:2]) ise img.ndim == 2 veya img.shape[2] == 1: img = cv2.cvtColor(img, cv2. COLOR_GRAY2BGR) min_wh = np.amin(wh) min_wh <= 100 ise: font_size = 0,5 başka: font_size = 1 i in range(classes.shape[0]): x1y1 = tuple((np.array(boxes[i][0:2]) * wh).astype(np.int32)) x2y2 = demet((np.array(kutular[i][2:4]) * wh).astype(np.int32)) img = cv2.rectangle(img, x1y1, x2y2, (255, 0, 0), 1) img = cv2.putText(img, `{}`.format(int(sınıflar[i])), x1y1, cv2. FONT_HERSHEY_COMPLEX_SMALL, font_size, (0, 0, 255), 1) return img 

cv2 puttext Örnek #

def algılama(imgfile): origimg = cv2.imread(imgfile) img = önişlem(origimg) img = img.astype(np.float32) img = img.transpose((2, 0, 1)) net.blobs[`veri`].veri[...] = img çıkışı = net.forward () box, conf, cls = i in range(len(box) için postprocess(origimg, out)): p1 = (kutu[i][0], kutu[i][1]) p2 = (kutu[i ][2], kutu[i][3]) cv2.rectangle(origimg, p1, p2, (0,255,0)) p3 = (max(p1[0], 15), max(p1[1], 15) )) title = "%s:%.2f" % (SINIFLAR[int(cls[i])], conf[i]) cv2.putText(origimg, başlık, p3, cv2. FONT_ITALIC, 0.6, (0, 255 , 0), 1) cv2.imshow("SSD", origimg) k = cv2.waitKey(0) & 0xff #Exit eğer ESC`ye basılırsa k == 27: False return True 

cv2. puttext Örnek #

def draw_boxes_frame(frame, frame_size, box_dicts, class_names, input_size): """Bir video karesinde algılanan kutuları çizer""" box_dict = box_dicts[0] resize_factor = (frame_size[0] / input_size[1], frame_size[1] / inp ut_size[0]) cls in range(len(class_names)): kutular = box_dict[cls] color = (0, 0, 255) if np.size(boxes) ! = 0: kutu içindeki kutu için: xy = kutu[: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], kalınlık =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 Örnek #

def ProcessFrame(self, frame): # segment arm bölge segment = self.SegmentArm(frame) # çizimde çizilecek parçalı görüntünün bir kopyasını yapın = cv2.cvtColor (segment, cv2. COLOR_GRAY2RGB) # eli doğru yerleştirmek için bazı yardımcılar çizin 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) # parçalı alanın gövdesini bulun , ve buna dayalı olarak # dışbükeylik kusurlarını bulun [konturlar, kusurlar] = self.FindHullDefects(segment) # konturlara ve dışbükeylik kusurlarına bağlı olarak parmak sayısını tespit edin # parmaklara ait olan kusurları yeşil, diğerleri kırmızı [nofingers,draw] ] = self.DetectNumberFingers(konturlar, kusurlar, çizim) # resimdeki parmak sayısını yazdır cv2.putText(draw, str(nofinger), (30,30), cv2. FONT_HERSHEY_SIMPLEX, 1, (255,255,255)) dönüş çekme 

cv2.puttext Örnek #

def vis_class(img, pos, class_str, bg_color): """Sınıfı görselleştirir."" " font_color = cfg.VIS.SHOW_CLASS.COLOR font_scale = cfg.VIS.SHOW_CLASS.FONT_SCALE x0, y0 = int(kon[0]), int(kon[1]) # Metin boyutunu hesaplayın. txt = class_str yazı tipi = cv2. FONT_HERSHEY_SIMPLEX ((txt_w, txt_h), _) = cv2.getTextSize(txt, font, font_scale, 1) # Metin arka planını yerleştir. 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) # Metni göster. 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 Örnek #

def plot_one_box(x, img, color=Yok, label=Yok, line_thickness=Yok): # Görüntü üzerinde bir sınırlayıcı kutu çizer img tl = line_thickness veya round(0.002 * (img.shape[0] + img. şekil[1]) / 2) + 1 # çizgi kalınlığı renk = renk veya [random.randint(0, 255) için _ in range(3)] c1, c2 = (int(x[0]), int(x) [1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, kalınlık=tl) eğer etiket: tf = max(tl - 1, 1) # yazı tipi kalınlığı t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, kalınlık=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 cv2.rectangle(img, c1, c2, color, -1) # doldurulmuş cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255 , 255], kalınlık=tf, lineType=cv2. LINE_AA) 

cv2.puttext Örnek #

def vis_det_and_mask(im, class_name, dets, masks, thresh=0.8): """Algılamalarda görsel hata ayıklama.""" num_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`i koordinatlara göre sıralayın, önce üstteki kutuyu çizin draw_mask = np.zeros(im.shape[:2], dtype=np.uint8) i in range(1) için: bbox = tuple(int(np.round(x)) için x dets[i,:4] ]) mask = masks[i,:,:] full_mask = unmold_mask(mask, bbox, im.shape) skor = dets[i, -1] ise skor > 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), renkler_bbox[i], kalınlık=cv2. FILLED) application_mask(im, full_mask, draw_mask, colors_mask[i], 0.5) draw_mask += full_mask cv2.putText(im, `%s` % (sınıf_adı), ( bbox[0]+5, bbox[1] + 12), cv2.FONT_HERSHEY_PLAIN, 1.0, (255,255,255), kalınlık=1) dönüş im 

Bu makalenin sorunu çözmenize yardımcı olduğunu umuyoruz. Python OpenCV | cv2.putText () yöntemi dışında, __del__ ile ilgili diğer konulara bakın.

Python'da başarılı olmak ister misiniz? en iyi Python çevrimiçi kursları 2022 hakkındaki incelememize bakın. Veri Bilimi ile ilgileniyorsanız, R'de programlamayı nasıl öğreneceğinizi de kontrol edin.

Bu arada, bu materyal diğer dillerde de mevcuttur:



Marie Chamberlet

Abu Dhabi | 2022-11-29

Kodlama mülakatıma hazırlanıyordum, bunu açıkladığınız için teşekkürler - Python'da Python OpenCV | cv2.putText () yöntemi en basit olanı değil. Geri bildirim ile yarın geri dönecek

Ken Robinson

California | 2022-11-29

Açıkladığın için teşekkürler! Ben Python OpenCV | cv2.putText () yöntemi'a takılıp kalmıştım. birkaç saattir uğraşıyorum, sonunda hallettim 🤗. Lisans tezimde kullanacağım

Boris Innsbruck

Massachussetts | 2022-11-29

Basitçe ifade edilmiş ve açık. Paylaşım için teşekkürler. Python OpenCV | cv2.putText () yöntemi ve zeros ile ilgili diğer konular her zaman benim zayıf noktam olmuştur 😁. Umarım artık ortaya çıkmaz

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


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