1 认识计算机视觉
2012年AlexNet模型在ImageNet图像分类中获得比赛冠军,深度学习开始在计算机视觉领域流行。早期的计算机视觉主要集中在重建方面,2012年以后在感知和重建两个领域都受到了深度学习的影响。应用场景包括自动驾驶、机器视觉、安防监控、其他行业等等。
计算机视觉的框架主要包含matlab、Matrox mil、Halcon、VisionPro、opencv,只有opencv是开源的。随着深度学习的发展又加入了tensorflow、pytorch、paddlepaddle+openvino、tensorRT、onnxruntime等。主流的开发语言是C++和python。
opencv支持c/c++/python/java/js等主流语言。应用与多个领域。opencv应用了TBB、PPL、SSE、CUDA、UI指令集等多种加速技术,支持Windows、Linux、Mac OS系统。对于python语言开发,可以通过pip install opencv-python
进行安装,也可以使用镜像源进行安装pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
。
2 读取与显示图像
图像可以分为灰度图和彩色图,灰度图只有黑白两种颜色,由
0
−
255
0-255
0−255之间的数值表示颜色深浅;彩色图像包含了BGR三种颜色通道,每个通道由
0
−
255
0-255
0−255之间的数值大小表示。
实际黑白图像:
计算机的理解:
[[163 162 161 … 170 154 130]
[162 162 162 … 170 155 126]
…
[42 44 57 … 102 106 109]]
实际彩色图像
计算机的理解:
[[[128 138 225] … [55 21 82]]
[[127 137 224] … [54 20 81]]
…
[[128 138 225] … [84 74 188]]]
由包含三个数的三维通道分别表示BGR
读取和显示图像也很简单
-
imread(filname[, flags])
函数读取图像:filename
是图像的名字image = cv.imread("lena.jpg")
-
imshow(winname, mat)
函数显示图像:winname
是显示窗口名字,mat
是读取的图像数组。cv.imshow("lena", image)
-
cv.waitKey(0)
表示一直等待直到任意一个键盘操作,才关闭图像,或者可以加等待的时间,单位是毫秒。否则显示图像一闪而过。cv.waitKey(0)
全部代码显示为
image = cv.imread("lena.jpg") # 读取图像
cv.imshow("lena", image) # 显示图像
cv.waitKey(0) # 一直等待
cv.destroyaAllWindows() # 删除窗口
【参考】
DataWhale OpenCV课程