相关文章推荐
低调的羊肉串  ·  Opencv-python ...·  1 月前    · 
魁梧的书签  ·  JavaScript 数组的 reduce ...·  1 年前    · 
深情的韭菜  ·  CredUIPromptForCredent ...·  1 年前    · 

pix = img.getpixel((x,y))

img.putpixel((x,y), colors[pix[0]])

这太可怕了一个配置文件报告指出了putpixel和getpixel方法作为罪魁祸首。有一点调查(即阅读文档),我发现“注意这种方法比较慢”。 re:putpixel。 (实际运行时间:putpixel为53s,1024×1024图像为50像素)

根据文档中的建议,我使用im.load()和直接像素访问:

pixels = img.load()

for x in range(w):

for y in range(h):

pix = pixels[x, y]

pixels[x, y] = colors[pix[0]]

处理速度提高了一个数量级,但仍然很慢:处理1024×1024图像的大约3.5秒。

对PIL文档的更全面的研究似乎表明Image.point()正是为了这个目的:

im.point(table) => image

im.point(function) => image

Returns a copy of the image where each pixel has been mapped through the given table. The table should contains 256 values per band in the image. If a function is used instead, it should take a single argument. The function is called once for each possible pixel value, and the resulting table is applied to all bands of the image.

我花了一些时间在界面上闯入,但是看起来不太合适。原谅我的无知,但PIL的文档是curt,我没有太多的图像处理经验。我已经google了一些,并提出了几个例子,但没有任何使用“点击”为我。所以,最后我的问题:

> Image.point()是这个工作的正确工具吗?

> Image.point()期望什么格式/结构表?

有人可以粗略地列举一个例子吗?到目前为止,我尝试过的每一次迭代都是直线黑色的形象。

我正在使用Python Imaging Library通过查找表来定义颜色关系来对黑白图像进行着色。查找表只是一个256元素的RGB元组列表:>>> len(colors)256>>> colors[0](255, 237, 237)>>> colors[127](50, 196, 33)>>>我的第一个版本使用了getpixel()和putpixel()方法:for x in range(w):...
VB可 使用 Point 方法 来获取图片指定点的颜色。 Point 方法 按照长整数,返回在 Form 或 PictureBox 上所指定磅的红bai-绿-蓝 (RGB) 颜色。 object. Point (x, y) '窗体判色代码: Private Sub Form1_MouseMove(Button As Integer, Shift As Integer, X As Single
import pylab from PIL import Image , Image Enhance from sk image import img_as_ubyte, img_as_float import numpy as np def plot_ image ( image , title=""): # pylab.gray() pylab.title(title, size=20) pylab.imshow( image , cmap='gray') # image .show() Image .new(mode, size, color) 层叠图片层叠两个图片,img2和img2,alpha是一个介于[0,1]的浮点数,如果为0,效果为img1,如果为1.0,效果为img2。当然img1和img2的尺寸和模式必须相同。这个函数可以做出很漂亮的效果来,而图形的算术加减后边会说到。 Image ....
图像转换成九种不同的格式,分别1,L,P,RGB,RGBA,CMYK,YCbCr,I,F 1.模式“1” 模式“1”为二值图像,非黑即白。但是它每个 像素 用8个bit表示,0表示黑,255表示白。 2.模式“L” 模式”L”为灰色图像,它的每个 像素 用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。在 PIL ,从模式“RGB”转换为“L”模式是按照下面的公式转换的: L = R * 2...
原理部分可见上一篇博客,这一部分主要是关于opencv实现: 这部分代码参考网上教程张氏标定法,但我觉得部分地方可能存在问题,后续会继续看一下官方代码 完整代码和棋盘图片下载可从这里下载 基本思路为: 检测代标定图像的内角点findChessboardCorners 利用find4QuadCornerSubpix寻找更精细的 像素 级坐标 根据测量的标定板的格子尺寸得到真实世界坐标系 内角点坐标 基于该url,我写了一个爬虫类,实现了按关键字下载固定数量的必应高清图片。 调用 时只需要一条 python 语句即可(由于 使用 了线程池并发请求图片,所以下载速度较快,一分钟300张高清图片没问题): # 关键词:电脑壁纸 # 需要的图片数量:100 # 图片保存路径:'.
cv::Mat 类是用于保存图像以及其他矩阵 数据 数据 结构。默认情况下,它们的尺寸为0,但是也可以指定初始尺寸。 cv::Mat ima(240,320,CV_8U,cv::Scalar(100)); 同时指定矩阵 元素的类型,这里的CV_8U对应的是单字节的 像素 图像。字母U意味着无符号的(Unsigned)。也可以 使用 字母S声明带符号的类型。 对于彩色图像,需要指定三个通道(CV_8UC3).也可以声明16位或32位的整数图像,或者浮点数图像。 当CV::Mat对象离开作用域后,分配的内存将被自动释放,
Paste 定义1:im.paste( image ,box) 含义1:将一张图粘贴到另一张图像上。变量box或者是一个给定左上角的2元组,或者是定义了左,上,右和下 像素 坐标的4元组,或者为空(与(0,0)一样)。如果给定4元组,被粘贴的图像的尺寸必须与区域尺寸一样。 如果模式不匹配,被粘贴的图像将被转换为当前图像的模式。 src Image .at<uchar>(j, i) //表示的是 j 行 i 列 的这个 像素 src Image .at<uchar>( Point (j, i)) //表示的是 坐标(j,i)的 像素 为了我下面的图方便说明 j 换成 x , i 换成 y 。也就是说: src Image .at<uchar>(x, y) //表示的是 x 行 y 列 的这个 像素