图像处理

图像处理_Image

99封情书 提交于 2019-12-01 17:17:24
1. 安装    输入 pip install PIL报错:   ERROR: Could not find a version that satisfies the requirement PIL (from versions: none)   ERROR: No matching distribution found for PIL 解决方案: Python3中Pillow源自PIL(在2中使用) (1) python -m pip install Pillow (2) pip install path\文件名 文件名为在网址: https://www.lfd.uci.edu/~gohlke/pythonlibs/ 中下载对应的模块。 使用(1)时报错: ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. 超时问题,延长时间: python -m pip --default-timeout=100 install -U Pillow 注:pillow是PIL(Python成像库)的一个分支,不再被维护。所以,为了保持向后兼容性,往往使用旧的模块名称——PIL,即引用模块,直接使用import PIL 2. 功能

【图像处理】利用C++编写函数,绘制灰度图像直方图

﹥>﹥吖頭↗ 提交于 2019-12-01 07:21:15
1. 简介 利用OpenCV读取图像,转换为灰度图像,绘制该灰度图像直方图。点击直方图,控制台输出该灰度级像素个数。 2. 原理 (1) 实现原理较为简单,主要利用了OpenCV读取图像,并转换为灰度图像; srcImg = imread(" ......"); // “....” 代表图像地址 if (srcImg.empty()) { return -1; } imshow(WINDOW_SRCIMG, srcImg); Mat grayImg; cvtColor(srcImg, grayImg, CV_BGR2GRAY); imshow(WINDOW_GRAYIMG, grayImg); (2) 利用Mat类新建一个固定分辨率的画布,统计处于每一灰度级像素个数,在该画布上绘制灰度直方图。 int nRows = 700,nCols=600; Mat g_dstImg(nRows,nCols, CV_8UC1, Scalar::all(0)); // 新建画布 同时避免画布中该灰度级太高而超出画布范围,在本程序中采用了等比例缩小的方法。 int MaxCount = arrayMax(grayLevel,256);//寻找在处于某一灰度级中个数最多的像素个数 yscaleRate = double(nRows)/MaxCount ;//y缩放比例 double

python skimage图像处理(一)

安稳与你 提交于 2019-12-01 05:00:47
python skimage图像处理(一) This blog is from: https://www.jianshu.com/p/f2e88197e81d 基于python脚本语言开发的数字图片处理包,比如PIL,Pillow, opencv, scikit-image等。 PIL和Pillow只提供最基础的数字图像处理,功能有限;opencv实际上是一个c++库,只是提供了python接口,更新速度非常慢。scikit-image是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,正好与matlab一样,因此,我们最终选择scikit-image进行数字图像处理。 Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 import Image as img import os from matplotlib import pyplot as plot from skimage import io,transform #Image和skimage读图片 img_file1 = img.open('./CXR_png/MCUCXR_0042_0.png') img_file2 = io.imread('./CXR_png/MCUCXR_0042_0.png') 输出可以看出Img读图片的大小是图片的(width, height)

python PIL 图像处理

旧时模样 提交于 2019-12-01 05:00:40
python PIL 图像处理 This blog is from: https://www.jianshu.com/p/e8d058767dfa Image读出来的是PIL的类型,而skimage.io读出来的数据是numpy格式的 #Image和skimage读图片 import Image as img import os from matplotlib import pyplot as plot from skimage import io,transform img_file1 = img.open('./CXR_png/MCUCXR_0042_0.png') img_file2 = io.imread('./CXR_png/MCUCXR_0042_0.png') 输出可以看出Img读图片的大小是图片的(width, height);而skimage的是(height,width, channel), [这也是为什么caffe在单独测试时要要在代码中设置:transformer.set_transpose('data',(2,0,1)),因为caffe可以处理的图片的数据格式是(channel,height,width),所以要转换数据] #读图片后数据的大小: print "the picture's size: ", img_file1.size print "the

python skimage图像处理(二)

試著忘記壹切 提交于 2019-12-01 05:00:28
python skimage图像处理(二) This blog is from: https://www.jianshu.com/p/66e6261f0279 图像简单滤波 对图像进行滤波,可以有两种效果:一种是平滑滤波,用来抑制噪声;另一种是微分算子,可以用来检测边缘和特征提取。 skimage库中通过filters模块进行滤波操作。 1、sobel算子 sobel算子可用来检测边缘 函数格式为: skimage.filters.sobel(image, mask=None) from skimage import data,filters import matplotlib.pyplot as plt img = data.camera() edges = filters.sobel(img) plt.imshow(edges,plt.cm.gray) 2、roberts算子 roberts算子和sobel算子一样,用于检测边缘 调用格式也是一样的: edges = filters.roberts(img) 3、scharr算子 功能同sobel,调用格式: edges = filters.scharr(img) 4、prewitt算子 功能同sobel,调用格式: edges = filters.prewitt(img) 5、canny算子 canny算子也是用于提取边缘特征

Matlab图像处理——中值滤波medfilt2问题解决

泪湿孤枕 提交于 2019-11-30 16:43:49
本文链接:https://blog.csdn.net/Pxzly1117/article/details/79201772 程序: I=imread('13.jpg');%读入图像 imshow(I); h=imnoise(I,'salt & pepper');%为I图片叠加椒盐噪声噪声 figure;imshow(h); w=[1 2 1;2 4 2;1 2 1]/16;%高斯模板 I5=imfilter(h,w,'corr','replicate');%高斯平滑 figure;imshow(I5); w=[1 1 1;1 1 1;1 1 1]/9;%平均模板 I7=imfilter(h,w,'corr','replicate');%平均平滑 figure;imshow(I7); I9=medfilt2(h,[3,3]);%中值滤波 figure;imshow(I9); 出现错误: 问题: 中值滤波medfilt2,用法是B = medfilt2(A, [m n]),输入图像A应是二维矩阵,程序中输入图像h是由imread得到的I加上噪声得到的,而imread读到的图像I通常是3维RGB图,是三维矩阵,因此才出现问题,显示A应该为二维的。 解决方法: 先用rgb2gray(I)将h先将I图像转换为灰度矩阵图像,再用medfilt2。 程序后段改为: j=rgb2gray(I);

opencv图像处理之常见滤波器

大兔子大兔子 提交于 2019-11-30 15:12:24
图像平滑 Smoothing, also called blurring, is a simple and frequently used image processing operation. 平滑,也叫模糊. 本质就是把某点的像素值转换为其及其周围像素值的不同权重的叠加.h(k,l)即为卷积核,或者叫滤波器filter. 有几种常见的filter Normalized Box Filter Gaussian Filter Median Filter Bilateral Filter 均值滤波 权重矩阵如上. img2= cv2.blur(img,(5,5)) The call blur(src, dst, ksize, anchor, borderType) is equivalent to boxFilter(src, dst, src.type(), anchor, true, borderType). https://docs.opencv.org/master/d4/d86/group__imgproc__filter.html#ga8c45db9afe636703801b0b2e440fce37 效果如下: 高斯滤波 即假设某一位置的像素和其邻域像素符合高斯分布.具体的说的话,就是每一位置的像素的权重符合高斯分布.这样的话,给定一个高斯分布,及高斯核的大小

基于OpenCV的CT图像处理

℡╲_俬逩灬. 提交于 2019-11-30 04:08:02
opencv2.0版本直接使用Mat这个类存储读入的图像。对于黑白图像,它存储的是图像的灰度值,存储的形式类似于一个二维数组;对于彩色图像,它分为三通道存储,三通道对应于RGB。这里我们着重讨论黑白图像,因为彩色图像相当于它的扩展。灰度值用0到255间的整数表示,而对于CT图像,它的像素值的表示比较复杂,从负几千到正几千都有,我们可以使用ITK依次读取CT图像的每个像素值,并可以将其每个像素值保存在Mat中,但这时通过opencv的imshow函数不能够显示出来,可以进行适当的处理,将像素值变换到0到255的范围显示出来。通过实验发现,opencv的Mat中只有定义的数据类型为uchar才可以进行显示。将CT图像保存在Mat中后,我们就可以直接调用opencv中的函数对CT图像进行处理。ITK可以直接对CT图像进行处理,并且网上说ITK是一个功能非常强大的库,但有些opencv中的处理函数在ITK中并没有,不知道是自己没有找到还是什么的。但ITK对三维体数据的处理还是非常有效的。接下来我们可以在ITK中创建一个图像,将opencv处理的结果图像按像素传入ITK中的图像。在ITK中创建一个写文件的指针,就可以将处理后的图像写入文件中(如jpg、dcm等)。 我在opencv中做的操作主要有对CT图像进行二值化、闭操作的预处理、轮廓提取、找出最大轮廓

Python只是阶段性的昙花一现吗?

孤街浪徒 提交于 2019-11-30 00:58:11
一些外行人因工作需要,也开始疯狂学习Python,什么排名已经超越Java了,隐隐感觉还在发展扩散中,据说都被编入高中、大学教材里了,如此火爆的程度,各行各业的人都在不断加入Python的学习队伍,感觉不学Python就好像要和时代脱节似的。 那么,Python是必然火的长久呢,还是阶段性的昙花一现呢?外行人到底有没有必要深入地去学习和研究它? 其实Python的价值不在Python本身,而在于Python调用的那些库,比如说,用Python进行图像处理,技术含量在于Python语言还是图像处理技术?显然在于图像处理技术;同理,用Python学习人工智能,有价值的也是人工智能而不是Python语言。 虽然图像处理还是人工智能,都不是Python的专利,很多别的语言都可以做,Python只是所有语言里面较为简单较为适合外行做的一种。 但Python不会是昙花一现,从1989年诞生至今,TIOBE 榜,2007、2010、2018 三年的年度语言,没有哪种编程语言像 Python 一样拿了三次“三好学生”奖状。其他编程语言榜单,Python也是稳居前三。 它的存在对很多非编程专业的人有帮助,能让这些人更多的关注业务,而不是让时间精力陷入到编程语言这个工具的泥潭里面。 只要能用Python干活,比如人工智能领域的人可以用Python调用TensorFlow之类的库