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


亮度较高的图像区域的二值化阈值通常会较高,而亮度较低的图像区域的二值化阈值则会相适应地变小在灰度图像中,灰度值变化明显的区域往往是物体的轮廓,所以将图像分成一小块一小块的去计算阈值往往会得出图像的轮廓 。因此函数adaptiveThreshold除了将灰度图像二值化,也可以进行边缘提取之所以能进行边缘提取,是因为当block很小时,如block_size=3 or 5 or 7时,“自适应”的程度很高,即容易出现block里面的像素值都差不多,这样便无法二值化,而只能在边缘等梯度大的地方实现二值化,结果显得它是边缘提取函数当把blockSize设为比较大的值时,如blockSize=21 or 31 or 41时,adaptiveThreshold便是二值化函数blockSize必须为大于1的奇数(原理老猿还没弄清楚) ,如果使用平均值方法,平均值mean为180,差值delta为10,maxValue设为255 。那么灰度小于170的像素为0,大于等于170的像素为255,如果是反向二值化,灰度小于170的像素为255,大于等于170的像素为0案例:
import cv2
img = cv2.imread(r’F:screenpic1.jpg’,cv2.IMREAD_GRAYSCALE)
newImg = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, 5)
cv2.imshow(‘img’,img)
cv2.imshow(‘newImg’,newImg)
cv2.waitKey(60000)
运行效果:
源图:
下面是分别设置不同块大小的结果图,左图块大小为31,右图为3:
可以看到blockSize小时,轮廓识别效果明显,而大时,就是一个二值化图像 。
十二、OpenCV的图像修复方法OpenCV中的cv2.inpaint()函数使用插值方法修复图像,调用语法如下:
dst = cv2.inpaint(src,mask, inpaintRadius,flags)
参数含义如下:
src:输入8位1通道或3通道图像inpaintMask:修复掩码,8位1通道图像 。非零像素表示需要修复的区域dst:输出与src具有相同大小和类型的图像inpaintRadius:算法考虑的每个点的圆形邻域的半径flags:修复算法标记,其中INPAINT_NS表示基于Navier-Stokes方法,INPAINT_TELEA表示Alexandru Telea方法 。具体方法在此不展开介绍下面的代码对一个包含亮色Logo的图片进行去Logo处理:
import cv2
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
def delLogFromImg(img):
imgMask = createImgMask(img)
imgMask = cv2.inpaint(img, imgMask , 3, cv2.INPAINT_TELEA)
return imgMask
img1 = cv2.imread(r’F:templogo.jpg’)
img2 = cv2.imread(r’F:templogo.jpg’,cv2.IMREAD_GRAYSCALE)
newImg1 = delLogFromImg(img1)
newImg2 = delLogFromImg(img2)
cv2.imshow(‘img1’,img1)
cv2.imshow(‘newImg1’,newImg1)
cv2.imshow(‘img2’,img2)
cv2.imshow(‘newImg2’,newImg2)
cv2.waitKey(60000)
执行截图1:
小结本文详细介绍了opencv-python的安装、加载图像文件、捕获摄像头、显示图像、鼠标事件捕获、键盘事件处理、几何图像绘制、颜色空间转换、图像阈值处理、图像修复等基础知识,适合开始学习opencv-python的初学者 。


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

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