2016-08-13 15:19:43 Touch_Dream 阅读数 2806
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5421 人正在学习 去看看 贾志刚

Python图像处理实现画板:

Python图像处理也是依赖opencv的Python接口实现的,Python语言简单易懂,简洁明了。本次实现画板涂鸦,一个是在里面画矩形,还有画线。其他也都可以扩展,本案例只做例程,思路是对鼠标事件的处理,以及滚动条调节颜色处理。鼠标事件就包含有左键按下,以及释放事件的处理。

import cv2
import numpy as np

# null function
def nothing(x):
    pass

Drawing = False
Mode = True
IX,IY = -1,-1

def drawCircle(Event,X,Y,Flags,Param):

    R = cv2.getTrackbarPos('R','Image')
    G = cv2.getTrackbarPos('G','Image')
    B = cv2.getTrackbarPos('B','Image')
#get color value
    Color = (B,G,R);
    global IX,IY,Drawing,Mode
    if Event == cv2.EVENT_LBUTTONDOWN:
        Drawing = True
        IX,IY = X,Y
    elif Event == cv2.EVENT_MOUSEMOVE and Flags == cv2.EVENT_FLAG_LBUTTON:
        if Drawing == True:
            if Mode == True:
                cv2.rectangle(Img,(IX,IY),(X,Y),Color,-1)
            else:
                cv2.circle(Img,(X,Y),3,Color,-1);
                
    elif Event == cv2.EVENT_LBUTTONUP:
        Drawing = False

#create image with 3 chanels        
Img = np.zeros((660,660,3),np.uint8)

#create window
cv2.namedWindow('Image')

#create track bar, range for 0~255
cv2.createTrackbar('R','Image',0,255,nothing)
cv2.createTrackbar('G','Image',0,255,nothing)
cv2.createTrackbar('B','Image',0,255,nothing)

#set mouse ack 
cv2.setMouseCallback('Image',drawCircle)

while(1):
    cv2.imshow('Image',Img)
    k = cv2.waitKey(10)&0xFF

   #switch draw mode

    if k == ord('m'):   
        Mode = not Mode
    elif k == 27:
        break
#you must destroy all of sources
cv2.destroyAllWindows()

最后的效果图如下



2019-06-09 18:23:21 zzqaaasss 阅读数 4337
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5421 人正在学习 去看看 贾志刚

实验环境:windows10,pyCharm

本文在如下博文的基础上进行:

python图像处理 (一).PIL图像处理库学习①

1、自定义创建图片

PIL除了可以从文件中打开一张图片,我们也可以创建一张图片

Image.new(mode,size) ⇒ image
Image.new(mode, size,color) ⇒ image

创建具有给定模式和大小的新图像。Size以(宽、高)-元组的形式给出,单位为像素。对于单通道图像,变量color只给定一个值;对于多通道图像,变量color给定一个元组(每个通道对应一个值),如果省略颜色参数,则图像将填充0(这通常对应于黑色)。如果颜色为None,则不初始化图像。如果你要在图像中粘贴或绘制东西,这是很有用的。

如下创建了一张三通道大小为255*255的红色图像:

from PIL import Image  #导入PIL库中的Image模块
im = Image.new("RGB", (128, 128), "red") #新建图像
im.show()

显示效果如下:

 2、复制图像

im.crop(box) ⇒ image

复制图像。如果您希望将内容粘贴到图像中,但仍保留原始内容,请使用此方法。

如下返回的和原图一样的:

from PIL import Image  #导入PIL库中的Image模块
im = Image.new("RGB", (225, 225), "red")  #新建图像
new_im = im.copy() #复制图像

3、裁剪图像

im.crop(box) ⇒ image

从当前图像返回矩形区域的副本。box是一个定义左、上、右和下像素坐标的4元组。
这是一个延迟操作。对源图像的更改可以反映在裁剪后的图像中,也可以不反映在裁剪后的图像中。要获得单独的副本,请调用裁剪副本上的load方法。

代码如下:

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png")
im.show()  #显示原图
box = (100,100,300,300)  #裁剪区域
new_im = im.crop(box) #裁剪图片
new_im.show()  #显示裁剪区域

效果如下:

4、粘贴图像

im.paste(image, box)

将另一个图像粘贴到此图像中。box参数要么是一个给出左上角的2元组,要么是一个定义左、上、右和下像素坐标的4元组,要么没有(与(0,0)相同)。如果给定一个4元组,则粘贴图像的大小必须与区域的大小匹配。
如果模式不匹配,则将粘贴的图像转换为此图像的模式

如下打开一张图像然后在图像上粘贴一个自己创建的图像:

from PIL import Image  #导入PIL库中的Image模块
im1 = Image.open("images/mm.png")
box = (100,100,300,300)  #粘贴区域
im2 = Image.new('RGB',(200,200),'red')  #创建一张图像
im1.paste(im2,box) #在box区域粘贴im2图像
im1.show()

效果如下:

使用:im1.paste('red',box) 和上面效果相同

5、滤波器

im.filter(filter) ⇒ image

返回由给定过滤器过滤的图像的副本。有关可用过滤器的列表,请参见下表。

filtes

描述
BLUR 模糊滤镜
CONTOUR 轮廓滤镜
DETAIL 细节滤镜
EDGE_ENHANCE 边界增强滤镜
EDGE_ENHANCE_MORE 边界增强加强版滤镜
 EMBOSS 浮雕滤镜
FUND_EDGES 寻找边界滤镜
SMOOTH 平滑滤镜
SOOTH_MORE 平滑滤镜加强版
SHARPEN 锐化滤镜

如下举个小列子:

from PIL import Image  #导入PIL库中的Image模块
from PIL import ImageFilter  #导入PIL库中的ImageFilter模块
im = Image.open("images/mm.png").resize((255,255))
im.show()
BLUR_im = im.filter(ImageFilter.BLUR)
CONTOUR_im = im.filter(ImageFilter.CONTOUR)
DETAIL_im = im.filter(ImageFilter.DETAIL)
EMBOSS_im = im.filter(ImageFilter.EMBOSS)
DETAIL_im.show()
EMBOSS_im.show()
BLUR_im.show()
CONTOUR_im.show()

效果如下:

 

剩下的自己试下。

6、混合图像

Image.blend(image1, image2, alpha) ⇒ image

使用给定的两张图像及透明度变量alpha,插值出一张新的图像。这两张图像必须有一样的尺寸和模式。混合公式如下:

混合公式为:out = image1 (1.0 - alpha) + image2 alpha

若变量alpha为0.0,返回第一张图像的拷贝。若变量alpha为1.0,将返回第二张图像的拷贝。对变量alpha的值无限制。

例子如下:

from PIL import Image  #导入PIL库中的Image模块
from PIL import ImageFilter  #导入PIL库中的ImageFilter模块
im1 = Image.open("images/mm.png").resize((255,255)).convert('RGB') #为了和图像2的大小和模式一样重置大小和模式
im2 = Image.open("images/rb.jpg").resize((255,255))  ##为了和图像1的大小和模式一样重置大小和模式
#im1和im2按照第一张60%的透明度,第二张40%的透明度,合成为一张。
new_im = Image.blend(im1,im2,0.6) #混合图像
new_im.show()

效果如下:

 7、分离图像

im.split() ⇒ sequence

 返回当前图像各个通道组成的一个元组。例如,分离一个“RGB”图像将产生三个新的图像,分别对应原始图像的每个通道(红,绿,蓝)

测试代码如下:

from PIL import Image  #导入PIL库中的Image模块
im = Image.open("images/mm.png").resize((128,128)).convert('RGB')
r,g,b = im.split()
r.show()
g.show()
b.show()

 效果如下:

 差别不是很大,但还是有差别的。

 

 

 

 

2019-06-06 22:51:06 swordtraveller 阅读数 512
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5421 人正在学习 去看看 贾志刚

PIL的全称是Python Image Library

本文使用PIL载入图片文件,使用matplotlib显示图片内容

加载图片

假定加载图片名为test.jpg,与python代码文件位于同一目录下。

导入PIL中的image(用于加载、处理图像),导入matplotlib(用于显示图像)

import PIL.Image as image
import matplotlib.pyplot as plt

打开图片:用image.open()打开'test.jpg',将文件数据返给img图片对象

img = image.open('test.jpg')

使用plt.imshow()将img图片对象加载到plt

plt.imshow(img)

显示plt中的内容(即我们刚刚加载进去的img图片对象)

plt.show()

 

完整代码为:

import PIL.Image as image
import matplotlib.pyplot as plt

img = image.open('test.jpg')
plt.imshow(img)
plt.show()

 

img图片对象还有其他很多功能接口:

print(img.size)

size是img图片对象的成员数据,是一个元组,包含了像素宽度和像素高度。

我们也可以像这样计算img的像素点数:

m, n = img.size
print(m * n)

很容易想到,遍历img图片的每一个像素并操作的程序框架如下:

m, n = img.size
for i in range(m):
    for j in range(n):

img图片对象是三通道的,每个像素点包含红、绿、蓝三种通道的信息。

img.getpixel()接受一个包含像素点坐标的元组作为传入参数,并传回该点的三通道值。注意传入的是元组,所以不要漏写函数接口括号和元组本身的括号

例如img.getpixel((12,12))就代表了(12,12)的像素点的三通道信息。

输出(12,12)的像素点的三通道信息:

print(img.getpixel((12,12)))

 

编辑图片

pic = image.new() 生成新的图片对象pic(传入两个参数,第一个是模式字符串(‘L’是8位像素黑白灰色,'RGB'是真彩色),第二个是大小元组)

pic = image.new('L', (80, 100))

pic.putpixel() 设置像素点的三通道信息(传入两个参数,第一个是坐标元组,第二个是颜色,单通道颜色是一个数值(0是黑色),多通道颜色是一个元组)

pic.putpixel((i, j), 0)

 

存储图片

pic.save() 将图片对象保存为某个文件。(传入两个字符串参数,第一个是文件名,第二个是模式)

pic.save("testresult.jpg", "JPEG")

 

实例展示

import PIL.Image as image

pic = image.new('L', (80, 100))
for i in range(80):
    for j in range(100):
        if (i == j):
            pic.putpixel((i, j), 0)
        else:
            pic.putpixel((i, j), 123)
pic.save("testresult.jpg", "JPEG")

import PIL.Image as image

pic = image.new('RGB', (100, 300))
for i in range(100):
    for j in range(300):
        if ( (i-50)*(i-50)+(j-150)*(j-150) <= 1600 ):
            pic.putpixel((i, j), (67,205,128))
        else:
            pic.putpixel((i, j), (122,197,205))
pic.save("testresult.jpg", "JPEG")

注:程序生成较大图片文件时可能比较慢,直接去点文件资源管理器里的同一图片文件显示的可能是之前的版本,需要耐心等待十秒左右不等(比如1000*3000的图像),也可以换一个新的文件名然后新文件名的图片生成~ 

注解提示

有人会发现对于.jpg格式,putpixel写入的RGB值和保存再打开后getpixel读出的RGB值往往不一样,这是因为.jpg是有损格式。

可以使用.bmp格式,参数是'BMP',它也支持三通道的

也可以使用.png格式,参数是'PNG',不过它读出来是四通道,因为.png多了第四个参数透明度参数,即alpha通道

2018-01-19 11:38:10 zhangziju 阅读数 1191
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5421 人正在学习 去看看 贾志刚

Python图像处理基础

对我个人而言使用Python图像处理意在取代matlab,集中化使用Python环境保证之后在机器学习和OpenCV的使用上具有一致性,虽然从实验室师兄师姐的口中得知Python的图像处理较之matlab相对复杂(应该只是代码量的问题),但我依然觉得学习python环境比较实用和高效。在进行Python图像处理之前,Pillow是不可或缺的实用性工具,pillow是Python Imaging Library的缩写,Pillow由PIL而来,导入该库使用import PIL。同时感谢Python社区内的翻译工作者,将pillow的英文稳当翻译为汉语文档。传统的PIL库不支持python3,所以使用从PIL派生出来的Pillow库。

从学习PIL开始

Python Imaging Library ( PIL ) 给 Python 增加了图像处理能力。这个库提供了广泛的文件格式支持,高效的内部展现,以及十分强大的图像处理能力。以下为我们常用的图像处理功能:

  • 图像存储
    PIL 设计用于图像归档和图像批量处理,可以使用它建立缩略图,转换格式,打印图片等。现在的版本可以验证和读取大量的图片格式。写入有意设计为只能写入常用的文件格式。
  • 图像显示
    现在的版本包含了 Tk PhotoImage 和 BitmapImage 接口, 以及 Windows DIB interface ,这有助于在 Windows 下使用。
    为了方便测试,还提供了 show() 方法,可以保存图像到磁盘并显示。
  • 图像处理
    这个库包含了基本的图像处理功能,包括点操作,使用内置卷积内核过滤,色彩空间转换。支持更改图像大小、旋转、自由变换。有一个直方图方法允许你统计图像,这可以用于对比度增强和全局统计分析。

使用 Image 类

要从文件加载图像,使用 open() 函数, 在 Image 模块:

    @zhangziju
    from PIL import Image             ##调用库
    im = Image.open("E:\mywife.jpg")  ##文件存在的路径
    im.show()                         

我老婆

需要知道的是在win的环境下im.show的方式为win自带的图像显示应用。

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
print(im.format, im.size, im.mode) ## 打印出关键信息
im.show()

JPEG (750, 560) RGB ## 输出关键信息 同时再次看到我老婆

format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。
size属性是一个二元元组,包含width、height(宽度和高度,单位都是px)。mode 属性定义了图像bands的数量和名称,以及像素类型和深度。
常见的modes 有 “L” (luminance) 表示灰度图像,“RGB”表示真彩色图像,和 “CMYK” 表示出版图像。如下表为常见的nodes描述。

modes 描述
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用调色板映射到任何其他模式
RGB 3× 8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,颜色隔离
YCbCr 3×8位像素,彩色视频格式
I 32位整型像素
F 32位浮点型像素

读写图像

PIL 模块对目前存在的大多数图片格式都支持,一般使用 Image 模块的 open() 函数从磁盘读取文件,并不需要知道文件格式就能打开它,这个库能够根据文件内容自动确定文件格式。若要保存文件,则使用 Image 类的 save() 方法,此时保存文件的文件名就变得十分重要了,除非你指定格式,否则这个库将会以文件名的扩展名作为格式保存

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
print(im)
im.save("E:\mywife.png")     ## 将"E:\mywife.jpg"保存为"E:\mywife.png"
im = Image.open("E:\mywife.png")  ##打开新的png图片
print(im.format, im.size, im.mode)

如下图,在指定路径下可看到新保存的png格式的图片。
新的png图片
此时在查看Python的输出信息

PNG (750, 560) RGB

通常而言,save用以保存一个临时的image对象到硬盘。而转换工作由一个功能更为强大的convert()方法来完成。convert()是将图像转换格式的类。

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
new_im = im.convert('L')               ##可以看到“L”模式的我老婆,即黑白模式
new_im.show()                          ##用以显示

“L”模式的gakki,同理,可转换其余几种格式,此处略去。

黑白

裁剪、复制、合并等操作

首先引入box的概念,box变量是一个四元组(左,上,右,下)。用来表示在原始图像中截取的位置坐标,如box(100,100,200,200)就表示在原始图像中以左上角为坐标原点,截取一个100*100(像素为单位)的图像,为方便理解,如下为示意图box(b1,a1,b2,a2)。作图软件为Visio2016。
box区域示意图

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
box = (300, 100, 700, 700)              ##确定拷贝区域大小
region = im.crop(box)                   ##将im表示的图片对象拷贝到region中,大小为box
region.show()

如下图为box截取的图像区域显示。

box区域图
crop函数带的参数为(起始点的横坐标,起始点的纵坐标,宽度,高度)。paste函数的参数为(需要修改的图片,粘贴的起始点的横坐标,粘贴的起始点的纵坐标)。(待补充)

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
box = (300, 100, 700, 700)
region = im.crop(box)
region = region.transpose(Image.ROTATE_180) ##将拷贝的小图旋转180度再放入region中
im.paste(region, box)                       ##粘贴box大小的region到原先的图片对象中。
im.show()

box = im.copy( ) #直接复制图像

如下图所示为旋转和粘贴操作。

粘贴截取图形

几何变换

Image类有resize()、rotate()和transpose()、transform()方法进行几何变换,用以重定义图片大小,对图片进行旋转等操作。

@zhangziju
from PIL import Image
im = Image.open("E:\mywife.jpg")
region = im.resize((400, 400))     ##重新设定大小
region.show()

很明显由于大小的重新设定,图片的显示效果有所转变,gakki依然美腻~
设定大小
还可以做以下操作:

@zhangziju
im.rotate(45)                             #逆时针旋转 45 度角。
im.transpose(Image.FLIP_LEFT_RIGHT)       #左右对换。
im.transpose(Image.FLIP_TOP_BOTTOM)       #上下对换。
im.transpose(Image.ROTATE_90)             #旋转 90 度角。
im.transpose(Image.ROTATE_180)            #旋转 180 度角。
im.transpose(Image.ROTATE_270)            #旋转 270 度角。

图像滤波

图像滤波在ImageFilter 模块中,在该模块中,预先定义了很多增强滤波器,可以通过filter( )函数使用,预定义滤波器包括:BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值滤波,CONTOUR找轮廓,FIND_EDGES边缘检测,使用该模块时,需先导入。还有其他功能强大的滤波效果,此处略。

@zhangziju
from PIL import Image
from PIL import ImageFilter                         ## 调取ImageFilter
imgF = Image.open("E:\mywife.jpg")
bluF = imgF.filter(ImageFilter.BLUR)                ##均值滤波
conF = imgF.filter(ImageFilter.CONTOUR)             ##找轮廓
edgeF = imgF.filter(ImageFilter.FIND_EDGES)         ##边缘检测
imgF.show()
bluF.show()
conF.show()
edgeF.show()

滤波处理下的gakki~

滤波

图像增强

Pillow中的图像增强函数主要在ImageEnhance模块下,通过该模块可以调节图像的颜色、对比度和饱和度和锐化等。ImageEnhance模块的接口所有的增强类都实现了一个通用的接口,包括一个方法:

enhancer.enhance(factor) ⇒ image

该方法返回一个增强过的图像。变量factor是一个浮点数,控制图像的增强程度。变量factor为1将返回原始图像的拷贝;factor值越小,颜色越少(亮度,对比度等),同时对变量facotr并没有限制。

Color类

颜色增强类用于调整图像的颜色均衡,该类实现的增强接口如下:

ImageEnhance.Color(image) ⇒ Color enhancer instance

创建一个增强对象,以调整图像的颜色。增强因子为0.0将产生黑白图像;为1.0将给出原始图像。

@zhangziju
from PIL import Image
from PIL import ImageEnhance
imcor=Image.open("E:\mywife.jpg")
im_01 = ImageEnhance.Color(imcor).enhance(0.1)
im_10 = ImageEnhance.Color(imcor).enhance(1.0)
im_30 =ImageEnhance.Color(imcor).enhance(3.0)
im_01.show()
im_10.show()
im_30.show()

如下图为ImageEnhance.Color(image)在取值0.1、1.0和3.0时的效果图。

cor

Brightness类

亮度增强类用于调整图像的亮度,该类实现的增强接口如下:

ImageEnhance.Brightness(image)⇒ Brightnessenhancer instance

创建一个调整图像亮度的增强对象。增强因子为0.0将产生黑色图像;为1.0将保持原始图像。

@zhangziju
from PIL import Image
from PIL import ImageEnhance
imbri =Image.open("E:\mywife.jpg")
im_02 = ImageEnhance.Brightness(imbri).enhance(0.2)
im_08 = ImageEnhance.Brightness(imbri).enhance(0.8)
im_20 = ImageEnhance.Brightness(imbri).enhance(2.0)
im_02.show()
im_08.show()
im_20.show()

如下图为ImageEnhance.Brightness(image)在取值0.2、0.8和2.0时的效果图。

bri

Contrast类

对比度增强类用于调整图像的对比度。该类实现的增强接口如下:

ImageEnhance.Contrast(image) ⇒ Contrast enhancer instance

创建一个调整图像对比度的增强对象。增强因子为0.0将产生纯灰色图像;为1.0将保持原始图像。

@zhangziju
from PIL import Image
from PIL import ImageEnhance
imcon =Image.open("E:\mywife.jpg")
im_02 = ImageEnhance.Contrast(imcon).enhance(0.2)
im_08 =ImageEnhance.Contrast (imcon).enhance(0.8)
im_20 =ImageEnhance.Contrast (imcon).enhance(2.0)
im_02.show()
im_08.show()
im_20.show()

如下图为ImageEnhance.Contrast(image)在取值0.2、0.8和2.0时的效果图。

con
同样的还有Sharpness锐度增强类用于调整图像的锐度。此处略。

2017-03-29 20:25:27 jokertony 阅读数 11555
  • Python+OpenCV3.3图像处理视频教程

    Python+OpenCV3.3图像处理视频培训课程:该教程基于Python3.6+OpenCV新版本3.3.0详细讲述Python OpenCV图像处理部分内容,包括opencv人脸识别、人脸检测、数字验证码识别等内容。是Python开发者学习图像知识与应用开发佳实践课程。

    5421 人正在学习 去看看 贾志刚
椒盐噪声的特征非常明显,为图像上有黑色和白色的点。使用中值滤波可以很好的去除椒盐噪声。
设定中值滤波的尺寸为3*3. 即用滤波覆盖的9个格子的中间值代替该点的灰度值。
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 29 15:32:46 2017

@author: Joker
"""
from skimage import io
im=io.imread('b.jpg')
#io.imshow(im)
for i in range(0,im.shape[0]):
    for j in range(0,im.shape[1]):
        im_copy[i][j]=im[i][j]
#用3*3的中值滤波器
step=3
def m_filter(x,y):
    sum_s=[]
    for k in range(-int(step/2),int(step/2)+1):
        for m in  range(-int(step/2),int(step/2)+1):
            sum_s.append(im[x+k][y+m])
    sum_s.sort()
    return sum_s[(int(step*step/2)+1)]

for i in range(int(step/2),im.shape[0]-int(step/2)):
    for j in range(int(step/2),im.shape[1]-int(step/2)):
        im_copy[i][j]=m_filter(i,j)

io.imshow(im_copy)

原始图片
3*3的中值滤波
5*5的中值滤波
问题:3*3的中值滤波对椒盐噪声并不能完整去除。当扩大到5*5的尺寸时候。可以比较好的去出椒盐噪声。 但是出现的新的问题,边界的区域未处理的范围也随着扩大。想法:去除边界的两个像素区域,再将原始图片扩大尺寸。

初识python图像处理

阅读数 4281

没有更多推荐了,返回首页