当前位置: 首页 > news >正文

企业网站源码 vue做cpa搭建哪个网站比较好

企业网站源码 vue,做cpa搭建哪个网站比较好,有了网站模板 还要怎样做,局政务网站建设管理工作总结1 图像滤波介绍 滤波是信号和图像处理中的基本任务之一#xff0c;其旨在有选择地提取图像的某些特征#xff0c;可以用于在给定应用程序的上下文中传达重要信息#xff0c;例如#xff0c;去除图像中的噪声、提取所需的视觉特征、图像重采样等。 1.1 图像滤波理论 图像…1 图像滤波介绍 滤波是信号和图像处理中的基本任务之一其旨在有选择地提取图像的某些特征可以用于在给定应用程序的上下文中传达重要信息例如去除图像中的噪声、提取所需的视觉特征、图像重采样等。 1.1 图像滤波理论 图像滤波即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制是图像预处理中不可缺少的操作。消除图像中的噪声又叫做图像滤波或平滑滤波的目的有两个一是突出特征以方便处理二是抑制噪声。 空间域滤波就是在图像平面上对像素进行操作。空间域滤波大体分为两类平滑、锐化。 平滑滤波模糊处理用于减小噪声实际上是低通滤波典型的滤波器是高斯滤波。 锐化滤波提取边缘突出边缘及细节、弥补平滑滤波造成的边缘模糊。实际上是高通滤波。 空间域处理可由下式表示 g(x,y)T[f(x,y)] 式中f(x,y)是输入图像g(x,y)是处理后的图像T是在点(x,y)的邻域上定义的关于f的一种算子算子可应用于单幅图像或图像集合。 1.2  频域分析 频域分析 (frequency domain analysis) 不同图像具有不同的灰度分布可以用图像的灰度分布作为表征图像的一种方式但同时还存在另一种分析图像的观点。观察图像中的灰度变化可以发现某些图像包含强度几乎恒定的大面积区域(例如蓝天)而某些图像上的灰度强度变化很快(例如拥挤的街道)。因此可以用图像中的变化频率作为表征图像的另一种方式这种方式被称为频域而通过观察图像的灰度分布来表征图像的方式则被称为空间域。 频域分析将图像从最低频率到最高频率分解为其频率内容图像强度缓慢变化的区域仅包含低频而高频是由强度的快速变化产生的。有多种用于计算图像的频率内容的变换例如傅立叶变换或余弦变换。需要注意的是由于图像是二维平面因此频率由垂直频率(垂直方向的变化)和水平频率(水平方向的变化)组成。 在频域分析中滤波器是一种放大图像某些频带同时减少其他频带的操作。因此低通滤波器 (low-pass filters) 是消除图像高频成分的滤波器而高通滤波器 (high-pass filters) 消除图像的低频成分。 1.3 邻域滤波算子 空间滤波器由一个邻域通常是一个较小的矩形和对该邻域所包围图像像素执行的预定义操作组成。对预定义的点xy为中心的领域内的像素进行计算。 滤波产生一个新像素用计算后的新像素值代替点xy的值。 循环步骤1和2滤波器的中心遍历图像中的每个像素后就生成了滤波后的图像。 如果在图像像素上执行的是线性操作则该滤波器称为线性空间滤波器否则称为非线性空间滤波器。 一般来说使用大小为 m×n的滤波器对大小为 M×N的图像进行线性空间滤波可由下式表示 2 opencv图像滤波 2.1 opencv滤波概述 滤波处理分为两大类线性滤波和非线性滤波。OpenCV里有这些滤波的函数使用起来非常方便。 2.1.1 线性滤波 方框滤波BoxBlur模糊图像 均值滤波Blur模糊图像 高斯滤波GaussianBlur信号的平滑处理去除符合正太分布的噪声 平滑滤波一般来说图像具有局部连续的性质即相邻的像素的值相近而噪声使得噪点处产生像素跳跃所以通过平滑噪点可以减少噪声去除图像中的不相关细节。 方框滤波BoxBlur和均值滤波Blur都是对邻域内做平均值来滤波属于平滑滤波。滤波的输出是包含在滤波器模板邻域内的像素的平均值方框滤波做归一化之后就变为均值滤波这两个滤波器都是低通滤波器。 高斯滤波高斯滤波对于图像来说就是一个低通滤波广泛用于消除高斯噪声高速滤波就是一种加权滤波只不过模板中的系数由高斯分布来确定的高斯滤波器根据高斯函数的形状来选择滤波模板权值的线性平滑滤波器。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。 2.1.2 非线性滤波 中值滤波mediaBlur去除椒盐噪声 双边滤波BilateralFilter保边去噪 中值滤波中值滤波属于非线性滤波其思想用滤波模板邻域内的像素的平均值来代替像素点的灰度值。中值滤波器是一种统计排序滤波器图像上点xy中值滤波以该点为中心领域内所有像素的统计排序中值作为此点的响应中值滤波是非线性滤波。相比与均值滤波和高斯滤波中值滤波可以有效的降低随机噪声直接忽略掉噪声点把噪声引起的模糊降到最低。线性滤波器在滤波的同时会造成图像细节模糊中值滤波可以避免这个问题其典型的应用就是中值滤波消除斑点噪声、椒盐噪声。 双边滤波高斯滤波属于加权平均滤波距离中心点越近的点越有较大权重这种方法符合图像的平滑变化的特征但是在边缘区域像素值出现突变这种方法反而会滤掉边缘轮廓损失掉有用的边缘信息。边缘保护滤波方法双边滤波就是最常用的边缘保护滤波方法就是为了处理这种情况而发明的。 双边滤波Bilateral filter是一种非线性的滤波方法是结合图像的空间邻近度和像素值相似度的一种折衷处理同时考虑空域信息和灰度相似性达到保边去噪的目的。双边滤波将高斯滤波中通过各个点到中心点的空间临近度计算的各个权值进行优化将其优化为空间临近度计算的权值和像素值相似度计算的权值的乘积优化后的权值再与图像作卷积运算从而达到保边去噪的效果。 2.2 opencv核心概念 低通滤波低通滤波可以去除图像的噪音或平滑图像。 高通滤波可以帮助查找图像的边缘。 噪音即对一幅图像的产生负面效果过暗或过亮的部分一幅图像中低于或高于某个像素点的值都可以认为是噪音。 卷积核即用来滤波的矩阵卷积核一般为奇数如3×3、5×5、7×7等 锚点卷积核最中间的坐标点。 卷积核越大卷积的效果越好但是计算量随之也会增大。 边界扩充当卷积核大于1并且不进行边界扩充输出尺寸相应缩小、当卷积核一标准方式进行边界扩充则输出的空间尺寸与输入相等。 图像卷积 3 opencv图像滤波实现 2.1 filter2D图像卷积 函数原型 dst cv2.filter2D(src, ddepth, kernel, anchor, delta, borderType)         src原图像     ddepth输出图像的尺寸默认为-1     kernel卷积核是一个矩阵     anchor锚点默认随卷积核变化     delta卷积后加一个值默认为0     borderType有映射类型加一个黑边默认不设置 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankoriginal cv2.imread(../data/girl03.jpeg)# 创建一个5*5的卷积核 kernel np.ones((5, 5), np.float32) / 25 filter2d cv2.filter2D(original, -1, kernel)img show_multi_imgs(2, [original, filter2d], (1, 2)) cv2.namedWindow(origifilter2D, 0) cv2.imshow(origifilter2D, img) cv2.waitKey(0) 运行代码显示如下 经过图像处理后看着变模糊了图像更平滑了 2.2 低通滤波boxFilter方盒滤波 函数原型 dst cv2.boxFilter(src, ddepth, ksize , anchor, normalize, borderType) src输入图像 ddepth输出图像的尺寸默认为-1 kernel卷积核大小x, y anchor锚点默认随卷积核变化 normalize布尔类型默认为TrueTruea为1/W*H(均值滤波)falsea1 borderType有映射类型加一个黑边默认不设置 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/girl03.jpeg)# 方盒滤波当为True时变成均值滤波当为False时就只加和不变化超过255的结果设置为255 img2 cv2.boxFilter(img, -1, (5, 5), normalizeTrue) img3 cv2.boxFilter(img, -1, (5, 5), normalizeFalse) new_image show_multi_imgs(4, [img, img2, img3], (1, 3)) cv2.namedWindow(imgimg2img3, 0) cv2.imshow(imgimg2img3, new_image) cv2.waitKey(0) 运行代码显示如下 blur()均值滤波 函数原型 方盒滤波的参数为True时就是均值滤波所以这个API用的不多。     dst cv2.blur(scr, ksize, anchor, borderType)         scr源图像     kernel卷积核大小xy     anchor锚点     borderType有映射类型加一个黑边默认不设置 2.3  低通滤波GaussianBlur高斯滤波去高斯噪音 适用于有高斯噪点的图片函数原型 dst cv2.GaussianBlur(img, ksize, sigmaX, sigmaY, …) img输入的图像 ksize卷积核大小 sigmaX表示高斯核函数在X方向的的标准偏差。 sigmaY表示高斯核函数在Y方向的的标准偏差。 重点关注前三个参数 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/gauss2.jpeg)# 高斯去噪 img2 cv2.GaussianBlur(img, (3, 3), 0)new_image show_multi_imgs(4, [img, img2], (1, 2)) cv2.namedWindow(imgimg2, 0) cv2.imshow(imgimg2, new_image) cv2.waitKey(0) 运行代码显示如下 2.4 低通滤波medianBlur中值滤波去胡椒噪音 函数原型 对胡椒噪音去噪明显,取中间的值作为卷积结果 dst cv2.medianBlur(img, ksize) img输入图像 ksize卷积核大小一个数字 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/girl01.jpg)# 高斯去噪 img2 cv2.medianBlur(img, 5)new_image show_multi_imgs(4, [img, img2], (1, 2)) cv2.namedWindow(imgimg2, 0) cv2.imshow(imgimg2, new_image) cv2.waitKey(0) 运行代码显示如下 2.5 低通滤波bilateralFilter双边滤波 函数原型 双边滤波的主要应用场景是视频美颜 cv2.bilateralFilter(img, d, sigmaColor, sigmaSpace, …) img输入图像 d直径与卷积核中心点的距离一般取5 sigmaColor颜色空间滤波器的sigma值。这个参数的值越大就表明该像素邻域内有更宽广的颜色会被混合到一起产生较大的半相等颜色区域。 sigmaSpacesigmaSpace坐标空间中滤波器的sigma值坐标空间的标注方差。他的数值越大意味着越远的像素会相互影响从而使更大的区域足够相似的颜色获取相同的颜色。当d0d指定了邻域大小且与sigmaSpace无关。否则d正比于sigmaSpace。   双边滤波的作用图像去噪保边对相关分析的结果有较大的影响对于裂缝比较强噪声比较少的图像来说可以将去噪的程度放大对以后的相关分析的结果就会有更少的噪声。对于噪声不是很集中的图像并有较多细节的图像增加保边的效果让相关分析及后续进行进一步的结构处理去噪。 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/biteral.jpg)# 双边滤波 img2 cv2.bilateralFilter(img, 5, 20, 50)new_image show_multi_imgs(4, [img, img2], (1, 2)) cv2.namedWindow(imgimg2, 0) cv2.imshow(imgimg2, new_image) cv2.waitKey(0) 运行代码显示如下 2.6 高通滤波Sobel 只能一次在x方向上或者y方向上求导然后把结果相加。 dst1 cv2.Sobel(src, ddepth, dx, dy, ksize 3, scale 1, delta 0, borderType BORDER_DEFAULT ) src输入原图像 ddepth位深默认为-1 dx,dy只能选择一个方向上要么0、1要么1、0 ksize卷积核大小默认为3当-1时为沙尔 scale缩放大小一般就用默认值 delta偏移量一般就用默认值 borderType边界扩充类型一般就用默认值   示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/biteral.jpg)# Sobel dx cv2.Sobel(img, -1, 1, 0, ksize3) dy cv2.Sobel(img, -1, 0, 1, ksize3)# dst dxdy dst cv2.add(dx, dy)new_image show_multi_imgs(4, [img, dx, dy, dst], (1, 4)) cv2.namedWindow(img1-4, 0) cv2.imshow(img1-4, new_image) cv2.waitKey(0) 运行代码显示如下 一幅图的边缘被很好的分割出来。 2.7 高通滤波Scharr 与Sobel类似只不过使用的ksize值不同Scharr不能改变卷积核的大小只能是3*3的。同样只能求一个方向上的边缘。 cv2.Scharr(src, ddepth, dx, dy, scale 1, delta 0, borderType BORDER_DEFAULT). src输入原图像 ddepth位深默认为-1 dx,dy只能选择一个方向上要么0、1要么1、0 scale缩放大小一般就用默认值 delta偏移量一般就用默认值 borderType边界扩充类型一般就用默认值 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/biteral.jpg)# Sobel当ksize-1时就是Scharr # dx cv2.Sobel(img, -1, 1, 0, ksize-1) # dy cv2.Sobel(img, -1, 0, 1, ksize-1)dx cv2.Scharr(img, -1, 1, 0) dy cv2.Scharr(img, -1, 0, 1)# dst dxdy dst cv2.add(dx,dy)new_image show_multi_imgs(4, [img, dx, dy, dst], (1, 4)) cv2.namedWindow(img1-4, 0) cv2.imshow(img1-4, new_image) cv2.waitKey(0) 运行代码显示如下 2.8 高通滤波Laplacian(拉普拉斯) Laplacian可以同时求两个方向上的边缘但是对噪音比较敏感一般需要先进行去噪再调用Laplacian。 dst cv2.Laplacian(src, ddepth, ksize 1 ,scale 1, borderType BORDER_DEFAULT) src输入原图像 ddepth位深默认为-1 ksize卷积核大小默认为1 scale缩放大小一般就用默认值 delta偏移量一般就用默认值 borderType边界扩充类型一般就用默认值 示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/biteral.jpg)dst cv2.Laplacian(img, -1, ksize5) new_image show_multi_imgs(4, [img, dst], (1, 2)) cv2.namedWindow(imgdst, 0) cv2.imshow(imgdst, new_image) cv2.waitKey(0) 卷积核大小为5*5的结果 运行代码结果显示 2.8 高通滤波Canny 使用5*5高斯滤波消除噪声可以计算图像的四个方向上的边缘04590135取局部的最大值多了一个阈值计算。高于阈值我们认为是边缘低于阈值就不是边缘显然A为边缘如果但是B和C介于最大值最小值之间BC既不是边缘也是边缘但是C与A在一条直线上所以C也是边缘。 dst cv2.Canny(img, minVal, maxVal) img原图像 minVal最小阈值 maxVal:最大阈值 低于最小阈值就不是边缘高于最大阈值是边缘。  示例代码 import cv2 import numpy as np# 一个窗口显示多张图片 def show_multi_imgs(scale, imglist, orderNone, border10, border_color(255, 255, 0))::param scale: float 原图缩放的尺度:param imglist: list 待显示的图像序列:param order: list or tuple 显示顺序 行×列:param border: int 图像间隔距离:param border_color: tuple 间隔区域颜色:return: 返回拼接好的numpy数组if order is None:order [1, len(imglist)]allimgs imglist.copy()ws , hs [], []for i, img in enumerate(allimgs):if np.ndim(img) 2:allimgs[i] cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)allimgs[i] cv2.resize(img, dsize(0, 0), fxscale, fyscale)ws.append(allimgs[i].shape[1])hs.append(allimgs[i].shape[0])w max(ws)h max(hs)# 将待显示图片拼接起来sub int(order[0] * order[1] - len(imglist))# 判断输入的显示格式与待显示图像数量的大小关系if sub 0:for s in range(sub):allimgs.append(np.zeros_like(allimgs[0]))elif sub 0:allimgs allimgs[:sub]imgblank np.zeros(((hborder) * order[0], (wborder) * order[1], 3)) border_colorimgblank imgblank.astype(np.uint8)for i in range(order[0]):for j in range(order[1]):imgblank[(i * h i*border):((i 1) * hi*border), (j * w j*border):((j 1) * w j*border), :] allimgs[i * order[1] j]return imgblankimg cv2.imread(../data/biteral.jpg)# canny dst cv2.Canny(img, 100, 200) dst cv2.cvtColor(dst, cv2.COLOR_GRAY2BGR)new_image show_multi_imgs(4, [img, dst], (1, 2)) cv2.namedWindow(imgdst, 0) cv2.imshow(imgdst, new_image) cv2.waitKey(0) 运行代码显示如下
http://www.dnsts.com.cn/news/56944.html

相关文章:

  • 网站开发的技术流程图泗洪网站设计公司
  • 佛山网站排名优化868868域名查询
  • 织梦音乐网站做分销网站系统下载
  • 想制作自己的网站吗展厅设计费
  • dedecms织梦搬家公司网站模板绍兴做公司网站的公司
  • 广州网站设计公司alexa排名全球前50网站
  • 海伦市网站怎么做电影网站服务器
  • 做网站费用计入什么wordpress 评论登陆
  • 网站怎么排名郑州最好的装修设计公司
  • 学校网站建设调查报告上海排名seo公司
  • 服装公司网站规划建设郑州一凡网站建设
  • 石狮网站微信平台开发教程
  • 德州营销型网站营商环境建设局网站
  • 网站开发用C今天的军事新闻
  • 今标 网站建设网站系统问题解决措施
  • 湖北省建设用地预审网站群晖frp 外网访问wordpress
  • 江苏靖江苏源建设有限公司招标网站做电商网站需要多少时间
  • php网站怎么缓存宜昌网络推广公司
  • 广州市专业网站设计wordpress 打不开主题
  • php网站建设安装环境大连哪个区最好
  • 如何开始做网站wd网址怎么推广
  • 网页 开发淄博seo排名
  • 建立网站费用表中国最强十大国企
  • 个人网站备案幕布成都网站建设公司 四川冠辰科技
  • 简单个人网站欣赏wordpress 放弃react
  • h5网站制作工具游戏网官网
  • 实验仪器销信应做何网站wordpress多语言包
  • 做女装的网站南沙营销型网站建设
  • 郑州个人网站制作公司ppt模板免费下载素材图片
  • 如何制作网站主页wordpress英文版切换中文