读入一般都是作为程序的开始,在opencv中,有以下几种的读入方式
img = cv2.imread(img_path, flag)
其中是一个标记位,取值从-1到3,也有对应的宏定义。
CV_LOAD_IMAGE_UNCHANGED – 在每个通道中,每个像素的位深为8 bit,通道数(颜色)保持不变。
CV_LOAD_IMAGE_GRAYSCALE – 位深=8 bit 通道数=1(颜色变灰)
CV_LOAD_IMAGE_COLOR -位深=?, 通道数=3
CV_LOAD_IMAGE_ANYDEPTH – 位深不变 ,通道数=?
CV_LOAD_IMAGE_ANYCOLOR – 位深=?, 通道数不变
由于默认情况下是以8通道BGR彩色图像的模式读入,即使是灰度图像,使用该方法得到的也是彩色图像。
由于这种方法即使没有读入到图像也不会报错,而是返回一个空矩阵,所以可以通过在每次读入图像后,判断矩阵是否为空来防止bug的产生。
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
但是实际上这个函数不仅仅能实现彩色图像灰度化,还可以进行颜色空间转换,只需要修改函数中的第二个参数即可。
output_image = cv2.GaussianBlur(input_image, (3, 3), 0)
将两幅图像作差,一般用在比较与背景图的差异。两个图片相减,这里用的是灰度图,类型是uint8。两个uint8的数相减得不到负数,会得到差的补码[1]。
diff = cv2.absdiff(background, gray_lwpCV)
将大于阈值 sThre
的值设为255,将小于阈值 sThre
的值设为0.
ret, d_frame = cv2.threshold(d_frame, sThre, 255, cv2.THRESH_BINARY)
这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个是高于(低于)阈值时赋予的新值,第四个是一个方法选择参数,常用的有:
• cv2.THRESH_BINARY(黑白二值)
• cv2.THRESH_BINARY_INV(黑白二值反转)
• cv2.THRESH_TRUNC (得到的图像为多像素值)
• cv2.THRESH_TOZERO
• cv2.THRESH_TOZERO_INV
该函数有两个返回值,第一个ret
(得到的阈值,这个往往在自适应阈值的方法中会用到),第二个就是阈值化后的图像。
cv2.putText(img, 'word want to put on',(50,300),cv2.FONT_HERSHEY_SIMPLEX,1.2,(255, 126, 126),2)
[1] 我i智能 CSDN《Python下opencv使用笔记(四)(图像的阈值处理)》