Opencv对图片的基本操作

1.图像的读取 cv.imread(),cv.imshow(),cv.imwrite()

import cv2 as cv
import cv2
img = cv.imread('C://Users//86139//Pictures//Camera Roll//1.jpg', 1)
# 0 或者 cv.IMREAD_GRAYSCALE:表示以灰度模式读取图像,读取后图像是单通道的。
# 1 或者 cv.IMREAD_COLOR:这是默认值,表示以彩色模式(BGR 通道顺序)读取图像,读取后图像是三通道的。
cv2.imshow('yuan', img) # 显示图像
cv2.waitKey(0)
cv2.imwrite('grey_img', img)  # 保存
# # 图片属性
# print(img.shape)
# # height,width = img.shape
# print(img.dtype)
# print(img.size)  # 像素值大小

cv.waitKey()是一个键盘绑定函数。图片的属性不再赘述

2.图像通道分割与合并cv2.split,cv2.merge

# 通道分割与合并
b, g, r = cv2.split(img)  # 三原色分割
r = img[:,:,2]  # 单独在b传入 所有行 所有列 0表示蓝色 1表示绿色 2表示红色
img = cv2.merge((b, g, r))# 三原色合并
cv2.imshow('red', r)
cv2.waitKey(0)

这里的三原色不是代表看到的颜色

在这里插入图片描述

3.颜色转换cv2.cvtColor

# 颜色转换
img_grey = cv2.cvtColor(res,cv2.COLOR_BGR2GRAY)
cv2.imshow('img', res)
cv2.imshow('grey',img_grey)
cv2.waitKey(0)

具体转换的值在里面修改
在这里插入图片描述

4.图片截取

选中一片区域,一般在图像img中,前面代表y轴,后面代表x轴,这里用matplotlib的包来显示位置然后进行位置截取

# 图片截取
face = img[746:1214,147:621] # 前面代表y轴,后面代表x轴
plt.imshow(img, cmap='gray',interpolation='bicubic')
plt.xticks([]),plt.yticks([])
cv2.imshow("face",face)
plt.show()
cv.waitKey(0)

在这里插入图片描述

5.图片旋转,翻转(cv2.filp)

# 图片的旋转
rows,cols = res.shape[:2]  # 读取shape的行列方便旋转
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,0.5)
dst = cv2.warpAffine(res,M,(cols, rows))
dst2 = cv2.flip(res, 1)
cv2.imshow('zhengchang', res)
cv2.imshow('xuanzhuan', dst)
cv2.imshow('fanzhuan', dst2)
cv2.waitKey(0)

这里注意读取行列的时候如果是彩色的会有三通道显示,会读到3个数据【行 列 通道数】,灰度图像可以不用考虑
cv2.getgetRotationMatrix2D各个参数含义,中心位置,旋转角度,放缩因子

在这里插入图片描述

6.画图

线和矩形先确定两个点,然后确定颜色,再选择线条的粗细

# 画线
cv.line(img, (0,0), (511, 511),(255,0,0),5)
cv2.imshow('line', img)
cv2.waitKey(0)
cv.destroyWindow('line')
# 画矩形
cv.rectangle(img, (384,0), (510, 128), (0,255,0),3)
cv2.imshow('rectangle', img)
cv2.waitKey(0)
cv.destroyWindow('rectangle')
# 画圆形
cv.circle(img,(477,63), 63,(0, 0, 255), -1)
cv2.imshow('circle', img)
cv2.waitKey(0)
cv.destroyWindow('circle')
# # 画多边形
# pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
# pts = pts.reshape((-1, 1, 2))
# cv.polylines((img, [pts],True, (0, 255, 255)))
# cv2.imshow('pst', img)
# cv2.waitKey(0)
# 添加文本
print(img.shape)
font = cv.FONT_HERSHEY_SIMPLEX # 字体风格
cv2.putText(img,'opencv',(600,400),font, 4,(0, 0,255),2,cv.LINE_AA)
cv2.imshow('wenzi', img)
cv2.waitKey(0)
cv.destroyWindow('wenzi')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值