国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印

這篇具有很好參考價(jià)值的文章主要介紹了【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理

1. 概述


在OpenCV中,調(diào)用cv2.putText()函數(shù)可添加文字到指定位置,對(duì)于需要在圖片中加入文字的場(chǎng)景提供了一種比較直接方便的方式。

注意:OpenCV 不支持顯示中文字符,使用 cv2.putText() 時(shí)添加的文本字符串不能包含中文字符(包括中文標(biāo)點(diǎn)符號(hào))

2. cv2.putText()函數(shù)參數(shù)

其函數(shù)原型如下所示:

cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

上述參數(shù)分別表示:

  • img:需要繪制文本的圖像;

  • text:要繪制的文本內(nèi)容;

  • org:表示要繪制的位置,圖像中文本字符串的左下角;可以用一個(gè)元祖來(lái)表示x、y坐標(biāo),例如(10, 100)表示x=10,y=100。

  • fontFace:字體類型,如cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN等;對(duì)應(yīng)的字體類型如下:

     cv2.FONT_ITALIC:斜體字的標(biāo)志
     cv2.FONT_HERSHEY_PLAIN:小尺寸無(wú)襯線字體
     cv2.FONT_HERSHEY_SIMPLEX:正常大小的無(wú)襯線字體
     cv2.FONT_HERSHEY_DUPLEX:正常大小的無(wú)襯線字體(比FONT_HERSHEY_SIMPLEX更復(fù)雜)
     cv2.FONT_HERSHEY_COMPLEX:正常大小的襯線字體
     cv2.FONT_HERSHEY_TRIPLEX:正常大小的襯線字體(比FONT_HERSHEY_COMPLEX更復(fù)雜)
     cv2.FONT_HERSHEY_SCRIPT_SIMPLEX:手寫體字體
     cv2.FONT_HERSHEY_SCRIPT_COMPLEX(比FONT_HERSHEY_SCRIPT_SIMPLEX的更復(fù)雜)
    
  • fontScale:字體的大小,字體比例因子乘以font-specific基本大小;

  • color:文本字體顏色,設(shè)置三通道的元組BGR,比如(255,0,0)

    常見顏色:
    red (0, 0, 255)
    green (0, 128, 0)
    blue (255, 0, 0)
    yellow (0, 255, 255)
    purple (128, 0, 128)
    orange (0, 165, 255)
    white (255, 255, 255)
    black (0, 0, 0)
    gray (128, 128, 128)

  • thickness:字體粗細(xì),默認(rèn)為1;

  • lineType:線條類型,默認(rèn)為cv2.LINE_AA;

  • bottomLeftOrigin:坐標(biāo)原點(diǎn),如果為真,則圖像數(shù)據(jù)原點(diǎn)位于左下角,否則它在左上角;
    其中,org定義了文本起始位置,可以用一個(gè)元祖來(lái)表示x、y坐標(biāo),例如(10, 100)表示x=10,y=100。

3. 圖像上繪制非中文文字

import cv2

img = cv2.imread('test.png')  # 讀取彩色圖像(BGR)
cv2.putText(img, '@Elaine', (300, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 128), 2, cv2.LINE_AA)
cv2.imshow('test', img)  # 顯示疊加圖像
cv2.waitKey()  # 等待按鍵命令

效果展示:
【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理

4. 圖像上繪制中文文字

(1) 如果不做處理,直接使用cv2.putText()展示,中文會(huì)變成?,OpenCV 不支持顯示中文字符。

import cv2

img = cv2.imread('test.png')  # 讀取彩色圖像(BGR)
cv2.putText(img, '@Elaine猿', (300, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 128), 2, cv2.LINE_AA)
cv2.imshow('test', img)  # 顯示疊加圖像
cv2.waitKey()  # 等待按鍵命令

效果展示:
【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理

(2) 在圖像中添加中文字符,可以使用 opencv+PIL 實(shí)現(xiàn)

注意Image.fromarray()與np.array()之間的相互轉(zhuǎn)化
參考鏈接:https://blog.csdn.net/qq_41273999/article/details/134569426?spm=1001.2014.3001.5501

import cv2
from PIL import Image, ImageDraw, ImageFont
import numpy as np

img = cv2.imread('test.png')  # 讀取彩色圖像(BGR)
imgPIL = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
# cv2.putText(img, '@Elaine猿', (300, 40), cv2.FONT_HERSHEY_COMPLEX, 1, (128, 128, 128), 2, cv2.LINE_AA)

drawPIL = ImageDraw.Draw(imgPIL)
textSize = 35
fontText = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")
pos = (300, 40)  # (left, top),字符串左上角坐標(biāo)
text = '@Elaine猿'
color = (128, 128, 128)  # gray
drawPIL.text(pos, text, color, font=fontText)

imgPutText = cv2.cvtColor(np.asarray(imgPIL), cv2.COLOR_RGB2BGR)
cv2.imshow('test', imgPutText)  # 顯示疊加圖像
cv2.waitKey()  # 等待按鍵命令

效果展示:
【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理

5. 圖片上添加傾斜透明文字水印

方法1:

import numpy as np
from PIL import Image, ImageDraw, ImageFont
import cv2

# 讀取彩色圖像(BGR)
img = cv2.imread('test.png')
imgPIL = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

# 圖片的顏色模式設(shè)置為RGBA
img_RGBA = imgPIL.convert('RGBA')

# 新建一個(gè)和原圖大小一樣的水印覆蓋層
text_overlay = Image.new('RGBA', img_RGBA.size, (255, 255, 255, 0))

# 創(chuàng)建一個(gè)畫圖對(duì)象
drawPIL = ImageDraw.Draw(text_overlay)

# 設(shè)置字體大小
textSize = 35
fontText = ImageFont.truetype("font/simsun.ttc", textSize, encoding="utf-8")

# 在指定位置畫上文字水印
box = drawPIL.textbbox((0, 0), '@Elaine猿', font=fontText)
text_width, text_height = box[2], box[3]
x = img_RGBA.width / 2 - text_width / 2
y = img_RGBA.height / 2 - text_height / 2

# fill參數(shù)的(128, 128, 128)為顏色gray, 最后一位為透明度
drawPIL.text((x, y), '@Elaine猿', font=fontText, fill=(128, 128, 128, 160))

# 設(shè)置文本旋轉(zhuǎn)角度
angle = 20
# 中心點(diǎn)
center = (img_RGBA.width / 2, img_RGBA.height / 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
text_overlay = cv2.warpAffine(np.array(text_overlay), M, (img_RGBA.width, img_RGBA.height), flags=cv2.INTER_CUBIC,
                              borderMode=cv2.BORDER_REPLICATE)
text_overlay = Image.fromarray(text_overlay)

# 合成透明圖像和背景不透明圖像
img_RGBA = Image.alpha_composite(img_RGBA, text_overlay)
img_RGB = img_RGBA.convert('RGB')

imgPutText = cv2.cvtColor(np.asarray(img_RGB), cv2.COLOR_RGB2BGR)
cv2.imshow('test', imgPutText)  # 顯示疊加圖像
cv2.waitKey()  # 等待按鍵命令

效果展示:
【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理


方法二:

import numpy as np
from PIL import Image, ImageDraw, ImageFont
import cv2

# 打開圖片Image格式
img = Image.open('test.png')

# 圖片的顏色模式設(shè)置為RGBA
img_RGBA = img.convert('RGBA')

# 新建一個(gè)和原圖大小一樣的水印覆蓋層
text_overlay = Image.new('RGBA', img_RGBA.size, (255, 255, 255, 0))

# 創(chuàng)建一個(gè)畫圖對(duì)象
image_draw = ImageDraw.Draw(text_overlay)
# 設(shè)置字體大小
text_size = 20
font = ImageFont.truetype("font/simsun.ttc", text_size, encoding="utf-8")

# 在指定位置畫上文字水印
text = '@Elaine猿'
box = image_draw.textbbox((0, 0), text, font=font)
text_width, text_height = box[2], box[3]
x = img_RGBA.width / 2 - text_width / 2
y = img_RGBA.height / 2 - text_height / 2
# fill參數(shù)的(128, 128, 128)為顏色gray, 最后一位為透明度
image_draw.text((x, y), text, font=font, fill=(128, 128, 128, 800))

# 設(shè)置文本旋轉(zhuǎn)角度
angle = 30
# 中心點(diǎn)
center = (img_RGBA.width / 2, img_RGBA.height / 2)
M = cv2.getRotationMatrix2D(center, angle, 1.0)
text_overlay = cv2.warpAffine(np.array(text_overlay), M, (img_RGBA.width, img_RGBA.height), flags=cv2.INTER_CUBIC,
                              borderMode=cv2.BORDER_REPLICATE)
text_overlay = Image.fromarray(text_overlay)

# 合成透明圖像和背景不透明圖像
img_RGBA = Image.alpha_composite(img_RGBA, text_overlay)
img_RGB = img_RGBA.convert('RGB')
img_RGB.show()

【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印,OpenCV,opencv,人工智能,計(jì)算機(jī)視覺,python,圖像處理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758631.html

到了這里,關(guān)于【OpenCV】圖像上繪制文字cv2.putText()函數(shù)用法,添加傾斜透明水印的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv基礎(chǔ)48-繪制圖像輪廓并切割示例-cv2.drawContours()

    opencv基礎(chǔ)48-繪制圖像輪廓并切割示例-cv2.drawContours()

    在 OpenCV 中,可以使用函數(shù) cv2.drawContours()繪制圖像輪廓。該函數(shù)的語(yǔ)法格式是: image=cv2.drawContours( image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]] ) 其中,函數(shù)的返回值為 image,表示目標(biāo)圖像,即繪制了邊緣的原始圖像。 該函數(shù)有如下參數(shù): image:待

    2024年02月13日
    瀏覽(33)
  • opencv-19 圖像色彩空間轉(zhuǎn)換函數(shù)cv2.cvtColor()

    opencv-19 圖像色彩空間轉(zhuǎn)換函數(shù)cv2.cvtColor()

    cv2.cvtColor() 函數(shù)是 OpenCV 中用于圖像顏色空間轉(zhuǎn)換的函數(shù)。它允許你將圖像從一個(gè)色彩空間轉(zhuǎn)換為另一個(gè)色彩空間。在 Python 中,你可以使用這個(gè)函數(shù)來(lái)實(shí)現(xiàn)不同色彩空間之間的轉(zhuǎn)換。 函數(shù)的基本語(yǔ)法為: 參數(shù)說(shuō)明: src:輸入圖像,可以是 NumPy 數(shù)組或 OpenCV 中的 Mat 對(duì)象。

    2024年02月15日
    瀏覽(24)
  • 使用OpenCV的cv2.imread函數(shù)讀取圖像介紹

    在計(jì)算機(jī)視覺和圖像處理應(yīng)用中,讀取圖像是一個(gè)常見的操作。OpenCV是一個(gè)廣泛使用的圖像處理庫(kù),它提供了 cv2.imread 函數(shù),用于讀取圖像。本文將詳細(xì)介紹如何使用 cv2.imread 函數(shù),包括參數(shù)和用法。 首先,確保你已經(jīng)安裝了OpenCV庫(kù)。你可以使用以下命令來(lái)安裝OpenCV(如果尚

    2024年02月05日
    瀏覽(35)
  • 【Python/Opencv】圖像權(quán)重加法函數(shù):cv2.addWeighted()詳解

    【Python/Opencv】圖像權(quán)重加法函數(shù):cv2.addWeighted()詳解

    在OpenCV圖像加法cv2.add函數(shù)詳解詳細(xì)介紹了圖像的加法運(yùn)算。 除了這種加法外,OpenCV還提供了帶權(quán)重的加法,即兩副圖像的像素通道值相加時(shí)各自按一定的權(quán)重比例取值來(lái)相加。 假設(shè)有2個(gè)圖像矩陣src1和src2,在兩個(gè)圖像融合時(shí),各自的權(quán)重分別為alpha和beta,則二者融合后的目

    2024年02月15日
    瀏覽(164)
  • opencv-26 圖像幾何變換04- 重映射-函數(shù) cv2.remap()

    opencv-26 圖像幾何變換04- 重映射-函數(shù) cv2.remap()

    重映射(Remapping)是圖像處理中的一種操作,用于將圖像中的像素從一個(gè)位置映射到另一個(gè)位置。重映射可以實(shí)現(xiàn)圖像的平移、旋轉(zhuǎn)、縮放和透視變換等效果。它是一種基于像素級(jí)的圖像變換技術(shù),可以通過定義映射關(guān)系來(lái)改變圖像的幾何形狀和外觀。 在重映射中,我們需要

    2024年02月15日
    瀏覽(26)
  • 關(guān)于opencv中cv2.imread函數(shù)讀取的圖像shape問題

    關(guān)于opencv中cv2.imread函數(shù)讀取的圖像shape問題

    圖像坐標(biāo)系是(w,h),w為x軸,h為y軸,(x,y) 但opencv讀出來(lái)的數(shù)組卻正好相反,是(h,w,3),(y,x,3) 所以這里會(huì)有一個(gè)轉(zhuǎn)換 實(shí)則轉(zhuǎn)換為圖像坐標(biāo)系時(shí),要轉(zhuǎn)置一下,或者image.shape[::-1] 切片操作 [start,endstep],其中:- start: 表示開始的下標(biāo),如果省略默認(rèn)為 0 - end: 表示結(jié)束的下標(biāo)(不包含

    2024年02月12日
    瀏覽(24)
  • 詳解cv2.addWeighted函數(shù)【使用 OpenCV 添加(混合)兩個(gè)圖像-Python版本】

    詳解cv2.addWeighted函數(shù)【使用 OpenCV 添加(混合)兩個(gè)圖像-Python版本】

    有的時(shí)候我們需要將兩張圖片在alpha通道進(jìn)行混合,比如深度學(xué)習(xí)數(shù)據(jù)集增強(qiáng)方式MixUp。OpenCV的 addWeighted 提供了相關(guān)操作,此篇博客將詳細(xì)介紹這個(gè)函數(shù),并給出代碼示例。???? o u t p u t I m g = s a t u r a t e ( α ? i n p u t I m g 1 + β ? i n p u t I m g 2 + γ ) rm outputImg=saturate( al

    2024年02月06日
    瀏覽(93)
  • opencv 基礎(chǔ)50-圖像輪廓學(xué)習(xí)03-Hu矩函數(shù)介紹及示例-cv2.HuMoments()

    opencv 基礎(chǔ)50-圖像輪廓學(xué)習(xí)03-Hu矩函數(shù)介紹及示例-cv2.HuMoments()

    Hu 矩(Hu Moments)是由計(jì)算機(jī)視覺領(lǐng)域的科學(xué)家Ming-Kuei Hu于1962年提出的一種圖像特征描述方法。這些矩是用于描述圖像形狀和幾何特征的不變特征,具有平移、旋轉(zhuǎn)和尺度不變性,適用于圖像識(shí)別、匹配和形狀分析等任務(wù)。 Ming-Kuei Hu在其論文中提出了七個(gè)用于形狀描述的獨(dú)特

    2024年02月13日
    瀏覽(26)
  • OpenCV筆記:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 與 繪制矩形 cv2.rectangle() 方法介紹

    OpenCV筆記:模板匹配 cv2.matchTemplate()、cv2.minMaxLoc() 與 繪制矩形 cv2.rectangle() 方法介紹

    ????????模板匹配是用來(lái)在一副大圖中搜尋查找模版圖像位置的方法。繪制矩形是用來(lái)將模版圖像的匹配結(jié)果展示出來(lái)的方法。 ????????模板匹配實(shí)現(xiàn)簡(jiǎn)單(2~3行代碼),計(jì)算效率高,不需要執(zhí)行閾值化、邊緣檢測(cè)等操作來(lái)生成二值化圖像。 但是: 如果輸入圖像中存

    2024年02月04日
    瀏覽(94)
  • OpenCV中cv2的常見用法

    使用函數(shù)cv2.imread(filepath,flags)讀入一副圖片 filepath:要讀入圖片的完整路徑 flags:讀入圖片的標(biāo)志 cv2.IMREAD_COLOR:默認(rèn)參數(shù),讀入一副彩色圖片,忽略alpha通道 cv2.IMREAD_GRAYSCALE:讀入灰度圖片 cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道 使用函數(shù)cv2.imshow(wname,img)顯

    2024年02月10日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包