python的数字图像处理学习(1)
导入原有的测试图片,测试图片路径,和一些方法,显示出测试图像,测试图像路径。
from skimage import io,data,data_dir
img_rgb=data.chelsea()
io.imshow(img_rgb)
data_dir
使用打开方式的方案,将图像转为灰度图,并显示。保存图像。
img_gray=io.imread(data_dir+'/chelsea.png',as_grey=True)
io.imshow(img_gray)
io.imsave('chelsea.png',img_gray)
显示出数字图像的各种信息:
print(type(img_gray)) #显示类型
print(img_gray.shape) #显示尺寸
print(img_gray.shape[0]) #图片宽度
print(img_gray.shape[1]) #图片高度
print(img_gray.size) #显示总像素个数
print(img_gray.max()) #最大像素值
print(img_gray.min()) #最小像素值
print(img_gray.mean()) #像素平均值
提取图像的红色通道值,显示。
img_rgb_r=img_rgb[:,:,0]#选取像素值,红色单通道
io.imshow(img_rgb_r)
导入深度复制图像的方法,将图像备份,建立椒盐噪声图像。
import numpy as np
import copy as cp
img_rgb_noise = cp.deepcopy(img_rgb)
for i in range(1000):
x = np.random.randint(0,img_rgb_noise.shape[0])
y = np.random.randint(0,img_rgb_noise.shape[1])
img_rgb_noise[x,y,:] = 255
io.imshow(img_rgb_noise)
将图像切片提取,显示出部分图像。
img_rgb_cut = img_rgb[0:int(img_rgb.shape[0]/2),0:int(img_rgb.shape[1]/2),:]
io.imshow(img_rgb_cut)
将灰度图像二值化的一种方法:
import copy as cp
img_gray_binaryzation = cp.deepcopy(img_gray)
for i in range(img_gray.shape[0]):
for j in range(img_gray.shape[1]):
if img_gray_binaryzation[i,j] > 0.5 :
img_gray_binaryzation[i,j] = 1
else :
img_gray_binaryzation[i,j] = 0
io.imshow(img_gray_binaryzation)
通过判断,提取出部分符合条件的数据,将符合条件的数据进行修改,,,一个示例
import copy as cp
img_rgb_blue = cp.deepcopy(img_rgb)
reddish = img_rgb[:, :, 0] >100#建立红色通道值大于100的二维布尔数组
img_rgb_blue[reddish,0] = [0]#根据筛选条件,筛选出并将红色通道赋值为0
reddish = img_rgb[:, :, 2] >100
img_rgb_blue[reddish,2] = [0]#根据筛选条件,筛选出并将蓝色通道赋值为0
reddish.shape
io.imshow(img_rgb_blue)
图像的数据类型查看,float数据类型为0-1
img_rgb.dtype.name#查看图像的数据类型
img_gray.dtype.name
img_gray.max()
图像的数据类型转化:
from skimage import img_as_float,img_as_ubyte
arrays = img_as_ubyte(img_gray)
arrays.max()
使用color方法,完成图像的形式转化:
from skimage import color
io.imshow(color.rgb2gray(img_rgb))
io.imshow(color.convert_colorspace(img_rgb,'RGB','hsv'))
使用matplotlib中的pyplot下的imshow显示图像。
import matplotlib.pyplot as plt
dst = plt.imshow(img_rgb)#有一个AxesImage对象显示出来
plt.axis('off')
print(type(dst))
图像分割,设置标题,灰度图显示,不显示坐标的方法示例
from skimage import data
import matplotlib.pyplot as plt
img=data.astronaut()
plt.figure(num='astronaut',figsize=(8,8)) #创建一个名为astronaut的窗口,并设置大小 plt.subplot(2,2,1) #将窗口分为两行两列四个子图,则可显示四幅图片
plt.title('origin image') #第一幅图片标题
plt.imshow(img) #绘制第一幅图片 plt.subplot(2,2,2) #第二个子图
plt.title('R channel') #第二幅图片标题
plt.imshow(img[:,:,0],plt.cm.gray) #绘制第二幅图片,且为灰度图
plt.axis('off') #不显示坐标尺寸 plt.show() #显示窗口
读取某目录下的所有图像的方法,多选图像格式和路径等
import skimage.io as io
from skimage import data_dir
str=data_dir + '/*.png'
str+=';'+data_dir + '/*.jpg'
coll = io.ImageCollection(str)
print(len(coll))
io.imshow(coll[0])
io.ImageCollection()这个函数省略第二个参数,就是批量读取。将批量读取修改为其它批量操作,如批量转换为灰度图,修改图像大小
然后批量保存图像:
from skimage import data_dir,io,transform,color
import numpy as np
def convert_gray(f):
rgb=io.imread(f) #依次读取rgb图片
gray=color.rgb2gray(rgb) #将rgb图片转换成灰度图
dst=transform.resize(gray,(256,256)) #将灰度图片大小转换为256*256
return dst
str=data_dir+'/*.png'
str+=';'+data_dir + '/*.jpg'
coll = io.ImageCollection(str,load_func=convert_gray)#修改默认批量操作为转化为灰度图
for i in range(len(coll)):
io.imsave('./data/'+np.str(i)+'.jpg',coll[i]) #循环保存图片
python的数字图像处理学习(1)的更多相关文章
- python的数字图像处理学习(3)
高级滤波: from skimage import data,color,data_dir import matplotlib.pyplot as plt from skimage.morpholog ...
- python的数字图像处理学习(2)
图像的重定义大小,图像的缩扩,图像的旋转: from skimage import transform,data import matplotlib.pyplot as plt img = data. ...
- 【笔记】基于Python的数字图像处理
[博客导航] [Python相关] 前言 基于Python的数字图像处理,离不开相关处理的第三方库函数.搜索网络资源,列出如下资源链接. Python图像处理库到底用哪家 python计算机视觉编程— ...
- 数字图像处理学习笔记之一 DIP绪论与MATLAB基础
写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...
- MATLAB数字图像处理学习笔记
我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...
- 初始----python数字图像处理--:环境安装与配置
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- 数字图像处理(一)之灰度转换和卷积python实现
使用Python实现数字图像处理中如下功能: 彩色图像转成灰度图像 实现图像的相关&卷积操作 实现图像的高斯核卷积 使用的库和python版本如下: imageio:2.9.0 用于读取磁盘中 ...
- python数字图像处理(17):边缘与轮廓
在前面的python数字图像处理(10):图像简单滤波 中,我们已经讲解了很多算子用来检测边缘,其中用得最多的canny算子边缘检测. 本篇我们讲解一些其它方法来检测轮廓. 1.查找轮廓(find_c ...
- python数字图像处理(1):环境安装与配置
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
随机推荐
- elasticsearch ik安装
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-ana ...
- poj3252(组合数)
题目链接:http://poj.org/problem?id=3252 题意:给定s.e,求[s,e]之间的Round Number的个数,RN数为二进制表示中0的个数大于1的个数的数,s.e< ...
- SystemVerilog 带输出的task
1.task 的定义,输出定义为数组. /*- genRndPkt(): Generates random packet with the given length.*/ task genRndPkt ...
- Android 实现简单 倒计时60秒,一次1秒
倒计时功能如上图所示,其实就几行代码即可实现效果啦!!! /** 倒计时60秒,一次1秒 */ CountDownTimer timer = new CountDownTimer(60*1000, 1 ...
- 4. Median of Two Sorted Arrays (二分法;递归的结束条件)
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- JavaScript各种继承方式(三):组合继承(combination inheritance)
一 原理 组合继承仅仅是同时使用了原型链继承和构造函数继承. 具体做法是,将父类的实例作为子类的构造函数的原型对象,并在子类的构造函数中调用父类的构造函数. function Fruit(name){ ...
- PAT L2-016 愿天下有情人都是失散多年的兄妹(深搜)
呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...
- [剑指Offer]50-第一个只出现一次的字符
题目链接 https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c?tpId=13&tqId=11187&t ...
- 【Linux 线程】线程同步《三》
1.条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起:另一个线程使"条件成立"(给出条 ...
- java调用微信扫一扫
步骤: 1,获取Accesstoken(参考我之前的文章) 2,获取jsapiticket(参考我之前的文章) 3,获取签名 4JSSDK使用步骤 步骤一:绑定域名(JS接口安全域名),.否则会报in ...