第二章 图像入门
2.1 读取图像、显示图像、保存图像
cv.imread(),cv.imshow(),cv.imwrite()
cv.waitKey() cv.destroyAllWindows()
2.2 读取视频,显示视频和保存视频
cv.VideoCapture(),cv.VideoWriter()
2.3 绘图功能
cv.line(),cv.circle(),cv.rectangle(),cv.ellipse(),cv.putText()
2.4 鼠标事件
cv.setMouseCallback()
2.5 轨迹栏作为调色板
cv.getTrackbarPos,cv.createTrackbar
第三章 核心操作
3.1 基本操作
opencv中采用:BGR空间
img.shape img.size img.dtype
cv.split() cv.copyMakeBorder() 在图像周围创建边框
3.2 图像算数运算
图像加法:cv.add() numpy操作res = img1 + img2,图像直接做加法不能得到叠加的效果,可能会溢出
图像融合:cv.addWeighted
按位运算(AND OR NOT XOR)
图像叠加方法:ROI灰度转换-二值转换-二值反转(bitwise_not)-母图对应的ROI区域涂黑(bitwise_and)-图像相加-
3.3 性能衡量和提升技术
Python标量操作比Numpy标量操作快。因此,对于包含一两个元素的运算,Python标量比Numpy数组好。当数组大小稍大时,Numpy会占优势。
注意 :通常,OpenCV函数比Numpy函数要快。因此,对于相同的操作,首选OpenCV功能。但是,可能会有例外,尤其是当Numpy处理视图而不是副本时。
注意:尽量避免在Python中使用循环,尤其是双/三重循环等。它们本来就很慢。
由于Numpy和OpenCV已针对向量运算进行了优化,因此将算法/代码向量化到最大程度。
利用缓存一致性。
除非需要,否则切勿创建数组的副本。尝试改用视图。数组复制是一项昂贵的操作。
即使执行了所有这些操作后,如果你的代码仍然很慢,或者不可避免地需要使用大循环,请使用Cython等其他库来使其更快。