OpenCV介绍
OpenCV是一款由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库OpenCV-Python使用Numpy,这是一个高度优化的数据库操作库,具有MATLAB风格的语法。所有OpenCV数组结构都转换为Numpy数组。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成更容易。
OpenCV的安装
直接安装即可
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
OPencV的基础操作
图片的读取,显示,保存:
import numpy as np
import cv2
img1=cv2.imread("cat.jpg")
cv2.imshow("The pictuer of cat",img1)
cv2.imwrite("./img2.jpg",img1)
cv2.waitKey(0)
cv2.imread("path") 读取图片 path填图片路径
cv2.imshow("the name of img",img) 图片的展示
the name of img 填写图片的窗口名 img 填写展示的图片(需要被读取)
cv2.imwrite("path",img) 图片的保存 path填写保存的图片路径 img为保存的图片
cv2.waitkey() 窗口的延时 waitkey()括号的数值为窗口存在的毫秒数,填0则一直存在
图片中绘制图案,添加文本(非水印)
水印是将一张图片中的某个物体或者图案提取出来,然后叠加到另一张图片上,后续整理
img1=cv2.imread("cat.jpg")
cv2.line(img1,(20,20),(300,300),(255,0,0),2)
cv2.imshow("the pictuer of cat's change",img1)
cv2.waitKey(0)
img2=cv2.imread("cat.jpg")
cv2.circle(img2,(200,200),50,(255,0,0),-1)
cv2.imshow("circle img",img2)
cv2.waitKey(0)
img3=cv2.imread("cat.jpg")
cv2.rectangle(img1,(50,50,),(300,300),(255,0,0),-1)
cv2.imshow("rectangle of cat",img3)
cv2.waitKey(0)
img4=cv2.imread("cat.jpg")
cv2.putText(img4,'hello world',(0,100),cv2.FONT_ITALIC,1,(255,255,0),1,cv2.LINE_AA)
cv2.imshow("text of img",img4)
cv2.waitKey(0)
cv2.line(img,start,end,color,thickness) 图片上绘制直线
参数设置:img为绘制的图片,start为直线的像素起始位置如(50,50)
end为直线 的终点位置,color为直线的颜色,thickness为线条的宽度
cv.circle(img,centerpoint, r, color, thickness) 绘制圆形
参数设置:centerpoint圆心的像素位置,r圆的半径,当thickness为-1时,绘制的封闭图案闭合
cv.rectangle(img,leftupper,rightdown,color,thickness) 绘制矩型
参数设置:leftupper矩形左上角的像素位置,rightdown矩形右下角像素位置
cv.putText(img,text,station, font, Fontscale ,color,thickness,cv2.LINE_AA) 添加文本
参数设置:text为添加的文本信息,station为文本的样式如,如果有公司自己的文本库引入即可,一般支持的有cv2.FONT_HERSHEY_SIMPLEX
:标准的无衬线字体,cv2.FONT_HERSHEY_PLAIN
:简单的无衬线字体,cv2.FONT_HERSHEY_DUPLEX
:较粗的无衬线字体,cv2.FONT_HERSHEY_COMPLEX
:有衬线字体,cv2.FONT_HERSHEY_TRIPLEX
:较粗的有衬线字体
最后一个参数 cv2.LINE_AA
表示使用反走样(Anti-Aliasing)技术来绘制文本边框
获取和修改像素点以及摄像头的实时采集与渲染
img1=cv2.imread("cat.jpg")
img1[50,50]=[0,0,0]
cv2.imshow("point change",img1)
cv2.waitKey(0)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('Camera Feed', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
获取像素点的位置并直接修改
视频流的采集与渲染注意面向功能编程
cap = cv2.VideoCapture(path)
path视频流资源路径设置为0代表从默认摄像头捕获视频流
从默认摄像头读取图片,并且while true让它一直读取,将读取后的数组传出ret和frame两个参数,ret代表是否读取到图片,布尔值,frame代表读取的图片,如果没有读取到图片则不循环,否则展示图片,如果用户输入q或者不等待即关闭,则关闭窗口
cv2.destroyAllWindows() 关闭窗口释放内存,不是特别复杂的结构就是默认写写法