喵叔哟
一个关注AI和Java的.NET程序员
展开
-
Python3与OpenCV3.3 图像处理(一)--环境搭建与简单DEMO
一、所需软件本教程需要一下软件:PyCharm 2017.2.3 (其他版本也可) OpenCV 3.3 Python 3 Windows 7以上版本二、环境配置 Python3 和 PyCharm的安装这里就不详述的,只需到对应的官方网站下载安装即可,需注意的是Python 要安装Python3以上版本。注意:Python 3 安装完后,在命令行工具内输...原创 2017-11-12 23:32:15 · 22291 阅读 · 2 评论 -
Python3与OpenCV3.3 图像处理(二)--图像基本操作
一、本节简述 本节主要讲解图像的一些基础知识,以及图像的加载和获得属性,最后将会学到 OpenCV 摄像头的简单使用。二、图像基本知识 1、图像是什么: 图像是客观对象的一种相似性的、生动性的描述或写真,是人类社会活动中最常用的信息载体。或者说图像是客观对象的一种表示,它包含了被描述对象的有关信息。 ...原创 2017-11-13 23:05:41 · 6409 阅读 · 2 评论 -
Python3与OpenCV3.3 图像处理(三)--Numpy数组操作
一、本节简述本节主要讲解Numpy数组操作的一些基础知识。二、什么是Numpy 一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。NumPy(Num...原创 2017-11-15 23:25:38 · 9734 阅读 · 5 评论 -
Python3与OpenCV3.3 图像处理(补)--第三节补充
第三节有一段代码是操作像素,将图像呈现出负片的效果,也就是像素取反。这段代码本身是没有问题的,但是运行起来后会发现你所提供的图片越大,处理起来速度越慢,这是因为我们在代码里使用了嵌套多层for循环,对于我们练习这样是没问题的,但是如果在实际项目中这样使用,会导致系统运行特别慢。那么我们该怎么办呢,其实OpenCV中有像素取反的方法,只需把for循环代码改为如下一行代码,就可以了。这样...原创 2017-11-18 16:48:44 · 2351 阅读 · 3 评论 -
Python3与OpenCV3.3 图像处理(四)--色彩空间
一、本节简述本节讲解图像色彩空间的处理和色彩空间的基础知识二、色彩空间基础知识什么是色彩空间,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间色彩空间有很多,但是常用的色彩空间一共5种:RGB、HSV、HSI、YCrCb、YUV,简单讲一下这5个色彩空间。RGB就不用多说了,RGB是我门经常用到的; HSV也...原创 2017-11-19 17:25:03 · 2871 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(五)--图像运算
一、本节简介图像运算也就是像素运算,简单的说就是利用算术运算或逻辑运算,对图像的每个像素进行处理(例如两个图像的合并)。虽然我们可以像第二节课那样,一个像素一个像素的遍历并修改值,但是如果图像分辨率很大的情况下,会处理的很慢,并且处理一些复杂的运算时,我们的代码效率会变得更低,代码编写出来也变得很麻烦。这节课就来讲解以下OpenCV中对图像运算的方法。注意:我们在处理两个图像时,图像的像...原创 2017-11-21 23:49:43 · 2390 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(六)--ROI
一、本节简介本节主要讲解ROI的图像中特定区域的提取和合并图片二、什么是ROI简单的说就是对图像感兴趣的区域,机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。举个例子来说:有一副图片,图片上有各种动物i,但是你只喜欢图片里的狗,那么这个狗所在的区域就是感兴趣的区域(ROI)。三、示例src=cv...原创 2017-11-23 00:30:45 · 13108 阅读 · 2 评论 -
Python3与OpenCV3.3 图像处理(七)--洪填充
一、本节简介本节主要讲解洪填充的简单使用,以及洪填充的概念二、什么是洪填充泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是windows paint的油漆桶功能。算法的原理很简单,就是从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。泛红填充实现最常见有四邻域像素填充法,八邻域像素填充法,基于扫...原创 2017-11-27 23:21:18 · 5064 阅读 · 2 评论 -
Python3与OpenCV3.3 图像处理(八)--模糊
一、模糊方式以及每种方式的使用场景模糊操作方式:均值模糊:一般用来处理图像的随机噪声 中值模糊:一般用来处理图像的椒盐噪声 自定义模糊:对图像进行锐化之类的操作二、模糊基本原理基于离散卷积、定义好每个卷积核、不同卷积核得到不同的卷积效果、模糊是卷积的一种表象三、代码示例import cv2 as cvimport numpy as npdef b...原创 2017-11-28 23:31:10 · 3538 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(九)--高斯模糊
一、什么是高斯模糊把要模糊的像素色值统计,用数学上加权平均的计算方法(高斯函数)得到色值,对范围、半径等进行模糊二、高斯模糊的应用场景一些美颜软件、美颜相机上的磨皮和毛玻璃特效基本上都是用的高斯模糊,并且大部分图像处理软件中都有高斯模糊的操作,除此之外,高斯模糊还具有减少图像层次和深度的功能三、示例import cv2 as cvimport numpy a...原创 2017-12-01 00:13:04 · 4924 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(十)--EPF
一、什么是EPF高斯模糊只考虑了权重,只考虑了像素空间的分布,没有考虑像素值和另一个像素值之间差异的问题,如果像素间差异较大的情况下(比如图像的边缘),高斯模糊会进行处理,但是我们不需要处理边缘,要进行的操作就叫做边缘保留滤波(EPF)二、示例import cv2 as cvimport numpy as npdef bi(image): """ 色彩窗...原创 2017-12-03 13:56:19 · 2168 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十一)--图像直方图
一、什么是图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。二、应用范围图像主题内容与背景分离、图像分类、检索等三、示例注意:编写代码前需确保 matplotlib 库已安装,如未安装在命令行中输入:pip install matplotlib...原创 2017-12-05 00:25:07 · 3304 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十二)--图像直方图应用
一、调节对比度import cv2 as cvdef equalHist(image): """直方图均衡化,图像增强的一个方法""" #彩色图片转换为灰度图片 gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) #直方图均衡化,自动调整图像的对比度,让图像变得清晰 dst=cv.equalizeH...原创 2017-12-05 23:30:55 · 4905 阅读 · 4 评论 -
Python3与OpenCV3.3 图像处理(十三)--反射投影
一、什么是反射投影简单的说就是通过给定的直方图信息,在图像找到相应的像素分布区域二、反射投影的应用物体跟踪、定位物体等三、示例代码import cv2 as cvimport numpy as npfrom matplotlib import pyplot as pltdef hist2d(image): """2d 直方图计算和现实""...原创 2017-12-07 00:44:58 · 2832 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十四)--模板匹配
一、什么是模板匹配在整个图像区域发现与给定子图像匹配的区域,模板匹配的工作方式是在待检测图像上从左到右,从上到下计算模板图象与重叠子图像的匹配度,匹配度越大,两者越相同二、OpenCV中的模板匹配CV_TM_SQDIFF 平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。CV_TM_CCORR 相关匹配法:该方法采用乘法操作;数值越大表明匹配程度...原创 2017-12-07 23:39:30 · 5836 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(十五)--图像二值化
一、什么是二值图像图像中只有0和1,即1表示黑色,0表示白色二、图像二值化的方法图像二值化的方法:全局阈值,局部阈值。一般来说局部阈值要优于全局阈值。在OpenCV中图像二值化的方法有OTS,Triangle,自动与手动,衡量阈值方法是否是符合场景的,就是要看处理之后图像的信息是否丢失三、示例代码import cv2 as cvimport numpy a...原创 2017-12-09 18:40:31 · 3531 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(补)--第十五节补充
在图片比较大的情况下,使用第十五节讲的方法,会出现处理速度慢和处理效果不佳的情况。对于超大图象二值化一般都会进行分块。超大图象一般会分块以后使用全局二值化,或者使用局部二值化。并且应使用自适应阈值,全局阈值会收到图象噪声的影响代码如下import cv2 as cvimport numpy as npdef big_img_binary(img): # 定义...原创 2017-12-10 22:48:22 · 1571 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十六)--图像金字塔
一、什么是图像金字塔图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。(来源于百度)二、图像金字塔类型高斯金字塔 拉普拉斯金字塔...原创 2017-12-12 23:44:08 · 1913 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十七)--图像梯度
一、什么是图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个二维离散函数的求导:图像梯度: G(x,y) = dx i + dy j;dx(i,j) = I(i+1,j) - I(i,j);dy(i,j) = I(i,j+1) - I(i,j);其中,I是图像像素的值(如:RGB值),(i,j)为像素的坐标。图像梯度一般也可以用中值差分:dx(i,j) = [I(i+...原创 2017-12-14 22:27:34 · 2445 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(十八)--Canny边缘提取
一、什么是边缘检测图像的边缘检测的原理是检测出图像中所有灰度值变化较大的点,而且这些点连接起来就构成了若干线条,这些线条就可以称为图像的边缘。二、canny 算法五步骤高斯模糊 灰度转换 计算梯度 非最大信号抑制 高低阈值输出二值图像三、示例代码import cv2 as cvimport numpy as npdef edge(img): ...原创 2017-12-17 15:30:21 · 14784 阅读 · 3 评论 -
Python3与OpenCV3.3 图像处理(十九)--直线检测
这节课能容不多,基本上是遵循规律编写代码即可import cv2 as cvimport numpy as npdef line_detection(img): """方法一""" gray=cv.cvtColor(img,cv.COLOR_RGB2GRAY) edges=cv.Canny(gray,50,150,apertureSize=3)...原创 2017-12-19 23:28:18 · 2427 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(二十)--圆检测
这节同样是代码,代码比较简单,基本上都能看懂import cv2 as cvimport numpy as npdef detect_circles(img): dst=cv.pyrMeanShiftFiltering(img,10,100) cimg=cv.cvtColor(dst,cv.COLOR_BGR2GRAY) circles=cv....原创 2017-12-20 22:46:18 · 3089 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(二十一)--轮廓发现
一、什么是轮廓发现是基于图像边缘提取的基础,寻找对象轮廓的方法,所以边缘提取的阈值选定会影响最终轮廓的发现二、轮廓发现APIfindContours 发现轮廓drawContours绘制轮廓三、示例代码import cv2 as cvimport numpy as npdef contours(img): dst=cv.GaussianBlu...原创 2017-12-21 23:02:56 · 4175 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(二十二)--对象测量(纯代码)
import cv2 as cvimport numpy as npdef measure_object(img): gray=cv.cvtColor(img,cv.COLOR_RGB2GRAY) ret,binary=cv.threshold(gray,0,255,cv.THRESH_BINARY_INV|cv.THRESH_OTSU) cv.imshow("bi...原创 2017-12-24 20:18:26 · 2840 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(二十三)--膨胀与腐蚀
一、关于图形形态学是图像处理学科的一个单独分之学科; 灰度与二值图像处理中重要的手段; 是由数学的集合论等相关理论发展起来的二、什么是膨胀和腐蚀膨胀就是求局部最大值的操作腐蚀就是求局部最小值的操作膨胀与腐蚀都支持任意形状的结构元素三、示例代码import cv2 as cvimport numpy as npdef erode(img):...原创 2017-12-27 22:12:10 · 2713 阅读 · 0 评论 -
Python3与OpenCV3.3 图像处理(二十四)--开闭操作
一、什么是开操作和闭操作闭操作:1、图像形态学的重要操作之一,基于膨胀与腐蚀操作组合形成的2、主要是应用在二值图像分析中,灰度图像也可以3、开操作=膨胀+腐蚀,输入图像+结构元素开操作:1、图像形态学的重要操作之一,基于膨胀与腐蚀操作组合形成的2、主要是应用在二值图像分析中,灰度图像也可以3、开操作=腐蚀+膨胀,输入图像+结构元素开操作与闭操...原创 2017-12-28 22:52:52 · 2871 阅读 · 1 评论 -
Python3与OpenCV3.3 图像处理(二十五)--开闭操作(补充)
一、顶帽原图像与开操作之间的差值图像二、黑帽闭操作图像与原图像的差值图像三、形态学梯度1、基本梯度:膨胀后的图像减去腐蚀后的图像得到的差值图像2、内部梯度:原图像减去腐蚀之后的图像得到的差值图像3、外部梯度:图像膨胀之后减去原图像得到的差值图像四、示例代码import cv2 as cvdef hat(img): """顶帽/黑...原创 2018-01-02 23:01:41 · 2280 阅读 · 0 评论