OpenCV(python版)知识小点

比较小的知识点,备忘录

一、图像加法

OpenCV 中的加法与Numpy 的加法是有所不同的。OpenCV 的加法是一种饱和操作,而Numpy 的加法是一种模操作。这种差别在你对两幅图像进行加法时会更加明显。OpenCV 的结果会更好一点。所以我们尽量使用OpenCV 中的函数。

x = np.uint8([250])
y = np.uint8([10])
print cv2.add(x,y) # 250+10 = 260 => 255
# 输出 [[255]]
print x+y # 250+10 = 260 % 256 = 4
# 输出 [4]

二、程序性能检测及优化

1、Python的标量计算比Numpy的标量计算要快。对于仅包含一两个元素的操作Python标量比Numpy的数组要快。但是当数组稍微大一点时,Numpy就会胜出。
2、一般情况下OpenCV的函数要比Numpy函数快,所以对于相同的操作最好使用OpenCV的函数,使用Numpy对视图做非复制操作时例外。
3、%time魔法命令:让代码运行好几次从而得到一个准确的(运行)时间。
4、优化

  1. 尽量避免使用循环,尤其双层三层循环,它们天生就是非常慢的。
  2. 算法中尽量使用向量操作,因为 Numpy 和 OpenCV 都对向量操作进行了优化。
  3. 利用高速缓存一致性。
  4. 没有必要的话就不要复制数组。使用视图来代替复制。数组复制是非常浪费资源的。

三、颜色空间转换

1、查询OpenCV中所有的颜色转换格式

import cv2
flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
print (flags)

2、在OpenCV的HSV格式中,H(色彩/色度)的取值范围是[0, 179],S(饱和度)的取值范围[0, 255],V(亮度)的取值范围[0, 255]。但是不同的软件使用的值可能不同,所以需要拿OpenCV的HSV值与其他软件的HSV值进行对比时,一定要记得归一化
3、在HSV颜色空间中要比BGR空间中更容易表示一个特定的颜色,从RGB的值转换到其他空间,可以利用颜色空间在线转换工具,HSV空间模型
在这里插入图片描述
在这里插入图片描述

发布了96 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Thera_qing/article/details/103888354