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

松江泖港网站建设云南专业网站建站建设

松江泖港网站建设,云南专业网站建站建设,南昌seo网站设计,wordpress管理插件下载接上期: 5500字,从零开始入门OpenCV的超基础操作~-CSDN博客 目录 一.滤波操作 1.均值滤波 2.方框滤波 3.高斯滤波 4.中值滤波 5.聚合展示 二.形态学操作 1.腐蚀 2.膨胀 3.开运算和闭运算 4.梯度 5.礼帽和黑帽计算 一.滤波操作 也即对图像…

接上期:

5500字,从零开始入门OpenCV的超基础操作~-CSDN博客

目录

一.滤波操作

1.均值滤波

2.方框滤波

3.高斯滤波

4.中值滤波

5.聚合展示

二.形态学操作

1.腐蚀

2.膨胀

3.开运算和闭运算

4.梯度

5.礼帽和黑帽计算


一.滤波操作

也即对图像做出某种平滑处理。如下为原图:

1.均值滤波

假设选择3*3的卷积核,则某点处的像素值应该为其周围及本身在内的9个点像素的均值。如下,blur的第二个参数即为卷积核,也可以选择5*5:

import cv2
def cv_show(img,name):cv2.imshow(name,img) #显示图像,也可以创建多个窗口cv2.waitKey(0) #等待时间,这里设置为0,表示任意键终止cv2.destroyAllWindows() #销毁窗口
img = cv2.imread("D:\\Bayern.jpg")
blur=cv2.blur(img,(3,3))#均值滤波
cv_show(blur,"blur")

2.方框滤波

相比前者多了一个可以选择归一化的参数,这里设为true值在底层操作上就和前者一模一样了:

box = cv2.boxFilter(img,-1,(3,3),normalize=False)
cv_show(box,"box")

但如果设置为false,也即不会归一化,这时难免会越界,会自动进行图像的阈值操作:当值大于255时,一律按照255计算:

3.高斯滤波

高斯滤波某种程度上反映了和正态分布类似的思想:离我越近的则关系越紧密,也即和当前值相似度越大则在取加权平均时的权值越大,这和正态分布中离均值越近的概率越大的性质不谋而合。具体来说构造矩阵时相当于将每个位置的元素按照相似度分配权重,而不是均值滤波那样全部给为相同的值。

sigma的值夜可以设置为0,意味着自动计算出合适的值:

gaussian= cv2.GaussianBlur(img,(5,5),1)
cv_show(gaussian,"gaussian")

4.中值滤波

对卷积核内的元素进行排序并选出中值,来代替目标点位上的值(即卷积核的中心值):

median=cv2.medianBlur(img,3)
cv_show(median,"median")

5.聚合展示

可以将所有的结果一次性显示出来。hstack为水平聚合,而vstack为垂直聚合:

import cv2
import numpy as np
from scipy.signal.windows import gaussian
from sympy import together
def cv_show(img,name):cv2.imshow(name,img) #显示图像,也可以创建多个窗口cv2.waitKey(0) #等待时间,这里设置为0,表示任意键终止cv2.destroyAllWindows() #销毁窗口
img = cv2.imread("D:\\Bayern.jpg")
img = cv2.resize(img,(0,0),fx=0.5,fy=0.5)
blur=cv2.blur(img,(3,3))
gaussian=cv2.GaussianBlur(img,(3,3),0)
median=cv2.medianBlur(img,3)
#tog=np.hstack((blur,gaussian,median))
tog=np.vstack((blur,gaussian,median))
cv_show(tog,"tog")

如下,分别是均值、高斯和中值滤波的效果:

二.形态学操作

1.腐蚀

如下是一张图,不难发现有很多红色的毛线杂质,因此我们要做的是将这些杂质处理掉~

 腐蚀操作一般处理二值图,因此我们需要先进行灰度化、二值化处理:

import cv2
import numpy as np
def cv_show(img,name):cv2.imshow(name,img) #显示图像,也可以创建多个窗口cv2.waitKey(0) #等待时间,这里设置为0,表示任意键终止cv2.destroyAllWindows() #销毁窗口
img = cv2.imread("D:\\Bayern1.jpg")
img = cv2.resize(img,(0,0),fx=0.7,fy=0.7)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
res,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
cv_show(thresh,"Threshold")

然后进行腐蚀:

kernel = np.ones((3,3),np.uint8)#构建卷积核大小
erosion = cv2.erode(thresh,kernel,iterations=1)
cv_show(erosion,"erosion")

腐蚀效果和所构建的卷积核大小有关系,选用5*5则会将字母本身也变细:

在5*5的前提下如果再增加迭代次数,可能会将原图直接腐蚀殆尽:

kernel = np.ones((5,5),np.uint8)#构建卷积核大小
erosion = cv2.erode(thresh,kernel,iterations=2)
cv_show(erosion,"erosion")

2.膨胀

可以看为腐蚀的逆操作。之前的腐蚀可能会将本来的字体继续变小,这里我们用膨胀操作相当于抵消一下:

kernel = np.ones((5,5),np.uint8)#构建卷积核大小
erosion = cv2.erode(thresh,kernel,iterations=1)
dilate = cv2.dilate(erosion,kernel,iterations=1)
tog=np.vstack((thresh,erosion,dilate))
cv_show(tog,"tog")

各位也可以自行尝试改变参数哦~ 

3.开运算和闭运算

开运算就是先腐蚀再膨胀,使用形态学函数morphologyEx,指定参数为cv2.MORPH_OPEN

opening=cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel)

而闭运算就是先膨胀后腐蚀:

closing=cv2.morphologyEx(thresh,cv2.MORPH_CLOSE,kernel)

对比一下:

tog=np.vstack((thresh,opening,closing))
cv_show(tog,"tog")

先腐蚀后膨胀可以良好地去掉杂质,而先膨胀后腐蚀则不仅去不掉刺还变粗了~ 

4.梯度

所谓的梯度可以理解为某种边框,计算公式是膨胀减去腐蚀——相当于镂空一个环。

import cv2
import numpy as np
def cv_show(img,name):cv2.imshow(name,img) #显示图像,也可以创建多个窗口cv2.waitKey(0) #等待时间,这里设置为0,表示任意键终止cv2.destroyAllWindows() #销毁窗口
img = cv2.imread("D:\\Circle.jpg")
img = cv2.resize(img,(0,0),fx=0.7,fy=0.7)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
res,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
kernel = np.ones((5,5),np.uint8)#构建卷积核大小
erosion=cv2.erode(thresh,kernel,iterations=1)
dilate=cv2.dilate(thresh,kernel,iterations=1)
ref=dilate-erosion
cv_show(ref,"ref")

但实际上内置的处理对参数的把控比人为操作更胜一筹:

5.礼帽和黑帽计算

礼帽为原始结果减去开运算结果,黑帽为闭运算减去原始结果。对比了解一下:

import cv2
import numpy as np
def cv_show(img,name):cv2.imshow(name,img) #显示图像,也可以创建多个窗口cv2.waitKey(0) #等待时间,这里设置为0,表示任意键终止cv2.destroyAllWindows() #销毁窗口
img = cv2.imread("D:\\Bayern1.jpg")
img = cv2.resize(img,(0,0),fx=0.7,fy=0.7)
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
res,thresh = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
kernel = np.ones((3,3),np.uint8)#构建卷积核大小tophat=cv2.morphologyEx(thresh,cv2.MORPH_TOPHAT,kernel)
blackhat=cv2.morphologyEx(thresh,cv2.MORPH_BLACKHAT,kernel)
top=np.vstack((img,tophat,blackhat))
cv_show(top,"top")

 根据开闭运算的定义,礼帽实际上将杂质保留了下来,而黑帽则是将本体的轮廓保留下来~

 


文章转载自:

http://k1L3h4VB.nwrzf.cn
http://cmRFBVi8.nwrzf.cn
http://e5HVZD0W.nwrzf.cn
http://QukCTXOP.nwrzf.cn
http://0PparrwY.nwrzf.cn
http://JrcCLyyG.nwrzf.cn
http://N1XU2oQj.nwrzf.cn
http://wbJiKM9B.nwrzf.cn
http://xPWb6FEe.nwrzf.cn
http://5CZNXibA.nwrzf.cn
http://bAkQSfDr.nwrzf.cn
http://8r4mKg1O.nwrzf.cn
http://9qhiyTta.nwrzf.cn
http://41VNhRN5.nwrzf.cn
http://EJRcc3Np.nwrzf.cn
http://drpUZVbs.nwrzf.cn
http://NOoR3ZZA.nwrzf.cn
http://iydOyKLt.nwrzf.cn
http://9INadgvD.nwrzf.cn
http://VY4CTPqD.nwrzf.cn
http://1EDfizhC.nwrzf.cn
http://eUfG0v1u.nwrzf.cn
http://Iw3BUjHg.nwrzf.cn
http://SQ0FCZCF.nwrzf.cn
http://uNBqim94.nwrzf.cn
http://kwPokjrs.nwrzf.cn
http://vXJFf3Cq.nwrzf.cn
http://2JxoubBL.nwrzf.cn
http://4YMYxWZr.nwrzf.cn
http://eiIU5aGU.nwrzf.cn
http://www.dtcms.com/wzjs/746133.html

相关文章:

  • 求推荐专业的网站建设开发备案用的网站建设方案书怎么写
  • 锦州网站建设锦州店面设计报价
  • 交互式网站有哪些功能电商一年可以赚多少钱
  • 毛织厂家东莞网站建设网站建设有没有资质
  • 地方网站用什么域名代写企业软文
  • 建立一个自己的网站需要多少钱app界面设计模板素材免费
  • 网站策划书10个点怎么写手机网站功能
  • 网站建设 意识形态wordpress 英文月份
  • 哈尔滨网站建设哪家好优化方案英语2024版答案
  • 做瞹瞹爱免费网站网站建设客户需求分析调查表
  • 电子毕业设计网站建设做seo要明白网站内容乃重中之重
  • 网站打不开原因大兴网站开发网站建设咨询
  • 王烨雄企业网站seo 优帮云
  • 网站开发 报价单 表格什么外贸网站做箱包好
  • 招商网站的建设意义软装公司
  • 如何做网站标题网站优化公司大家好
  • 网站正在建设中 英语翻译搜索引擎排名优化seo
  • 蓝田县住房与城乡建设局网站网站建立者
  • 易搜网站建设做任务刷王者皮肤网站
  • 如何做一网站网站 设计案例
  • 建设银行网站打不井房地产销售政策
  • 彩票网站的推荐怎么做电商直播系统开发
  • 河南夏邑网站建设青岛公司
  • 青海住房与建设厅网站dw怎么做网站跳转
  • 网站建设关键词自己做的网站把密码改忘了怎么办
  • 北京网站建设方面揭阳企业做网站
  • 常德网站建设制作外包服务公司排名
  • 婚纱网站建设步骤和方法app定制的价格开发
  • 张槎网站建设godaddy中文网站开发
  • 怎么自己做网站挣钱网站制作公司的网站