OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。OpenCV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。OpenCV是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。OpenCV 还提供了机器学习模块,你可以使用正态贝叶斯、K最近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。OpenCV 是一个开源的计算机视觉库,可以从 http://opencv.org 获取。1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产品质量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。
1.读取图片
import cv2 as cv img =cv.imread("img/street.jpg") cv.imshow("image",img) #等待 cv.waitKey(0) #释放内存 cv.destroyAllWindows()
2.灰度转换
import cv2 as cv img =cv.imread("img/street.jpg") #灰度转换 gray_img=cv.cvtColor(img,cv.COLOR_BGR2GRAY) cv.imshow("img",gray_img) #保存灰度图片 cv.imwrite("img/a.jpg",gray_img) cv.waitKey(0) #释放内存 cv.destroyAllWindows()
3.修改尺寸
cv.waitKey()可传入时延参数,比如cv.waitKey(25)就是等待25ms,等待这25毫秒干嘛呢
可以与按键交互:
import cv2 as cv img =cv.imread("img/street.jpg") #修改尺寸 resize_img=cv.resize(img,dsize=(200,200)) cv.imshow("img",resize_img) while True: if ord('q')==cv.waitKey(0): break #释放内存 cv.destroyAllWindows()
上面表示等待按键q可以结束循环,这个函数可以利用等待的时间显示框架的处理过程
当时延参数为0时,cv.waitKey(0);则表示无限期的等待一次敲击键,如果这段时间按下任何键,程序将继续运行。否则会一直显示处理过程而等待。
4.绘制图形
import cv2 as cv img =cv.imread("img/street.jpg") #坐标 x,y,w,h=100,100,100,100 #绘制矩形 cv.rectangle(img,(x,y,x+w,y+h),color=(0,0,255),thickness=1) #绘制圆形 cv.circle(img,center=(x+w,y+h),radius=100,color=(255,0,0),thickness=2) cv.imshow("img",img) cv.waitKey(0) #释放内存 cv.destroyAllWindows()
4. 图片裁剪
import cv2 as cv img =cv.imread("F:\yolo\img\street.jpg") # 裁剪 cropped = img[start_row:end_row, start_col:end_col] cropped_image=img[80:500,150:900] cv.imshow("img",cropped_image) cv.waitKey(0) #释放内存 cv.destroyAllWindows()
6. 读取视频
import cv2 as cv cap=cv.VideoCapture(r"F:\yolo\videos\2.mp4") while True: flag,img=cap.read() if not flag: break; cv.imshow("img",img) #按下esc键的时候退出 if cv.waitKey(1000) & 0xFF == 27: break #释放内存 cv.destroyAllWindows() cap.release()