-
2021-01-14 00:34:21
使用python PIL处理图片。怎么获取图片的像素数据?
用python处理图像,想找到一种方法,能将图片的像素数据读出来。比如: 用image模块更直接,可以用getpixel获得像素值,给你个例子吧。 01.#。/usr/bin/env python 02.import Image 03.import sys 04.im = Image.open(sys.argv[1]) 05.width = im.size[0] 06.height = im.size[1] 07.print "/* width:%d */"%(width) 0
为什么用Python的openCV读取图片与PIL读取的图片像我首先尝试用PIL读取同一张图片, img1 = Image.open('000008.jpg') pri经测试,同一张图片,使用 PIL 和 OpenCv 库读取的数据是一样的(经过BGR转成RGB): 执行结果: 建议:可以尝试更新 PIL 或是 OpenCv 库。 本机测试环境: Python 3.7+Pillow 6.2 +opencv-python 4.1
如何使用Python如何获取某像素点处颜色
方法一: # -*- coding: cp936 -*- from ctypes import * #引入winapi gdi32 = windll.gdi32 user32 = windll.user32 #获取句柄 hdc = user32.GetDC(None) #获取指定像素的颜色 c = gdi32.GetPixel(hdc,100,50) #打印十进制转化为十六进制的颜色
Python如何获取图片长宽等信息
python怎么用PIL模块处理BMP图像 二值化我不是话少,也不是冷漠,只是我没必要对每个人都有说有笑。
Pillow 提供了一个 .load() 方法,用来处理像素。图片嘛,当然是二维的,有宽和高的。 pixels = image.load() for x in ramge(image.width): for y in range(image.height): pixsels[x, y] = 255 if pixsels[x, y] > 125 else 0 当然了。
用Python的PIL模块的image模块打开的图片位于哪个你所问的问题,其实是属于: 1.先参考 【教程】Python中的内置的模块 和第三方的模块 搞懂PIL是属于第三方Python模块 2.再参考: 【待完善】【总结】Python安装第三方的库、package的方法 去安装PIL模块。 3.关于PIL的一些使用。
python用PIL如何获得一张图片的亮度值
python的pil模块怎么判断图片是否相同你的身影是帆,我的目光是河流,多少次想挽留你,终不能够,我知道人间最难得的是友情,更宝贵的却是自由。
以上就是四十五资源网为大家整理的python使用PIL模块获取图片像素点的方法 如何python pil开发图像识别内容,如果觉得本站更新的资源对您有帮助 不要忘记分享给您身边的朋友哦!
更多相关内容 -
图片像素点获取
2020-07-18 14:36:10在很多时候进行图片处理深度学习都需要知道坐标,再此以获取照片的地址做一个例子,讲述一种通过鼠标获取像素点的方法 必须清楚:这个方法只能在python idle上实现,不能用jupyter notebook打开的(亲测过)。 ...在很多时候进行图片处理深度学习都需要知道坐标,再此以获取照片的地址做一个例子,讲述一种通过鼠标获取像素点的方法
必须清楚:这个方法只能在python idle上实现,不能用jupyter notebook打开的(亲测过)。import os , re import numpy as np img = Image.open(save_path+'/0.jpg') print(img.size) image_arr = np.array(img) imshow(image_arr) print ('Please click 4 points') x =ginput(4) print ('you clicked:',x)
-
【Android】图像像素点理解
2020-10-05 20:23:11【Android】图像像素点理解前言图像处理 -ARGB初始原图AlphaR值测试G值测试B值测试非R值测试非G值测试非B值测试高级图片处理取反Demo 前言 我们知道图像是有像素点组成,那么什么是像素点呢? 查看一张图片的属性...学而不思则罔,思而不学则殆
前言
我们知道图像是有像素点组成,那么什么是像素点呢?
查看一张图片的属性,该图片的宽度是690像素,高度是460像素。
每一个像素点是一个数字,表示颜色的具体值。
像素值如下:
比如【#AA03DAC5】像素 说明 举例 A 透明度 AA R R值 03 G G值 DA B B值 C5 图像处理 -ARGB初始
原图
Bitmap ycy = BitmapFactory.decodeResource(getResources(), R.drawable.ycy);
设置给ImageView,展示如下:
图像处理代码,主要把像素点的值根据传入的flag做转换处理。private Bitmap pictureProcessing(Bitmap bitmap, int flag) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Log.d("zhangyu", "width:" + width + " height:" + height);//690 460 Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); for (int w = 0; w < width; w++) { for (int h = 0; h < height; h++) { int c = bitmap.getPixel(w, h); newBitmap.setPixel(w, h, c & flag); //处理像素点 } } show(newBitmap); return newBitmap; }
Alpha
只保留透明度
Bitmap bitmap = pictureProcessing(ycy, 0XFF00_0000);
R值测试
保留透明度和R值
Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_000);
G值测试
保留透明度和G值
Bitmap bitmap = pictureProcessing(ycy, 0XFF00_FF00);
B值测试
保留透明度和B值
Bitmap bitmap = pictureProcessing(ycy, 0XFF00_00FF);
非R值测试
只清除R值
Bitmap bitmap = pictureProcessing(ycy, 0XFF00_FFFF);
非G值测试
Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_00FF);
非B值测试
Bitmap bitmap = pictureProcessing(ycy, 0XFFFF_FF00);
高级图片处理
取反1
//图片取反1 private Bitmap negation1(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); for (int w = 0; w < width; w++) { for (int h = 0; h < height; h++) { int c = bitmap.getPixel(w, h); int a = c & 0xff00_0000 >> 24; int r = c & 0x00ff_0000 >> 16; int g = c & 0x0000_ff00 >> 8; int b = c & 0x0000_00ff; newBitmap.setPixel(w, h, Color.argb(255 - a, 255 - r, 255 - g, 255 - b)); } } return newBitmap; }
取反2
//图片取反2 private Bitmap negation2(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); for (int w = 0; w < width; w++) { for (int h = 0; h < height; h++) { int c = bitmap.getPixel(w, h); int newC = ~c; newC = newC | 0xff00_0000; newBitmap.setPixel(w, h, newC); } } return newBitmap; }
灰阶处理
//灰阶处理1 public static Bitmap grayLevelOne(Bitmap originBitmap) { //【图片灰阶处理】 //生成新的Bitmap Bitmap grayBitmap = Bitmap.createBitmap(originBitmap.getWidth(), originBitmap.getHeight(), Bitmap.Config.ARGB_8888); //创建画布 Canvas canvas = new Canvas(grayBitmap); Paint mPaint = new Paint(); //创建颜色变换矩阵 ColorMatrix colorMatrix = new ColorMatrix(); //设置饱和度为0,实现灰阶效果 colorMatrix.setSaturation(0); //创建颜色过滤矩阵 ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix); //设置画笔的颜色过滤矩阵 mPaint.setColorFilter(colorFilter); //使用处理后的画笔绘制图像 canvas.drawBitmap(originBitmap, 0, 0, mPaint); return grayBitmap; }
灰阶处理应用见:【Android】应用黑白显示
Android图像处理见ColorMatrix,这个类主要是处理像素点的,通过一个长度为20的数组表示矩阵,用来处理像素点运算。Demo
-
图片像素点统计
2019-05-26 14:02:17题目就是如何统计一张图片中的气泡数目,以及每个气泡的面积。 上面这张图就是案例,里面白色的都是不规则形态的气泡。当拿到这个题目时看一眼就大致有些思路。因为怎么说也是学了数据结构的人嘛!当时就是想借用...最近这几天闲来无事,想起来18年12月末帮别人做了一个编程题。题目就是如何统计一张图片中的气泡数目,以及每个气泡的面积。
上面这张图就是案例,里面白色的都是不规则形态的气泡。当拿到这个题目时看一眼就大致有些思路。因为怎么说也是学了数据结构的人嘛!当时就是想借用数据结构中的“广度优先遍历”算法的思路去做。但是不全是,就是稍微改变一下。不过代码写完加调试估计花了我3个多小时,间接说明我编程能力赶不上我的思维能力。说白了我就菜......
为了给别人理解,我当时就没有采用像素点(三维数据)去直接做,而是多做一步无用功。就是先把像素点降维成为一维数据并且进行简单的二分化。这里二分化就是把所有像素点变成纯黑或纯白,因为这张图片在黑白相间处的像素点存在杂色的像素点(毕竟不是矢量图)。
#coding:utf-8 from PIL import Image # 打开图片,convert图像类型有L,RGBA img = Image.open('1.jpg').convert('L') img = img.transpose(Image.ROTATE_90) #img.show();print(img.size[0],img.size[1]) # 将黑白图转化为0-1表示 def blackWrite(img): pixelShift = [] for x in range(img.size[0]): rowList = [] for y in range(img.size[1]): # 存在单一像素点不是纯黑纯白,取50为黑白分界线 if img.getpixel((x,y)) < 50: rowList.append(0) else: rowList.append(1) pixelShift.append(rowList) return pixelShift
如果把一张图片看成一个二维数组,上面的代码就是把像素点变成0,1存储的二维数组,二维数组的行数和列数就是图片原始的分辨率大小。
然后你就可以把图片类型文件问题转变成我们基本都会的二维数组的字符问题了,剩下来就是如何对二维数组操作了。之前上面提到的“广度优先遍历”,学过数据结构的应该都知道这个图遍历算法。从一个点开始出发,查看它的四周有没有连接点(邻居),有的话就把它邻居都打入队列中去,然后没有邻居了之后就从队列的队首取出它之前的邻居点,然后查看这个点的邻居(就是邻居的邻居)。之后步骤和上面一样,但是需要对访问过的点做好标记,避免多次重复访问同一个点陷入死循环。
from queue import Queue # 统计各气泡数字1 def statisticalNum(resultPixel): bubble = [] # 用于存放各气泡面积 for x in range(len(resultPixel)): for y in range(len(resultPixel[0])): if resultPixel[x][y] == 1: resultPixel[x][y] = 0 Coordinate = Queue() # 存放该点四周为1的坐标点 onlyCoordinate = [] # 防止重复的坐标点入队,并统计个数 Coordinate.put([x,y]) while not Coordinate.empty(): row = clo = 0 [row,clo] = Coordinate.get() onlyCoordinate.append([row,clo]) # 查看左边坐标点 if clo > 0: if (resultPixel[row][clo-1] == 1) and ([row,clo-1] not in onlyCoordinate): Coordinate.put([row,clo-1]) resultPixel[row][clo-1] = 0 # 查看右边坐标点 if clo < (img.size[1]-1): if (resultPixel[row][clo+1] == 1) and ([row,clo+1] not in onlyCoordinate): Coordinate.put([row,clo+1]) resultPixel[row][clo+1] = 0 # 查看下边坐标点 if row < (img.size[0]-1): if (resultPixel[row+1][clo] == 1) and ([row+1,clo] not in onlyCoordinate): Coordinate.put([row+1,clo]) resultPixel[row+1][clo] = 0 bubble.append(len(onlyCoordinate)) return bubble
我的思路:
-
从第0行开始遍历,遇到第一个1(白色像素点)时,开始对其左,右,下三个方向数组点值做判断,周围邻居值是1就说明它们都在同一个气泡中,然后把邻居们压入队列中。
-
当这个点访问完成后,需要这个点的值1置为0表示访问完毕,避免它右邻居点在访问时把左边的它压入队列再次访问,会使得这个气泡的面积变大,甚至是死循环。(不要问我为什么这么清楚,呜呜呜呜呜)
-
把置0点的左边存在一个list列表中,类似c/java中的数组类型。
-
当第一层循环结束时得到了一个气泡,只需要用len方法就知道这个气泡点的个数,即面积。
-
然后第二次循环时,二维数组中的1减少一部分;即使代码是3个循环嵌套,也不要说我的代码时间复杂度是O(n^3)。
关于时间复杂度,我从来都喜欢用书本上的公式来衡量一个算法好坏。我就喜欢用实际中它运行的真实次数和时间来衡量一个算法的好坏。这么说吧,书上喜欢把O(n^2)+O(n)当成O(n^2)来衡量,忽略O(n)。如果在实际中n比较大的时候,O(n)消耗的资源成本也要考虑到的。想成为一个好的程序员就要比别人多注意一些细节,在大数据时代更是如此。
项目源码和图片的链接在此:https://gitee.com/mjTree/MyPython/tree/master/图片气泡统计
银长臂猿
银长臂猿?:栖息在热带及亚热带的雨林和密林,树栖性、日行性。生活在高大的树林中,采用“臂行法”行动,像荡秋千一样从一棵树到另一棵树,一次可跨越3米左右,加上树枝的反弹力可以达8-9米,且速度惊人。但是它们在地面上却显得十分笨拙。食性:杂食性,以树叶、水果、果实、花苞为食。
由于爪哇岛人口的增长,而雨林正在迅速消失中。只有百分之四的银长臂猿的栖息地仍然存在。除了gununghalimun国家公园可能生活着1000只以上的银长臂猿,其他地区只有分散的小种群,很难维持其生存繁衍,目前野生的银长臂猿数量不满2000。
-
-
我用MATLAB计算出了图像目标区域的像素点个数,请问知道了目标区域的像素点怎么计算目标区域的面积?
2021-04-20 01:34:12满意答案下面是一个简单的计算轮廓包含起来的像素点的个数的程序:%% step 1clear allclcI=imread('test.bmp');%读入图片bwI=im2bw(I,0.5);%转化为二值图像L=bwlabel(bwI,4);%将四连通区域进行标记[r,c]=find(L==1);... -
Python像素点图像处理
2018-08-18 15:59:39其实官方给的数据里有图像中每个点的高度,但我不想使用。(好吧其实是懒得下载matlab所以打不开)。如果有每个点的水平高度的话,通过高度分析一波坡度值应该不是什么难事。 这里仅考虑图像的处理方... -
(Unity)获取图片上的像素点颜色
2021-09-25 13:19:481.准备图片 在此我用PS准备了一张4x4的PNG图片,有透明通道。原图:(太小了看不清吧) 在PS中预览,是这样: 2.导入设置 注意圈出的四个设置: -图片类型 -允许读/写 -以硬边缘显示(比如像素图,如此设置... -
热红外图既需要获取像素值,又要知道每个像素点上的温度值
2020-07-03 10:56:40我使用python写的直接将热红外成像仪连接在电脑上作为外部输入摄像头获取的视频去其中的ROI区域的像素值作为研究对象的,现在我需要同时获取到相同视频片段处每个像素点对应到的温度值(即同时获取该视频序列的像素... -
OpenCV学习(C++)——像素点的读取
2021-11-22 21:05:57对彩色图片处理:(原像素-255)反色 基于数组下表改变每一个像素点 数组遍历 void QuickDemo::pixel_visit_demo(Mat &image) { int w = image.cols;//获取图像宽度 int h = image.rows;//获取图像高度 int dims... -
获取图像内向量的所有像素坐标
2021-05-08 02:25:07获取图像内向量的所有像素坐标 我有一个强度/灰度图像,并且在该图像...我想我可以自己完成最后一步,但是我不知道如何在我的灰度图像中创建这些矢量以及如何获取矢量接触的像素的坐标。我以前是用C ++做到的,这需... -
图像的像素运算(Matlab)
2021-08-10 10:22:281、图像点的运算 1.1 线性灰度变换 假定原图像A(x,y)的灰度变换范围为[a,b],处理后的图像B(x,y)的灰度扩展为[c,d],利用imadjust()函数。 close all;clear all;clc; gamma=0.5; I=imread("YW.jpg"); R=I; R(:,... -
图像像素理解浅谈
2022-05-14 11:50:41现在我们已经知道我们看到一张灰度图是由许多不同灰度值的像素点构成,而每个像素就是一个越亮的像素,灰度值越高,最高值是255(白色),越暗的像素,灰度值越低,最低值是0(黑色)。灰度值在0~255之间的像素呈现... -
图像的通道和深度以及图像的像素点操作完全解析
2017-03-23 14:51:13前沿 看了图像处理有一段时间了,但是图像的通道和深度一直不理解,毕竟是比较抽象的...二值图像:图像的像素点不是0 就是1 (图像不是黑色就是白色),图像像素点占的位数就是 1 位,图像的深度就是1,也称作位图。 -
opencv 基于图像单像素点的处理
2019-01-10 21:54:511 基于图像单像素点的处理 看过数字图像处理一书的都知道,图像处理中基于像素点的处理分为两种 ...1.1 图像像素点的访问 要进行基于单像素点的处理,首先就必须知道,给你一幅图,你如何去访问图... -
OpenCV学习(C++)——像素点的算术操作
2021-11-23 12:15:37可以直接通过像素块的加减(这里面我已经知道是彩色图片所以是三通道) void QuickDemo::operators_demo(Mat &image) { Mat dst= Mat::zeros(image.size(), image.type()); Mat m = Mat::zeros(image.size(), ... -
C#获取(设置)图片某像素点坐标下的颜色值
2019-08-29 14:55:37private void GetImgPixelColor(string ImgFile) { int ImgWidth = 0;//图片宽度 int ImgHeight = 0;//图片高度 Bitmap Bimg = new Bitmap(@"C:\Users\Administrator\... -
OPencv java Mat 基本操作像素点(7)
2020-08-31 16:56:08前面我们说到了用Mat类进行行列式的计算,可能在OPenCv中不算太实用,那么今天我们介绍一个比较使用的,图片中的像素点 我们知道OpenCv当我们read一个图片的时候,返回的结果是一个Mat 一. Mat的结构 Mat的结构是... -
python画图-输出指定像素点的颜色值方法
2021-05-29 10:37:59答案是:没有捷径,除非你是专业配色的,知道数字对应的颜色,但是呢也是有小技巧的。 好了,先来看看颜色的几种方式 1、color=‘red’,直接赋值颜色名字 2、color=‘RGB’,如color=(1,1,1),注意一定是在0,1... -
【计算机视觉】相机标定原理(像素点与三维坐标点的转换)
2020-12-30 14:38:31空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系是由相机成像的几何模型决定的,这些几何模型参数就是相机参数。通过试验与计算,求解以上参数(内参 、外参、畸变参数)的过程就是相机标定。畸变是... -
安卓获取屏幕以及获得像素点 ~ 大树洞
2021-06-06 05:00:42由于一些不可告人的需求,所以开始寻找各种可以实现安卓实时获得屏幕上某个像素点的功能首先,将需求进行拆解,分别为1、获得屏幕2、获得屏幕上一个像素点获得屏幕获得屏幕分为比较多种的方式,在以前大致分为adb ... -
C++实现K-means,聚类原理解析(并用在图片像素点聚类)
2016-05-21 09:14:19K-means算法的优化目标是使求出K个中心点,使每一个点到该点的欧氏距离平方之和尽量小(不知道现在有没有什么算法能保证一定得到全局最优解)。 简单来说就是把一个分到一个类中的所有数据点的每一维相加,... -
快速查看图片中某点的像素 X、Y 坐标
2021-10-21 10:33:34如何快速查看图片中某点的像素 X、Y 坐标? 这里有笔者整理的三种方式可以帮助我们实现! 三种方法: 1 通过“ 画图 ”软件查看 2 利用 Matlab 查看 3 通过 PS 查看 -
opencv遍历像素点最快的方法,14种选1
2020-10-11 11:09:03对于uint8类型3通道图像,不论是BGR还是HSV,这种图像在内存的排序方式就是(BGR为蓝绿红): BGRBGRBGR..... BGRBGRBGR..... BGRBGRBGR..... ............................... 对于uint8类型的单通道灰度图,排序... -
RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)
2019-07-29 16:00:30RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)概览直接使用像素坐标的缺陷摄像头标定根据小孔成像原理得到需要的转角角度测量验证 概览 在识别到目标后,有一个很重要的问题:我们的最终目的是瞄准、... -
python-opencv 像素点转成坐标点:Y轴的投影
2020-07-01 21:44:55菜鸟研究僧来分享最近的工作:python-opencv 像素点转成坐标点 该项目是测量某板的边界并取得边界的平均值计算其偏移量。 首先进行边界检测得到二值图,再对二值图进行y轴的投影。 def ... -
使用python+opencv实时显示图像中每一点坐标与像素值
2021-05-18 21:30:02非常好用,后来使用opencv时,发现无法直接查看图像中的某点像素值,很难直观从像素数值的变化上来感受图像的变化,于是就写了一个简单的程序,用于实时查看图像像素大小。 程序如下 import cv2 def get_point... -
基于像素点的图形显示算法(Bresenham圆形个人理解)
2020-07-28 18:06:19本实验基于STM32F103RC+TFTLCD屏,旨在于在LCD屏上显示一个实心圆形,然而众所周知,对于屏幕而言,我们只能操作各个像素点,因此,选择出最接近标准圆形的像素点就成了本次实验的主要目的,最终得到的圆形大概应该... -
matterport版本mask-rcnn获取mask的像素点数量及中心点的图像坐标
2020-12-29 16:43:52识别到目标后,知道目标的大小及中心点坐标对于采摘机器人意义重大。本文通过添加代码获取mask的像素点数量及中心点图像坐标。 在detect_and_show函数的图像检测后面加代码: -
使用Opencv获取每个像素点的RGB颜色分量/HSV颜色分量
2018-03-27 17:16:47一. 所需结构体CvScalar结构体介绍typedef struct ... 所需函数cvGet2D函数功能:获取像素点上的RGB颜色分量,如果是灰度图直接返回灰度图颜色分量函数原型:CvScalar cvGet2D( const CvArr* arr, int idx0, int idx... -
Kinect 根据深度图像坐标获取彩色图像像素点
2014-09-13 14:54:06在 Kinect 中虽然可以通过相应的 api 把深度图像坐标...又比如我现在知道一个彩色图像的像素点坐标是:x = 3,y = 4,那么我怎么知道该像素点的 rgb 信息呢?或者说我怎么知道其对应 rect 中数组的那个索引呢?谢谢!