有情怀的机械男
这个作者很懒,什么都没留下…
展开
-
【tensorFlow】——图像数据增强、读取图像、保存图像
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/4/13 10:54# @Author : @linlianqin# @Site : # @File : 数据增强(distorted).py# @Software: PyCharm# @description:一些基于TensorFlow的数据处理方法import tensorflow as tfimport cv2import matplotl.原创 2021-04-13 12:29:23 · 1192 阅读 · 1 评论 -
【图像处理】——Python实现two_pass方法来进行连通域的提取
目录一、相关知识1、two_pass算法思想2、并查集算法二、自定义的two_pass算法1、将first_pass得到的等价对表转换成树状结构的列表文件,equlist2equTree.py2、根据equTree来判断两个label是否连通的文件union_find.py3、主函数two_pass.py4、例子demo.py四、不足一、相关知识此部分转自:https://blog.csdn.net/hemeinvyiqiluoben/article/det.原创 2021-03-09 09:34:11 · 2700 阅读 · 0 评论 -
【opencv】——钢管计数(霍夫圆变换 + 阈值 + canny)
目录方法一:霍夫圆变换 + canny方法二 阈值 + 寻边对图中的钢管进行计数方法一:霍夫圆变换 + canny# 霍夫圆变换,主要是要将参数调整好def method1(): img = cv2.imread('steel.jpg',0) img1 = cv2.imread('steel.jpg') circles = cv2.HoughCircles(img, # 灰度图像 cv2.HOU原创 2021-03-04 17:33:10 · 1977 阅读 · 2 评论 -
【图像处理】——傅里叶变换、DFT以及在图像上的应用
1、傅里叶变换其实就是时域转换为频域,时域是指物理量关于时间的变化,频率注重的是幅度和频率任何的周期函数都可以转换成三角函数的和,也就是能够解析出一个周期函数含有哪些频率的三角函数信号以下图片摘自:https://daily.zhihu.com/story/3935067如上图经过越来越多的三角函数的叠加,使得三角函数叠加后的形状越来越接近方形波下图则展示了叠加状和分量的关系下面这张图很好的展示了傅里叶变换在频域和时域之间的作用2、DFT参考:https://zh原创 2021-01-31 14:25:05 · 3394 阅读 · 0 评论 -
【图像处理】——图像特效处理(马赛克、图像融合、毛玻璃等)
参考:https://blog.csdn.net/qq_43328040/article/details/109081414import cv2import numpy as npimport random#马赛克:将一定大小窗口的RGB设置成一个颜色def horseBox(img): row,col,chal = img.shape boxRow = int(0.3*row) boxcol = int(0.3*col) for m in range(50,boxRow+50):原创 2020-10-20 15:31:49 · 577 阅读 · 0 评论 -
【图像处理】——灰度变换心得(cv2.normalize规范化值0-255,cv2.convertScaleAbs(new_img)转为8位图)
目录一、灰度变换函数对数变换加码变换常见雷点常见灰度变换函数两个函数cv2.normalize,cv2.convertScaleAbs(new_img)一、灰度变换函数Python图像处理(一)【灰度化、二值化、灰度变换】Python实现对数变换、幂律变换对数变换加码变换常见雷点注意:上述的变换是先将原始的像素值进行对数或者幂律变换,然后得到相应变换后的矩阵,为了使得能够正常的显示,还需要将矩阵元素值的范围限制在0-255之间,以及将其转换为8位图原创 2020-10-15 10:44:02 · 4149 阅读 · 0 评论 -
【图像处理】——比特平面原理和实现方法(全网较全面,含所有比特位图的分层方法)
根据冈萨雷斯的数字图像处理课本(中文第三版)P70-P71,比特平面分层我的理解是:一幅8比特的图像,可以看作8个一比特的图像组成从底部到顶部,底部的平面有更惊喜的灰度细节,而高阶的比特平面则包含了大多数的数据。而比特分层的实现就是依靠阈值处理函数:一开始我的理解是简单的阈值函数,但这是完全错误的!既然8比特图像的灰度级是256,则第一比特平面即将0-127的值映射为0,128-255映射为1。如此,那么第七比特平面0-63的映射为0,然后64-255映射为1。然后继续推导下去在第2,第3比..原创 2020-10-14 16:55:57 · 5649 阅读 · 2 评论 -
【图像处理】——Python实现图像特征提取&BP神经网络实现图像二分类
一、图像特征提取图像具有灰度特征、GLCM特征、Huments不变矩特征、LBP特征,具体可参考我主页的其他博客import cv2import numpy as npfrom numpy import histogram#灰度特征def GrayFea(faultness): ''' :param faultness: 灰度图像 :return: list->(4) ''' hist0 = cv2.calcHist([faultness], [0], None, [25原创 2020-10-13 16:00:38 · 6256 阅读 · 9 评论 -
【机器学习】——纯Python建立BP模型
参考:https://blog.csdn.net/michael_f2008/article/details/103715699https://developer.aliyun.com/article/614411import pandas as pdimport numpy as npimport datetimefrom sklearn.utils import shuffle# 1.初始化参数def initialize_parameters(n_x, n_h, n_y):原创 2020-10-12 16:43:24 · 739 阅读 · 2 评论 -
【图像处理】——求解LBP特征Python
from skimage import feature as skftimport cv2import numpy as npImg = cv2.imread(r"E:bpPackage\colorful_lena.jpg")grayImg = cv2.cvtColor(Img,cv2.COLOR_RGB2GRAY)methods = ["default","uniform","nri_uniform",'ror','var']for method in methods: lbp = skf.原创 2020-10-12 16:05:28 · 786 阅读 · 1 评论 -
【图像处理】——Python实现灰度特征提取
目录1、灰度特征2、Python代码1、灰度特征2、Python代码import cv2import numpy as npdef gray_features(img): hist = cv2.calcHist([img],[0],None,[256],[0,255])#得到全局直方图统计数据 h,w = img.shape hist = hist/(h*w)#将直方图归一化为0-1,概率的形式 grayFeature = []原创 2020-10-10 23:20:50 · 5407 阅读 · 8 评论 -
【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略
具体可参考:https://blog.csdn.net/Eastmount/article/details/89341077本文补充了用Python自定义函数来实现下采样和上采样1、下采样Python自带函数dst = pyrDown(src[, dst[, dstsize[, borderType]]])src表示输入图像, dst表示输出图像,和输入图像具有一样的尺寸和类型 dstsize表示输出图像的大小,默认值为Size() borderType表示像素外推方法,详见cv:原创 2020-10-07 10:00:05 · 1533 阅读 · 1 评论 -
【图像处理】——遍历图像所有像素的方法(for 循环和np.where遍历)应用在模板制作
目录具体np.where的用法可以参见:其他遍历图像的所有像素的方法:模板制作流程Python代码具体np.where的用法可以参见:https://blog.csdn.net/YH_24H/article/details/108368994其他遍历图像的所有像素的方法:https://blog.csdn.net/gdut2015go/article/details/49282031模板制作流程Python代码import cv2import numpy原创 2020-10-06 17:30:10 · 1714 阅读 · 0 评论 -
【图像处理】——Python实现几何变换(自定义+opencv库)
理论知识:参考https://blog.csdn.net/on2way/article/details/40460675Python调用opencv函数参考:https://blog.csdn.net/on2way/article/details/46801063一、引自《数字图像处理》的基础知识汇总 这个很重要!!!这里需要注意的是反向映射和前向映射的区别,反向映射是扫描输出图像,因为输出图像的大小需要我们事先进行设置,通常设置成大小和原图像一样且像素值全为0或1的图像,...原创 2020-10-05 21:27:17 · 714 阅读 · 1 评论 -
【图像处理】——正装照换底色Python
import cv2import numpy as np# 读取照片img=cv2.imread("personalPic.jpg")# 图像缩放img = cv2.resize(img,None,fx=0.3,fy=0.3)rows,cols,channels = img.shapeprint(rows,cols,channels)# img_medianBlur=cv2.medianBlur(img,3) # 中值滤波,必须是大于1的奇数,如3、5、7…# cv2.namedWi.原创 2020-10-05 15:05:59 · 555 阅读 · 0 评论 -
【图像处理】——图像内插法
参考:https://blog.csdn.net/lovexlsforever/article/details/79508602cv2.resize函数當我們縮小影像時,使用CV_INTER_AREA會有比較好的效果,當我們放大影像,CV_INTER_CUBIC會有最好的效果void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEA.原创 2020-10-05 15:04:55 · 665 阅读 · 0 评论 -
【图像处理】——特征匹配(SIFT特征检测器+FLANN特征匹配方法+KNN近邻最优匹配筛选)——cv.xfeatures2d.SIFT_create()&sift.detectAndCompute
cv.FlannBasedMatchercv.drawMatchesKnncv2.findHomographyopencv中match与KnnMatch返回值解释原创 2020-09-24 18:14:40 · 12775 阅读 · 8 评论 -
【图像处理】——改变图像的大小(降采样&重采样)下采样和上采样
转载自:https://jingyan.baidu.com/article/a3a3f81139be1f8da2eb8ade.html目录1、拉伸图片——重采样2、缩小图片1)三次插值法cv2.INTER_CUBIC2)重采样插值法cv2.INTER_AREA3)上面两种方法的差值我们常常需要将图片变成一样大小的图片,这样利于整理和批量操作,这时候就需要使用到调整图像的大小了这里需要使用到的是重采样和降采样,重采样用在拉伸图像上,增加的像素点的像素值是通过插值法来得到的,最常原创 2020-09-23 18:57:47 · 6022 阅读 · 0 评论 -
【图像处理】——图像的差集、并集、补集、交集以及两个图像相减出现负数的处理方法
目录1、交集2、差集3、并集4、补集前提:图像是二值图像,背景为0,前景为255,小写字母表示对应大写字母图像集中的像素点1、交集图像的交集:A交B = min(a,b),即相同时取相同的像素值,否则就取0即背景像素值2、差集最常见遇到的问题就是直接将两幅图像进行相减,得到的结果显然是错误的,因为会出现负数,而图像是uint8类型的,没有负号不能正确的处理负数,因此这时候可以在输入图像的时候通过np.int16来进行改变图像的类型,进而来实现负数的正确显示在openc原创 2020-09-23 17:52:58 · 8186 阅读 · 0 评论 -
【图像处理】——Python鼠标框选ROI(感兴趣)区域并且保存(含鼠标事件)
鼠标交互切割矩形接下来,就是本文重点了。先吐个槽,网上有资源,但搜到的都是C++的。本来有点气馁的,还好,有官网在,文档写得很清楚,而且接口函数名字变化不大,稍微做下修改就行了。 import cv2 global imgglobal point1, point2def on_mouse(event, x, y, flags, param): global img, point1, point2 img2 = img.copy() if event == cv2.原创 2020-09-16 22:15:28 · 5585 阅读 · 3 评论 -
【图像处理】——在plt绘制的坐标窗口中,捕获鼠标点,在右下角显示点的坐标
plt.title('Template Image'), plt.xticks([]), plt.yticks([])原创 2020-09-16 19:21:14 · 1336 阅读 · 0 评论 -
【图像处理】——鼠标点击图像的一处,获得点击点的坐标值
import cv2import numpy as np# 图片路径img = cv2.imread('5-.jpg')a = []b = []def on_EVENT_LBUTTONDOWN(event, x, y, flags, param): ''' :param event: 鼠标事件 :param x: 点击点的横坐标 :param y: #点击点的纵坐标 :param flags: :param param: :ret.原创 2020-09-16 19:18:19 · 1443 阅读 · 0 评论 -
【图像处理】——创建一个新的图片
方法一:直接复制一个已经存在的图片img.copy()如果是想生成一个指定大小的图片,则可以通过numpy数组进行创建方法二:通过numpy创建(注意有坑)img = numpy.zeros((h,w))#h,w是指定的图像的高和宽,这样看似可以其实不然上述方法得到的图像不是8位的,但是图像数组的存在方式是8bit无字符整形的,因此需要定义数组成8bit的,这样才能将图片正常显示出来img = numpy.zeros((h,w),numpy.uint8)#h,w是指定的图像的原创 2020-09-15 20:31:38 · 2673 阅读 · 0 评论 -
【图像处理】——Python霍夫变换之直线检测(主要是两个函数Houghlines&HoughlinesP)
一、原理(摘自《数字图像处理冈萨雷斯》)即在xy平面上一条直线上的点在ab平面上是无数条直线组成的,而这些直线都会经过一个点,这个点的a,b值就是对应xy平面直线的截距与斜率2、Python函数"""cv2.HoughLines() dst: 输出图像. 它应该是个灰度图 (但事实上是个二值化图) lines: 储存着检测到的直线的参数对 (r,\theta) 的容器 rho : 参数极径 r 以像素值为单位的分辨率. 我们使用 1 像素. theta: 参原创 2020-09-12 23:22:18 · 10179 阅读 · 3 评论 -
【图像处理】——纹理特征提取方法(LBP局部二值模式和GLCM灰度共生矩阵)
纹理特征提取方法局部二值模式(LBP)(结构法)Local binary patterns原理将像素点的邻域八个像素点与中心像素点值进行比较,大于设为1,小于设为0,这样就会得到一个邻域值为1和0的格子,将这八个值按照一定的规则排列成一个二进制的数字,并且转换为十进制作为中心像素的灰度值,对每一个像素点进行该操作,这样就得到了图像的LBP特征几种形式方形邻域中心像素点方形邻域八个像素格的值进行比较,大于为1,小于为0,以左上角为起始,顺时针得到一个8位二进制,化为十进制作为中心像素原创 2020-07-19 21:42:01 · 6404 阅读 · 1 评论 -
【图像处理】——Python+opencv实现图像的hu不变矩特征提取(含原理、推导过程、应用、代码等)
转载本文请注明详细地址本文介绍了矩和图像矩的含义本文介绍了不变矩的计算、应用本文介绍了如何计算图像相似度原创 2020-07-17 13:12:12 · 5501 阅读 · 1 评论 -
【图像处理】——Python+opencv实现提取图像的几何特征(面积、周长、细长度、区间占空比、重心、不变矩等)
转载请注明详细地址本文简单介绍了图像常见几何特征的概念以及求解方法本文介绍了Python和opencv求解几何特征的常用方法原创 2020-07-16 21:55:25 · 7777 阅读 · 0 评论 -
【图像处理】——实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(connectedComponentsWithStats()函数和connectedComponents()函数)
对于一个二值化图像的后续处理方式有两种方式,一种是利用cv2.findcontours()函数和cv2.ContourArea()函数对图像轮廓进行跟踪,可以得到图像轮廓的点集合,以及得到各个轮廓的面积值具体可见:《【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)》 另外一种方式就是用函数cv2.connectedComponentsWithStats()和函数cv2.connectedC原创 2020-07-15 16:37:55 · 5133 阅读 · 1 评论 -
【图像处理】——Python+opencv实现二值图像的轮廓边界跟踪以及轮廓面积周长的求解(findcontours函数和contourArea函数)
转载请注明本函数文详细地址本文讲解了opencv自带轮廓跟踪以及绘制轮廓的函数本文讲解了一种基于链码的一种轮廓检测方法本文一到四部分转载至:《opencv cv.findContours 函数详解》原创 2020-07-14 15:49:18 · 8494 阅读 · 0 评论 -
【图像处理】——Python OpenCV实现形态学膨胀、腐蚀开闭操作(可以用于图像滤波、图像分割等)
转载博客请注明详细地址,谢谢本文讲了形态学基本操作膨胀腐蚀开闭操作的原理本文讲解了用OpenCV-Python实现形态学操作原创 2020-07-10 21:34:52 · 1903 阅读 · 0 评论 -
【图像处理】——Python图像分割边缘检测算法之二阶梯度算子(laplace、log、dog算子)
介绍常用二阶边缘检测算子的原理以及代码,还对一阶二阶的算子进行了对比原创 2020-07-08 16:02:47 · 5778 阅读 · 0 评论 -
【图像处理】——图像增强Python实现直方图均衡化
简单来说就是使得灰度在不同灰度级别出现的概率更加的均匀均衡的意思就是使得每一个灰度级别的像素点个数是一样或者相近的,这时候灰度累积直方图是一条直线,这时候出现的频率相近则灰度级别类别也就多了,出现的次数也差不多,能够增加图像的对比度,均衡化常用于偏暗和偏亮的图像处理原创 2020-07-07 19:20:27 · 5363 阅读 · 6 评论 -
【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)
边缘检测算法是指利用灰度值的不连续性质,以灰度突变为基础分割出目标区域。对铝铸件表面进行成像后会产生一些带缺陷的区域,这些区域的灰度值比较低,与背景图像相比在灰度上会有突变,这是由于这些区域对光线产生散射所引起的。因此边缘检测算子可以用来对特征的提取。一种是基于一阶微分的算子,也称基于搜索的算子,首先通过一阶导数计算边缘强度,然后采用梯度的方向来对边缘的局部方向进行寻找,同时根据该方向来寻找出局部梯度模的最大值,由此定位边缘,如Roberts Cross算子,Prewitt算子Sobel算原创 2020-07-07 11:56:18 · 9129 阅读 · 4 评论 -
【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)
【图像处理】——图像质量评价指标信噪比(PSNR)和结构相似性(SSIM)(含原理和Python代码)原创 2020-07-05 22:27:06 · 6458 阅读 · 0 评论 -
【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)
图像滤波也就是图像平滑化,图像平滑是一种区域增强的算法,平滑算法有邻域平均法、中指滤波、边界保持类滤波等。在图像产生、传输和复制过程中,常常会因为多方面原因而被噪声干扰或出现数据丢失,降低了图像的质量(某一像素,如果它与周围像素点相比有明显的不同,则该点被噪声所感染)。这就需要对图像进行一定的增强处理以减小这些缺陷带来的影响。图像平滑 有均值滤波、方框滤波、中值滤波和高斯滤波等.在opencv中都是通过一个搜索窗口即核来对图像进行扫描,将扫描后的结果经过处理作为新的像.原创 2020-07-05 16:32:19 · 3973 阅读 · 0 评论 -
【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)
随机噪声、高斯噪声、椒盐噪声的添加原创 2020-07-05 12:44:57 · 27179 阅读 · 2 评论 -
【图像处理】——图像的二值化操作及阈值化操作(固定阈值法(全局阈值法——大津法OTSU和三角法TRIANGLE)和自适应阈值法(局部阈值法——均值和高斯法))
即将图像的灰度值按照一定的阈值将其变成只有0(黑色)和255(白色),这样便于目标区域和背景区域分隔开,实际上一般是黑色即灰度值为0作为背景(暗域),白色即灰度值为255作为前景即目标区域(亮域)常用方法有直接阈值法(全局5+2)、自适应阈值法(2)自定义也是可行的,如将全局平均值、中值等作为阈值,或者局部的中值等作为阈值原创 2020-07-03 21:57:08 · 13077 阅读 · 2 评论 -
【图像处理】——图像灰度直方图的绘制(直接调用函数和自定义函数)
灰度直方图是关于灰度级分布的函数,将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。对图像中不同灰度级别出现的次数进行统计,统计后进行绘制直方图,横坐标表示灰度级别0-255,纵坐标表示每个灰度级别在图像中出现的次数,一般会对次数进行归一化,用每个灰度级出现的次数除以图像的像素总个数。原创 2020-07-03 14:20:52 · 3033 阅读 · 3 评论 -
【图像处理】——图像的灰度化处理(Python实现三种方法——最大值法、平均值法、加权均值法、gamma校正)
一、什么是图像的灰度化?首先我们知道一张图片的所有颜色都可以通过RGB值调节进行表示,如果是一张彩色图片则RBG值不一定相同,将彩色图片灰度化就是指的是将彩色图片变成黑白的,这时候的RBG三个通道的值是相同的,就是将一幅色彩图像转化为灰度图像的过程。彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程。灰度值大的像素点比较亮(像素值最大为255,为白色),反之比较暗(像素最下为0,为黑色)这个过程就是指灰度化,具体可见:《百度百科》二、灰度.原创 2020-07-02 21:27:12 · 28967 阅读 · 7 评论 -
【图像处理】——opencv常用函数
目录读取图像显示图像等待键盘输入销毁窗口保存一张图像图像复制图像颜色空间转换(灰彩互转)图像缩放图像旋转图像放射变换图像添加文字在图像上绘制矩形图像的四值属性读取图像cv2.imread(filepath,flags) #读入一张图像 filepath:要读入图片的完整路径 flags:读入图片的标志 cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道 cv2....原创 2020-07-02 16:23:15 · 433 阅读 · 0 评论