opencv安装
pip install opencv-python
使用
import cv2
# -*- coding: utf-8 -*-
import cv2
image = cv2.imread("demo.jpg")
# 获得图像的形状,返回值是一个包含行数,列数,通道数的元组
print(image.shape)
print(image.size)
# 图像的数据类型
print(image.dtype)
# 各参数依次是:照片/添加的文字/左上角坐标/字体/字体大小/颜色/字体粗细
cv2.putText(image, "woman", (200, 500), cv2.FONT_HERSHEY_COMPLEX, 7, (0, 0, 255), thickness=10)
# 画一条蓝色的线,起始坐标,终点坐标,颜色/字体粗细
cv2.line(image, (0, 0), (500, 500), (255, 0, 0), 5)
# 显示图像,大小为600*600
cv2.imshow("demo", cv2.resize(image, (600, 600)))
# 保存到本地,保存大小为600*600
cv2.imwrite("copy.jpg", cv2.resize(image, (600, 600)))
# 0表示一直显示
cv2.waitKey(0)
# 销毁所有窗口
cv2.destroyAllWindows()
# 画出灰度图
import cv2
from matplotlib import pyplot as plt
img =cv2.imread('copy.jpg', 0)
plt.imshow(img,cmap='gray', interpolation='bicubic')
plt.xticks([]),plt.yticks([]) # to hide tick values on X and Y axis
plt.show()
cv2.cvtColor 图像空间颜色转换
opencv默认的imread是以BGR的方式进行存储的,而matplotlib的imshow默认则是以RGB格式展示
图片url链接或者本地图片,转换成numpy.array格式的图片
# 图片url
image_path = 'http:// xxxx'
resp = requests.get(image_path)
image = np.asarray(bytearray(resp.content), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
# 本地图片
image = cv2.imread(image_path)
cv2.imdecode()函数从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像。
在图片上画框
cv2.rectangle(img, (i[0], i[1]), (i[2], i[3]), (0, 255, 0), 2)
第一个参数:img是原图
第二个参数:(x,y)是矩阵的左上点坐标
第三个参数:(x+w,y+h)是矩阵的右下点坐标
第四个参数:(0,255,0)是画线对应的rgb颜色
第五个参数:2是所画的线的宽度
import cv2
import glob
from core.utils.load_utils import load_image
urls = glob.glob("D:/1/*")
a = [[1065, 762, 1094, 788], [1337, 769, 1376, 800]]
for url in urls:
img = load_image(url) # load_image方法是上面所说转换图片为numpy.array格式
for i in a:
cv2.rectangle(img, (i[0], i[1]), (i[2], i[3]), (0, 255, 0), 2)
cv2.imwrite('../data/test1.jpg', img)
RGB颜色值对应颜色
255, 255, 0 黄色
0, 0, 255 蓝色