opencv的使用技巧(1)

本文介绍了使用Python的OpenCV库进行视频读取和基本图像处理操作,包括颜色转换、灰度化、腐蚀、膨胀、开运算、闭运算、梯度计算以及礼帽和黑帽滤波。通过实例展示了如何应用这些技术处理图像内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读取视频:

import cv2
import matplotlib.pyplot as plt
import numpy as np
video=cv2.VideoCapture("nasa_13013.mp4")
#判断是否成功读取
if video.isOpened():
    open,frame=video.read()  #如果这一帧可以读出来,返回一个True值
else:
    open=False


#利用while循环一帧一帧的对视频进行读取
while open:
    ret,frame=video.read()
    if frame is None:
        break
    if ret ==True:
        #转换每一帧的颜色,这里是将每一帧装为灰度图
        gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        cv2.imshow("iu1new.mp4",gray)
        #每一帧等待时间
        if cv2.waitKey(10)  %0xFF==27:
            break
video.release()
cv2.destroyAllWindows()

腐蚀操作

img = cv2.imread("line.jpg", 0)
#腐蚀操作
kernel = np.ones((3, 3), np.uint8)
erosion = cv2.erode(img, kernel, iterations=3)
cv2.imshow('erosion', erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()
pie = cv2.imread("pie.png", 0)
cv2.imshow('pie', pie)

kernel =np.ones((30,30),np.uint8)
erosion_1 = cv2.erode(pie,kernel,iterations = 1)
erosion_2 = cv2.erode(pie,kernel,iterations = 2)
erosion_3 = cv2.erode(pie,kernel,iterations = 3)
res = np.hstack((erosion_1,erosion_2,erosion_3)) #拼在一起
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()

膨胀操作

#膨胀操作
dige_dilate = cv2.dilate(erosion,kernel,iterations=1)
cv2.imshow("dilate",dige_dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
pie = cv2.imread("pie.png", 0)
cv2.imshow('pie', pie)


kernel =np.ones((30,30),np.uint8)
erosion_1 = cv2.dilate(pie,kernel,iterations = 1)
erosion_2 = cv2.dilate(pie,kernel,iterations = 2)
erosion_3 = cv2.dilate(pie,kernel,iterations = 3)
res = np.hstack((erosion_1,erosion_2,erosion_3)) #拼在一起
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()

开运算与闭运算

#开运算:先腐蚀,后膨胀
img = cv2.imread("line.jpg", 0)
kernel = np.ones((5, 5), np.uint8)
opening = cv2.morphologyEx(img,cv2.MORPH_OPEN,kernel)


cv2.imshow("opening",opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
#闭运算:先膨胀,后腐蚀
closing = cv2.morphologyEx(img,cv2.MORPH_CLOSE,kernel)


cv2.imshow("closing",closing)
cv2.waitKey(0)
cv2.destroyAllWindows()

梯度运算

#梯度 = 膨胀-腐蚀
pie = cv2.imread("pie.png")
kernel = np.ones((7, 7), np.uint8)
dilate = cv2.dilate(pie,kernel,iterations = 5)
erosion = cv2.erode(pie,kernel,iterations = 5)


res = np.hstack((dilate,erosion))
gradient = cv2.morphologyEx(pie,cv2.MORPH_GRADIENT,kernel)
cv2.imshow("gradient",gradient)
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()

礼帽和黑帽

#礼帽 = 原始输入 - 开运算结果
img = cv2.imread("line.jpg")
kernel = np.ones((7, 7), np.uint8)
tophat = cv2.morphologyEx(img,cv2.MORPH_TOPHAT,kernel)
cv2.imshow("tophat",tophat)
cv2.waitKey(0)
cv2.destroyAllWindows()
#黑帽 = 闭运算 - 原始输入
img = cv2.imread("line.jpg")
kernel = np.ones((7, 7), np.uint8)
blackhat = cv2.morphologyEx(img,cv2.MORPH_BLACKHAT,kernel)
cv2.imshow("blackhat",blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值