运用opencv实现简单的图像操作
- 简单介绍OpenCV
- 安装opencv
- opencv的基本使用
- 读取图片
- 图片灰度转换
- 修改图片尺寸
- 展示图片的三通道图
- 画图
- 直线
- 矩形
- 圆形
- 写文字
简单介绍OpenCV
OpenCV是由英特尔公司发起并参与开发的一个跨平台计算机视觉库,可用于开发实时的图像处理,计算机视觉,以及模式识别程序。
安装opencv
直接使用pip就可以进行安装
pip install opencv-python
opencv的基本使用
读取图片
import cv2 as cv #导入opencv
img=cv.imread(r'图片路径')#读取图片路径,不能含有中文,不然无法读取数据
cv.imshow('自拟图片名称',img)
cv.waitKey(0)#等待键盘的输入 单位是毫秒 传入0即表示一直显示该图片
cv.destroyAllWindows()#c++语言 使用完内存必须释放
图片灰度转换
在计算机视觉中有三种常用的色彩空间:灰度, BGR, HSV。
灰度色彩空间是通过去除色彩信息来将其转化成灰阶,灰度色彩空间对中间处理特别有效,如人脸识别。
灰度转换的作用:转换成灰度的图片的计算强度降低
import cv2 as cv
src = cv.imread(r'图像路径')#注意图片路径中\应改为/
cv.imshow('input image',src)
#cv2 读取图片的通道是BGR(蓝红绿)
#PIL 读取图片的通道是RGB
gray_img=cv.cvtColor(src,code=cv.COLOR_BGR2GRAY)
cv.imshow('gray_img',gray_img)
cv.waitKey(0)
cv.destroyAllWindows()
#保存图片
cv.imwrite('图片名称',gray_img)
修改图片尺寸
import cv2 as cv
img=cv.imread(r'图片路径')#读取图片路径,不能含有中文,不然无法读取数据
cv.imshow('input image',img)
#修改图片的尺寸 使用dsize(宽度,高度)来修改
#resize_img=cv.resize(img,dsize=(110,160))
resize_img=cv.resize(img,dsize=(400,360))
print(resize_img.shape)
cv.imshow('resize_img',resize_img)
#如果键盘输入的是 q 时候 退出
while True:
if ord('q') == cv.waitKey(0):
break
cv.destroyAllWindows()
展示图片的三通道图
# 导入opencv库
import cv2
# 读取图片
img = cv2.imread(r'图片路径')#注意图片路径中\应改为/
# 展示图片
# cv2.imshow("Dog and Cat",img)
# cv2.waitKey(0)
print(img.shape)
# imgR = cv2.resize(img,(320,225))
imgR = cv2.resize(img,(0,0),fx=0.25,fy=0.25)
# 裁剪图片 img[y的起始:y的结束,x的起始:x的结束]
imgC = img[40:440,60:370]
# convert two====to
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
print("Shape of gray:",gray.shape)
# 取出各个通道的信息 BGR
blue = img.copy()
blue[:,:,1] = 0
blue[:,:,2] = 0
green = img.copy()
green[:,:,0] = 0
green[:,:,2] = 0
red = img.copy()
red[:,:,0] = 0
red[:,:,1] = 0
cv2.imshow("blue",blue)
cv2.imshow("green",green)
cv2.imshow("red",red)
print("blue:",blue.shape)
cv2.waitKey(0)
画图
直线
在一个平面上,确定两个点就可以画出一条直线
函数:cv2.line(img,(x1,y1),(x2,y2),(B,G,R),画笔粗细)
import cv2
img = cv2.imread(r'图片路径')#注意图片路径中\应改为/
#画图相应代码填写
img = cv2.line(img,(60,40),(370,440),(0,0,255),2)
cv2.imshow('Original',img)
cv2.waitKey(0)
矩形
在一个平面上,确定两个点就可以画出一个矩形
函数:cv2.rectangle(img,(x1,y1),(x2,y2),(B,G,R),画笔粗细)
import cv2
img = cv2.imread(r'图片路径')#注意图片路径中\应改为/
#画图相应代码填写
img = cv2.rectangle(img,(60,40),(370,440),(0,0,255),3)
cv2.imshow('Original',img)
cv2.waitKey(0)
圆形
我们知道圆形由半径和圆心确定
函数:cv2.circle(img,(x,y),半径,(B,G,R),画笔粗细)
import cv2
img = cv2.imread(r'图片路径')#注意图片路径中\应改为/
#画图相应代码填写
img = cv2.circle(img,(215,145),100,(255,0,0),2)
cv2.imshow('Original',img)
cv2.waitKey(0)
写文字
函数:cv2.putText(图像矩阵,文字,(x,y), 字体, 字号,(B,G,R),画笔粗细)
import cv2
img = cv2.imread(r'图片路径')#注意图片路径中\应改为/
#画图相应代码填写
img = cv2.putText(img,"How are you?",(100,350),cv2.FONT_HERSHEY_COMPLEX, 2,(50,128,0),2)
cv2.imshow('Original',img)
cv2.waitKey(0)