![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenCV-Python入门
MuMengSunny
浅水喧嚣,深水静默。
展开
-
24、sobel算子理论基础
一、含义Sobel算子是高斯平滑与微分操作的结合体,它的抗噪音能力很好。可以设定求导的方向(xorder或 yorder)。还可以设定使用的卷积核的大小( ksize),如果 ksize = -1,会使用 3x3的 Scharr滤波器,效果会更好,若速度相同,在使用 3x3滤波器时尽量使用 Scharr。二、计算方法...原创 2021-03-17 14:43:20 · 430 阅读 · 0 评论 -
23、黑帽操作
一、黑帽操作含义进行闭运算图像减去原图像后的图像,即:Blackhat(img) = Close(img)-img二、morphologyEx() 函数实现黑帽操作2.1、代码调用形式dst = cv2.morphologyEx(src,cv2.MORPH_BLACKHAT,kernel)src:需要处理的图像cv2.MORPH_BLACKHAT:指定为黑帽kernel:卷积核,为元组,一般使用 numpy 进行赋值2.2、案例实现#Author:MuMengSunny#Filenam原创 2021-03-17 14:26:17 · 445 阅读 · 0 评论 -
22、礼帽操作
一、礼帽操作含义原图像减去进行开运算后的图像,即:Tophat(img) = img - Open(img)通过礼帽操作,可以得到原图像中的噪声二、morphologyEx() 函数实现礼帽操作2.1、函数调用形式dst = cv2.morphologyEx(src,cv2.MORPH_TOPHAT,kernel)src:需要处理的图像cv2.MORPH_TOPHAT:指定为礼帽kernel:卷积核,为元组,一般使用 numpy 进行赋值2.2、案例实现#Author:MuMengSu原创 2021-03-16 22:37:50 · 954 阅读 · 0 评论 -
21、梯度运算
一、梯度运算含义一张图片分别做膨胀与腐蚀操作,最后用膨胀后的图片减去腐蚀的图片,得到的新图片便是该图片的梯度运算。即:梯度运算 (img) = 膨胀 (img) - 腐蚀 (img)通过梯度运算可以得到前景物体的轮廓。二、morphologyEx() 函数实现梯度运算2.1、函数调用格式dst = cv2.morphologyEx(src,cv2.MORPH_GRADIENT,kernel)src:需要处理的图像cv2.MORPH_GRADIENT:指定为梯度运算kernel:卷积核,为原创 2021-03-16 22:34:47 · 1620 阅读 · 0 评论 -
20、开运算与闭运算
一、开运算含义先进行腐蚀再进行膨胀就叫做开运算。开运算 (image)= 膨胀 (腐蚀 (image))图像被腐蚀后,去除了噪声,但会压缩图像;对腐蚀过的图像进行膨胀处理,可以去除噪声并保持原有形状。二、morphologyEx() 实现开运算2.1、函数调用格式dst = cv2.morphologyEx(src,cv2.MORPH_OPEN,kernel)src:需要处理的图像cv2.MORPH_OPEN:指定为开运算kernel:卷积核,为元组,一般使用 numpy 进行赋值2.2原创 2021-03-16 18:00:48 · 15384 阅读 · 2 评论 -
19、图像膨胀
一、图像膨胀含义1.1、含义图像膨胀类似于 “领域扩张 ”,将图像的高亮区域或白色部分进行扩张,运行结果图比原图的高亮区域更大。膨胀的运算符是 “⊕” ,其定义如下: A⊕B={x∣(B)x∩A≠Θ}A \oplus B=\left\{x \mid(B)_{x} \cap A \neq \Theta\right\}A⊕B={x∣(B)x∩A=Θ}该公式表示用 B来对图像 A进行膨胀处理,其中 B是一个卷积模板或卷积核,其形状可以为正方形或圆形,通过模板 B与图像A进行原创 2021-03-16 17:54:35 · 5875 阅读 · 1 评论 -
18、图像腐蚀
一、图像腐蚀含义1.1、定义腐蚀类似 “领域被蚕食 ”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果比原图的高亮区域更小。腐蚀的运算符号是 “ -”,其运算规则是: A−B={x∣Bx⊆A}A-B=\left\{x \mid B_{x} \subseteq A\right\}A−B={x∣Bx⊆A}该公式表示图像 A用卷积模板 B来进行腐蚀处理,通过模板 B与图像 A进行卷积计算,得出 B 覆盖区域的像素点最小值,并用这个最小值来替代参考点的像素值。如图所示原创 2021-03-16 17:49:23 · 1981 阅读 · 1 评论 -
17、中值滤波
一、中值滤波含义让临近的像素按照大小排列,取排序像素集中位于中间位置的值作为中值滤波后的像素值。二、medianBlur()函数实现中值滤波2.1、函数调用形式dst = cv2.medianBlur(src,ksize)src:需要处理的图像ksize:核大小,是一个比 1 大的奇数,不是元组2.2、案例实现#Author:MuMengSunny#Filename:中值滤波import cv2img = cv2.imread(r'F:\image\lenacolor.png'原创 2021-03-16 17:42:30 · 406 阅读 · 0 评论 -
16、高斯滤波
一、高斯滤波含义与均值滤波不同的是,高斯滤波给每一个像素点加一个系数,让临近的像素具有更高的重要度。对周围像素计算加权平均值,让较近的像素具有较大的权重值。二、GaussianBlur()函数实现高斯滤波2.1、函数调用形式dst = cv2.GaussianBlur(src,ksize,sigmaX,sigmaY)src:需要处理的图像ksize:核大小,必须设置为奇数sigmaX:X轴方向的方差,一般使用为 0sigmaY:一般与X轴保持一致,通常省略不写2.2、案例实现#Au原创 2021-03-16 17:36:29 · 334 阅读 · 0 评论 -
15、方框滤波
一、方框滤波方框滤波是均值滤波的一般形式,在均值滤波中,将滤波器中所有的像素值求和后的平均值作为滤波后结果,方框滤波也是求滤波器内所有像素值的之和,但是方框滤波可以选择不进行归一化,就是将所有像素值的和作为滤波结果,而不是所有像素值的平均值。用公式表达为:K=1α[1⋯1⋮⋱⋮1⋯1]K=\frac{1}{\alpha}\left[\begin{array}{ccc}1 & \cdots & 1 \\ \vdots & \ddots & \vdots \\ 1 &原创 2021-03-16 17:33:09 · 2102 阅读 · 0 评论 -
14、均值滤波
一、均值滤波含义任意一个像素点的值,都是周围 N×NN \times NN×N 个像素点的均值。针对原始图像内的像素点,采用核处理,得到结果图像,如当选择 5×55\times 55×5 的核时:二、blur()函数实现均值滤波2.1、格式dst = cv2.blur(src,ksize)src:要处理的图像ksize:核大小,以元组形式输入,如:(3,3)2.2、案例实现#Author:MuMengSunny#Filename:均值滤波import cv2 i原创 2021-02-25 08:47:41 · 1469 阅读 · 0 评论 -
13、threshold函数
一、threshold()函数形式retval,dst = cv2.threshold(src,thresh,maxval,type)输入参数:src:需要处理的图像thresh:阈值maxval:最大像素值type:阈值分割类型输出参数:retval:阈值dst:处理后的图像二、OpenCV实现不同阈值分割2.1、二值分割retval_bin,img_bin = cv2.threshold(img,128,512,type=cv2.THRESH_BINAR原创 2021-02-25 08:39:09 · 17771 阅读 · 0 评论 -
12、阈值分割基础理论
一、阈值分割阈值分割法是一种基于区域的图像分割技术,原理是把图像象素点分为若干类。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域不具有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。二、常见的 5 种阈值分割法2.1、 二进制阈值化分割原理:先要选定一个特定的阈值,比如:127;新的阈值产生规则为: 大于或者等于 127 的像素点的灰度值设定为最大值(如 8位灰度原创 2021-02-21 08:58:53 · 6621 阅读 · 0 评论 -
11、图像翻转
一、flip()函数实现图片翻转语法格式dst = cv2.flip(src,flipCode)src 代表要进行翻转的图像flipcode代表要翻转的格式: flipcode = 0 :上下翻转 flipcode >0 :左右翻转 flipcode < 0:先上下翻转,再左右翻转二、Python 实现#Author:MuMengSunny#Filename:图像翻转import cv2img = cv2.imread(r'F:\image\lenacolo原创 2021-02-21 08:51:18 · 487 阅读 · 0 评论 -
10、图像缩放
一、*resize()*函数实现图像的缩放语法格式:dst=cv2.resize(src,dsize,fx,fy)dst = cv2.resize(src,dsize,fx,fy)dst=cv2.resize(src,dsize,fx,fy)dsize是目标尺寸,先列后行;fx,fy分别代表水平方向与垂直方向放大的倍数dsize和 fx、fy设置一方即可,否则会出错,如:cv2.resize(src,(200,100))# 或者cv2.resize(src,None,fx=0.5,f原创 2021-02-20 22:09:15 · 233 阅读 · 0 评论 -
09、图像类型转换
一、常见的类型转换OpenCV 提供了200多种不同类型之间的转换,常见的有:cv2.COLOR_BGR2GRAY # BGR -> GRAYcv2.COLOR_BGR2RGB # BGR -> RGBcv2.COLOR_GRAY2BGR # GRAY -> BGR二、类型转换彩色 ——> 灰色img = cv2.imread(r'F:\image\lenacolor.png') img_grey = cv2.cvtColor(img,cv2.原创 2021-02-20 22:03:13 · 293 阅读 · 1 评论 -
08、图像融合
一、含义将2张或者2张以上的图片信息融合到一张上融合的图像含有更多的信息、能够方便人来观察或者计算机处理融合的时,会采用一些算法:不同照片采用不同比例因子结果图像=图像1×系数1+图像2×系数2+亮度调节量结果图像 = 图像1 \times 系数1 + 图像2 \times 系数2 + 亮度调节量结果图像=图像1×系数1+图像2×系数2+亮度调节量img=img1×0.3+img2×0.2+18img = img1 \times 0.3 + img2 \times0.2 + 1原创 2021-02-12 20:58:01 · 246 阅读 · 0 评论 -
07、图像加法
一、numpy加法取模加法二、opencv加法饱和运算三、二者比较四、注意事项 参与运算的图像,其大小、类型必须一致五、源程序#Author:MuMengSunny#Filename:图像加法import cv2import numpy as npimg = cv2.imread(r'F:\picture\1111.jpg',cv2.IMREAD_UNCHANGED)img_copy = imgresultnp = img + img_copy原创 2021-02-11 23:13:22 · 146 阅读 · 0 评论 -
06、通道的拆分与合并
一、拆分使用 spilt() 函数可以将 RGB 图像一次拆分为三个通道;如果只是想提取某一个通道的图像,可以使用列表索引。img = cv2.imread(r'F:\picture\1111.jpg',cv2.IMREAD_UNCHANGED)Blue,Green,Red = cv2.split(img)'''或者:Blue = cv2.spilt(img)[0]Green = cv2.spilt(img)[1]Red = cv2.spilt(img)[2]'''# 显示单个通道图像原创 2021-02-11 23:06:56 · 513 阅读 · 1 评论 -
05、图像ROI
一、含义ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。二、代码实现#Author:MuMengSunny#Filename:图像ROI(感兴趣区域)import numpy as npimport cv2# 读取图片原创 2021-02-11 22:35:21 · 1332 阅读 · 0 评论 -
04、获取图片属性
一、获取图片的尺寸、像素点数目以及类型img = cv2.imread(r'F:\picture\1111.jpg',cv2.IMREAD_UNCHANGED)# 获取图片的形状print('图片形状为:',img.shape)# 获取像素的数目print('图片像素数目为:',img.size)# 获取图片的类型print('图片的类型为:',img.dtype)二、显示效果...原创 2021-02-09 10:09:18 · 331 阅读 · 0 评论 -
03、使用item函数产看像素值
一、读取像素print('原像素值为:',img.item(100,100,0)) # 必须指定通道二、修改像素值img.itemset((100,100,0),0)print('新像素值为:',img.item(100,100,0))三、结果对比四、结论使用 item() 函数对于 RGB 图像,一次只能查看一个通道某个点;同理使用 itemset() 函数,一次只能修改一个通道某个个点的像素值。...原创 2021-02-09 10:03:33 · 392 阅读 · 0 评论 -
02、像素读取与修改
一、像素读取读取照片img = cv2.imread(r'F:\picture\1111.jpg',cv2.IMREAD_UNCHANGED) # 不改变之前样式查看照片格式print("原图像格式为:",img.shape) # 查看图像格式查看某个像素值print('原象素值为:',img[100,100]) # 因为是RGB图片,所以有3个通道二、像素值修改img[100:150,100:150] = [0,0,0] # 因原创 2021-02-09 09:54:40 · 460 阅读 · 0 评论 -
01、图片读取、显示与保存
一、读取img = cv2.imread(r'F:\picture\1111.jpg') # 读取图片,可以选择控制参数:原象、黑白等二、显示cv2.imshow('demo',img) # 显示图片,其中‘demo’为显示框名字# 设置窗口显示时间cv2.waitKey(0) # 0表示一直等待;如果其余数值,如1000,表示等待1000ms三、保存if k ==27: cv2.destroyAllWindows() # 按下‘ESC’,则退出窗口eli原创 2021-02-09 09:48:02 · 242 阅读 · 0 评论