入门opencv

Day1(图像添加形状与文字,图像的转化)

添加形状:

使用内置函数,详情查看链接:
添加链接描述
插入矩形的rectangle()非常重要,在后续的目标检测中我们通常会使用矩形将目标框出来。

添加文字:

当添加英文或数字时,可直接使用putText(),注意fontFace参数中的类型,可参考上述文档:
侵权立删

当插入中文时,就有些麻烦。因为putText函数并不能支持中文,所以我们需要先将opencv图片转化成PIL图片(因为opencv的图片采用BGR格式而PIL采用RGB,所以要先将BGR转化成RGB):

img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  #将opencv图片转化成PIL图片

在用PIL库中的函数进行文字的添加,再将其转化回opencv图片:

img = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)   #将PIL图片转化成opencv图片

完整代码如下:

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

img = cv2.imread('C:\\Users\\1\\PycharmProjects\\text\\1.jpeg')

img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  #将opencv图片转化成PIL图片

draw = ImageDraw.Draw(img)
fontText = ImageFont.truetype("C:\\Users\\1\\PycharmProjects\\text\\20090701\\arialuni.ttf", 100, encoding="utf-8")
draw.text((100, 100), "水晶猎龙", (255, 255, 255), font=fontText)

img = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)   #将PIL图片转化成opencv图片
cv2.namedWindow('image', 0)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果:
侵权立删
注意几个函数:

  1. cv2.cvtColor(image, 参数)
    通过参数的不同可将image转化成不同的格式
    部分常用参数
    2.Image.fromarray(obj)
    实现数组到图像的转化
    在例子中实现的是RGB格式的opencv图像转化为PIL图像,猜想:所有图像的本质应该都是narry,但因为读取方式不同,同一个narry可能会被读取成不同格式的图像,就如这里使用PIL的函数读取了opencv的图像,所以结果应该是PIL格式的图像(若不将opencv的BGR转化为RGB,图像色彩将会出现失真)
    其实这个也好帅的
    3.imageDraw.Draw(img)
    iamgeDraw模块中的Draw函数,在图像上创建一个绘图对象
    4.imageFont.truetype(file, size)
    从指定文件中加载字体,并设定大小
    5.draw.text(位置, text, color, font=字体)
    就所指定位置而言感觉和常识有所出入,一般随便试一试找到合适的

图像转换

主要通过cv2.cvtColor函数进行,上文中已经介绍过。

转换后图像的储存:cv.imwrite(path,img)
可按指定路径path储存img图像,代码与效果如下:

import cv2
import numpy as np

img = cv2.imread('C:\\Users\\1\\PycharmProjects\\text\\1.jpeg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('img.jpg', img)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述
生成的图片文件会储存在程序目录下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值