如果觉得下载网速慢的可以换源.在 左起:原图–>均值滤波–>高斯滤波–>中值滤波 左起:原图–>Sobel算子->Scharr算子–>Laplacian算子文章目录
一.安装opencv
C:Users${XXX用户}pip
下新建pip.ini
,输入下面内容替换成清华源。[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple
二.常用函数
αX1+βX2+b
矩形中间的值=矩形内的值相加取平均值
)normalize=True等同于均值滤波, normalize=false代表直接求和不取均值,越界后显示为255
)离得近的权重高,离得远的权重低
)矩形内的值排序后取中间值
)先腐蚀再膨胀
)先膨胀再腐蚀
)膨胀-腐蚀
)原始值-开运算
)闭运算-原始值
)能捕捉到更多的细节
)噪点影响很大
)threshold<value<threshold2,范围越大,边缘检测细节越多
放大图像
)缩小图像
)原图-(先缩小后放大)
)普朗克算法
)三.常用操作
#只保留R通道为例 img[:,:,0]=0 #将B通道全部置为0 img[:,:,1]=0 #将R通道全部置为0
img[0:200,0:200]
p_top,p_bottom,p_left,p_right=(50,50,50,50) wrap=cv2.copyMakeBorder(img,p_top,p_bottom,p_left,p_right,cv2.BORDER_WRAP)
img = cv2.imread('1.png') img1 = cv2.imread('2.png') #!!!注意shape得出来的是(height,width),resize传入的是(width,height) h, w = img1.shape[:2] #将img的宽高转为img1的宽高 img = cv2.resize(img, (w, h)) #αX1+βX2+b img2 = cv2.addWeighted(img1, 0.4, img, 0.6, 0)
#读取视频 from cv2 import cv2 vc=cv2.VideoCapture('1.mp4') #检查是否正确打开 if vc.isOpened: open,frame=vc.read() else: open=False while open: ret,frame=vc.read() if frame is None: break if ret==True: gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) cv2.imshow('1.mp4',gray) #按esc退出视频 if cv2.waitKey(1000) & 0xFF ==27: break vc.release() cv2.destoryAllWindows()
# 均值滤波 # 矩形中间的值=矩形内的值相加取平均值 blur = cv2.blur(img, (3, 3)) # 方框滤波 # normalize=True等同于均值滤波,normalize=false代表直接求和不取均值,越界后显示为255 # box = cv2.boxFilter(img, -1, (3, 3), normalize=True) # 高斯滤波 # 离得近的权重高,离得远的权重低 gaussian = cv2.GaussianBlur(img, (3, 3), 1) # 中值滤波 # 取矩形内的中间值 median = cv2.medianBlur(img, 3)
kernel = np.ones((3, 3), np.uint8) # 腐蚀操作 img= cv2.erode(img, kernel, iterations=1)
kernel = np.ones((3, 3), np.uint8) img = cv2.dilate(img, kernel, 1)
# Sobel算子 sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0, ksize=3) sobelx = cv2.convertScaleAbs(sobelx) sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1, ksize=3) sobely = cv2.convertScaleAbs(sobely) sobelxy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0) # Scharr算子 # 能捕捉到更丰富的细节 scharrx = cv2.Scharr(img, cv2.CV_64F, 1, 0) scharrx = cv2.convertScaleAbs(sobelx) scharry = cv2.Scharr(img, cv2.CV_64F, 0, 1) scharry = cv2.convertScaleAbs(sobely) scharrxy = cv2.addWeighted(scharrx, 0.5, scharry, 0.5, 0) #Laplacian算子 #噪点影响很大 laplacian=cv2.Laplacian(img,cv2.CV_64F) laplacian=cv2.convertScaleAbs(laplacian)
img = cv2.imread('1.png', cv2.IMREAD_GRAYSCALE) img1 = cv2.Canny(img, 80, 150) #阈值越大,边缘检测的细节越多 img2 = cv2.Canny(img, 20, 200)
# 高斯金字塔:向上采样(放大图像) img1 = cv2.pyrUp(img) # 高斯金字塔:向下采样(缩小图像) img2 = cv2.pyrDown(img) #拉普拉斯金字塔(原图-(先缩小后放大)) img3 = cv2.pyrUp(cv2.pyrDown(img)) img.resize(img3.shape) img4 = img-img3
img = cv2.imread('1.png') # 转化为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用二值图 ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 根据灰度二值图找出轮廓 binary, contours, hierarchy = cv2.findContours( thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) # 画出轮廓 # 这里要将原图copy一下,不然直接就在原图上画了 img1 = img.copy() img2 = cv2.drawContours(img1, contours, -1, (0, 0, 255), 2)
# 轮廓近似 # 普朗克算法 epsilon = 0.1*length approx = cv2.approxPolyDP(cnt, epsilon, True) img3 = img.copy() img4 = cv2.drawContours(img3, [approx], -1, (0, 0, 255), 2)
# 以灰度图方式读入 img = cv2.imread('1.jpg', cv2.COLOR_GRAY2BGR) template = cv2.imread('1_template.png', cv2.COLOR_GRAY2BGR) h, w = template.shape[:2] res = cv2.matchTemplate(img, template, cv2.TM_SQDIFF) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) img1=img.copy() cv2.rectangle(img1, min_loc, (min_loc[0]+w, min_loc[1]+h), 255, 2)
import matplotlib.pyplot as plt hist = cv2.calcHist([img], [0], None, [256], [0, 256]) # ravel():将多维矩阵转为一维数组 plt.hist(img.ravel(), 256) plt.show()
#直方图均衡化 import matplotlib.pyplot as plt equ = cv2.equalizeHist(img) plt.hist(equ.ravel(), 256)
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算