opencv视频图像识别方法 opencv保存视频格式( 三 )


if mousePos:
cv2.circle(frame, mousePos,60, (255,0,0),2)
cv2.imshow(‘image’, frame)
ch = cv2.waitKey(int(1000/fps))
if ch == ord(‘q’): break
cap.release()
cv2.destroyAllWindows()
playVideoFile()
九、OpenCV的颜色空间转换方法cv2.cvtColor是openCV提供的颜色空间转换函数,调用语法如下:
cvtColor(src, code, dstCn=None)
其中:
src:要转换的图像code:转换代码,表示从何种类型的图像转换为何种类型,如下面需要使用的cv2.COLOR_BGR2GRAY就是将BGR格式彩色图像转换成灰度图片,具体转换代码请参考官网文档dstCn:目标图像的通道数,如果为0表示根据源图像通道数以及转换代码自动确认更多内容请参考《学习opencv之cvtColor》,示例请参考下面图像阈值处理部分的案例 。
十、图像阈值处理openCV图像的阈值处理又称为二值化,之所以称为二值化,是它可以将一幅图转换为感兴趣的部分(前景)和不感兴趣的部分(背景) 。转换时,通常将某个值(即阈值)当作区分处理的标准,通常将超过阈值的像素作为前景 。
阈值处理有2种方式,一种是固定阈值方式,又包括多种处理模式,另一种是非固定阈值,由程序根据算法以及给出的最大阈值计算图像合适的阈值,再用这个阈值进行二值化处理,非固定阈值处理时需要在固定阈值处理基础上叠加组合标记 。
调用语法:
retval, dst = cv2.threshold (src, thresh, maxval, type)
其中:
src:源图像,8位或32位图像的numpy数组thresh:阈值,0-255之间的数字,在进行处理时以阈值为边界来设不同的输出maxval:最大阈值,当使用固定阈值方法时为指定阈值,当叠加标记时为允许最大的阈值,算法必须在小于该值范围内计算合适的阈值type:处理方式,具体取值及含义如下:dst:阈值化处理后的结果图像numpy数组,其大小和通道数与源图像相同retval:叠加cv2.THRESH_OTSU或cv2.THRESH_TRIANGLE标记后返回真正使用的阈值案例:
ret, mask = cv2.threshold(img, 35, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)
补充说明:
阈值判断时,是以小于等于阈值和大于阈值作为分界条件如果是32位彩色图像,则是以RGB每个通道的值单独与阈值进行比较,按每个通道进行阈值处理,返回的是一个阈值处理后的RGB各自的值 。请参考《OpenCV阈值处理函数threshold处理32位彩色图像的案例》 。下面的代码生成一个图像的掩码图像:
def createImgMask(img):
# 创建img的掩码
if img is None:return None
if len(img.shape)>=3:
img2gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
else:img2gray = img
ret, mask = cv2.threshold(img2gray, 35, 255, cv2.THRESH_BINARY)
return mask
十一、adaptiveThreshold自适应阈值化图像处理上面介绍的threshold 函数的图像阈值处理对于某些光照不均的图像,这种全局阈值分割的方法会显得苍白无力 。图像阈值化操作中,我们更关心的是从二值化图像中分离目标区域和背景区域,仅仅通过固定阈值很难达到理想的分割效果 。在图片中的灰度是不均匀的,所以通常情况下图片中不同区域的阈值是不一样的 。这样就需要一种方法根据图像不同区域亮度或灰度分布,计算其局部阈值来进行阈值处理 。这种方法就是自适应阈值化图像处理,实际上这可以称为局部阈值法,在OpenCV中的adaptiveThreshold就是这种方法 。
调用语法:
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C, dst=None)
说明:
src:源图像,必须是8位的灰度图dst:处理后的目标图像,大小和类型与源图像相同maxValue:用于指定满足条件的像素设定的灰度值adaptiveMethod:使用的自适应阈值算法,有2种类型ADAPTIVE_THRESH_MEAN_C算法(局部邻域块均值)或ADAPTIVE_THRESH_GAUSSIAN_C(局部邻域块高斯加权和),ADAPTIVE_THRESH_MEAN_C的计算方法是计算出邻域的平均值再减去第六个参数C的值,ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出邻域的高斯均匀值再减去第六个参数C的值 。处理边界时使用BORDER_REPLICATE | BORDER_ISOLATED模式thresholdType:阈值类型,只能是THRESH_BINARY或THRESH_BINARY_INV二者之一,具体参考上面“图像阈值处理”的表格blockSize:表示邻域块大小,用来计算区域阈值,一般选择3、5、7……C:表示常数,它是一个从均匀或加权均值提取的常数,通常为正数,但也可以是负数或零返回值:处理后的图像补充说明:


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: