Python OpenCV处理图像之图像像素点操作
本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下
0x01. 像素
有两种直接操作图片像素点的方法:
第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第四列的像素点就直接 im[3,3] 就可以获取到这个点的RGB值。
第二种就是使用 OpenCV 提供的 Get1D、 Get2D 等函数。
推荐使用第一种办法吧,毕竟简单。
0x02. 获取行和列像素
有一下四个函数:
- cv.GetCol(im, 0): 返回第一列的像素
- cv GetCols(im, 0, 10): 返回前 10 列
- cv.GetRow(im, 0): 返回第一行
- cv.GetRows(im, 0, 10): 返回前 10 行
0x03. 批量处理
需要批量处理所有的像素点的时候,只需要使用for循环迭代处理就可以了:
import cv2.cv as cv im = cv.LoadImage("img/lena.jpg") for i in range(im.height): for j in range(im.width): im[i,j] # 这里可以处理每个像素点
还有一种迭代处理的方式是使用 LineIterator,不过在声明 LineIterator 的时候需要制定处理像素点的开始点和结束点。
import cv2.cv as cv im = cv.LoadImage("img/lena.jpg") li = cv.InitLineIterator(im, (0, 0), (im.rows, im.cols)) #So loop the entire matrix for (r, g, b) in li: # 这里可以对每个像素点的 r g b 进行处理
娱乐一下, 随机获取 5000 个像素点,然后把颜色换成一个随机的值(salt):
import cv2.cv as cv import random # 这里也可以使用 Get2D/Set2D 来加载图片 im = cv.LoadImage("img/lena.jpg") for k in range(5000): #Create 5000 noisy pixels i = random.randint(0,im.height-1) j = random.randint(0,im.width-1) color = (random.randrange(256),random.randrange(256),random.randrange(256)) im[i,j] = color cv.ShowImage("Noize", im) cv.WaitKey(0)
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python用Pillow(PIL)进行简单的图像操作方法
Python用Pillow(PIL)进行简单的图像操作方法 颜色与RGBA值 计算机通常将图像表示为RGB值,或者再加上alpha值(通透度,透明度),称为RGBA值.在Pillow中,RGBA的值表示为由4个整数组成的元组,分别是R.G.B.A.整数的范围0~255.RGB全0就可以表示黑色,全255代表黑色.可以猜测(255, 0, 0, 255)代表红色,因为R分量最大,G.B分量为0,所以呈现出来是红色.但是当alpha值为0时,无论是什么颜色,该颜色都不可见,可以理解为透明. from
-
Python给图像添加噪声具体操作
在我们进行图像数据实验的时候往往需要给图像添加相应的噪声,那么该怎么添加呢,下面给出具体得操作方法. 1.打开Python的shell界面,界面如图所示: 2.载入skimage工具包和其他的工具包,如图所示,代码如下: from skimage import io,data import numpy as np 3.采用以下指令读取图片: img=data.coffee() 4.采用以下指令填产生噪声: rows,cols,dims=img.shape for i in range(5000)
-
Python图像的增强处理操作示例【基于ImageEnhance类】
本文实例讲述了Python图像的增强处理操作.分享给大家供大家参考,具体如下: python中PIL模块中有一个叫做ImageEnhance的类,该类专门用于图像的增强处理,不仅可以增强(或减弱)图像的亮度.对比度.色度,还可以用于增强图像的锐度. 具体见下面的例子: #-*- coding: UTF-8 -*- from PIL import Image from PIL import ImageEnhance #原始图像 image = Image.open('lena.jpg') imag
-
Python图像灰度变换及图像数组操作
使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量.矩阵.图像等)以及线性代数函数. 数组对象可以实现数组中重要的操作,比如矩阵乘积.转置.解方程系统.向量乘积和归一化.这为图像变形.对变化进行建模.图像分类.图像聚类等提供了基础. 在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像转换成NumPy的数组对象
-
Python图像滤波处理操作示例【基于ImageFilter类】
本文实例讲述了Python图像滤波处理操作.分享给大家供大家参考,具体如下: 在图像处理中,经常需要对图像进行平滑.锐化.边界增强等滤波处理.在使用PIL图像处理库时,我们通过Image类中的成员函数filter()来调用滤波函数对图像进行滤波,而滤波函数则通过ImageFilter类来定义的. 下面先直接看一个样例: #-*- coding: UTF-8 -*- from PIL import Image from PIL import ImageFilter def image_filter
-
Python Image模块基本图像处理操作小结
本文实例讲述了Python Image模块基本图像处理操作.分享给大家供大家参考,具体如下: Python 里面最常用的图像操作库是Image library(PIL),功能上,虽然还不能跟Matlab比较,但是还是比较强大的,废话补多少,写点记录笔记. 1. 首先需要导入需要的图像库: import Image 2. 读取一张图片: im=Image.open('/home/Picture/test.jpg') 3. 显示一张图片: im.show() 4. 保存图片: im.save("sa
-
使用Python给头像戴上圣诞帽的图像操作过程解析
前言 随着圣诞的到来,大家纷纷@官方微信给自己的头像加上一顶圣诞帽.当然这种事情用很多P图软件都可以做到.但是作为一个学习图像处理的技术人,还是觉得我们有必要写一个程序来做这件事情.而且这完全可以作为一个练手的小项目,工作量不大,而且很有意思. 用到的工具 OpenCV(毕竟我们主要的内容就是OpenCV...) dlib(dlib的人脸检测比OpenCV更好用,而且dlib有OpenCV没有的关键点检测.) 用到的语言为Python.但是完全可以改成C++版本,时间有限,就不写了.有兴趣的小伙
-
python简单图片操作:打开\显示\保存图像方法介绍
一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用python这个脚本语言来进行数字图像处理. 要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的. 要使用python进行各种开发,就必须安装对应的库.这和matlab非常相似,只是matlab里面叫工具箱
-
详解Python+OpenCV进行基础的图像操作
目录 介绍 形态变换 腐蚀 膨胀 创建边框 强度变换 对数变换 线性变换 去噪彩色图像 使用直方图分析图像 介绍 众所周知,OpenCV是一个用于计算机视觉和图像操作的免费开源库. OpenCV 是用 C++ 编写的,并且有数千种优化的算法和函数用于各种图像操作.很多现实生活中的操作都可以使用 OpenCV 来解决.例如视频和图像分析.实时计算机视觉.对象检测.镜头分析等. 许多公司.研究人员和开发人员为 OpenCV 的创建做出了贡献.使用OpenCV 很简单,而且 OpenCV 配备了许多工
-
Python+OpenCV实现六种常用图像特效
目录 图像融合 灰度处理 颜色反转 灰度反转 彩色反转 马赛克效果 毛玻璃效果 浮雕效果 图像融合 按照一定的比例将两张图片融合在一起 addWeighted()方法: 参数1第一张图片矩阵 参数2第一张图片矩阵的权重 参数3第二张图片矩阵 参数4第二张图片矩阵的权重 融合之后的偏移量 进行叠加的两张图片宽高应该相同 叠加之后的像素偏移值如果填的话不要填太大,超过255会导致图像偏白 import cv2 import cv2 as cv img = cv.imread("img/lena.jp
-
Python OpenCV读取中文路径图像的方法
引言 这几天做点小东西,涉及到OpenCV读取中文图像的问题 如果直接读取中文路径的图像,往往返回[] import cv2 cv_im = cv2.imread('老干妈.jpg') 缘起 偶然发现opencv 读取图像,解决imread不能读取中文路径的问题文章,代码简单有效,可以参考下文章底部附录 im = cv2.imdecode(np.fromfile(im_name,dtype=np.uint8),-1) 但是作者代码注释中说该方法读取的图像的通道就会变为RGB,但是我实验仍为BGR
-
Python OpenCV去除字母后面的杂线操作
原图 代码 src = cv2.imread("28.png") gray_src = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) #cv2.imshow("input image", src) #cv2.imshow("gray image", gray_src) #cv2.waitKey(0) gray_src = cv2.bitwise_not(gray_src) #二值化 binary_src = cv2.
-
使用Python OpenCV为CNN增加图像样本的实现
我们在做深度学习的过程中,经常面临图片样本不足.不平衡的情况,在本文中,作者结合实际工作经验,通过图像的移动.缩放.旋转.增加噪声等图像变换技术,能快速.简便的增加样本数量. 本文所有案例,使用OpenCV跨平台计算机视觉库,在Python3.6上实现,关于Python及OpenCV安装使用,请参照本人早先资料,详见参考内容. 1. 图片拼接及平移 1.1. 图像移动 图像平移是将图像的所有像素坐标进行水平或垂直方向移动,也就是所有像素按照给定的偏移量在水平方向上沿x轴.垂直方向上沿y轴移动.
-
python opencv旋转图像(保持图像不被裁减)
本文实例为大家分享了python opencv旋转图像的具体代码,保持图像不被裁减,供大家参考,具体内容如下 # -*- coding:gb2312 -*- import cv2 from math import * import numpy as np img = cv2.imread("3-2.jpg") height,width=img.shape[:2] degree=45 #旋转后的尺寸 heightNew=int(width*fabs(sin(radians(degree)
-
Python OpenCV超详细讲解图像堆叠的实现
目录 准备工作 水平堆叠 垂直堆叠 图像栈堆叠 准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 import numpy as np 我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原点在左上角,比如下面这张长为640像素,宽为480像素的图片.OK,下面开始本节的学习吧. 水平堆叠 调用np的hstack()水平堆栈方法,参数是我们要
-
Python OpenCV超详细讲解图像堆叠的实现
目录 准备工作 水平堆叠 垂直堆叠 图像栈堆叠 准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 import numpy as np 我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原点在左上角,比如下面这张长为640像素,宽为480像素的图片.OK,下面开始本节的学习吧. 水平堆叠 调用np的hstack()水平堆栈方法,参数是我们要
-
Python OpenCV处理图像之图像像素点操作
本文实例为大家分享了Python OpenCV图像像素点操作的具体代码,供大家参考,具体内容如下 0x01. 像素 有两种直接操作图片像素点的方法: 第一种办法就是将一张图片看成一个多维的list,例如对于一张图片im,想要操作第四行第四列的像素点就直接 im[3,3] 就可以获取到这个点的RGB值. 第二种就是使用 OpenCV 提供的 Get1D. Get2D 等函数. 推荐使用第一种办法吧,毕竟简单. 0x02. 获取行和列像素 有一下四个函数: cv.GetCol(im, 0): 返回第
-
Python OpenCV对图像像素进行操作
目录 遍历并修改图像像素值 图像的加减乘除运算 遍历并修改图像像素值 在使用opencv处理图像时,有时需要对图像的每个像素点进行处理,比如取反.修改值等操作,就需要通过h和w遍历像素.依然以下图为例: 具体代码: import cv2 as cv import numpy as np def image_pixel(image_path: str): img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) h,
随机推荐
- Sqlserver2005日志文件太大如何减小
- BAT 解密工具
- mysql 8.0 安装配置方法教程
- vue.js+boostrap项目实践(案例详解)
- Java设计模式之备忘录模式_动力节点Java学院
- linux下使用 du查看某个文件或目录占用磁盘空间的大小方法
- 截取实际长度字符串,并用空格替换
- c#读写ini配置文件示例
- Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
- js实现将选中内容分享到新浪或腾讯微博
- 给Ajax返回的HTML标签动态添加样式的方法
- 原生ajax调用数据实例讲解
- JavaScript 总结几个提高性能知识点(推荐)
- 快递公司丢件怎么办?网友支招如何索赔
- nginx:413 Request Entity Too Large的处理办法--修改 PHP上传文件大小
- JS中如何实现Laravel的route函数详解
- 金山反病毒20050101_日报
- java批量采集豌豆荚网站Android应用图标和包名
- android 设置wallpaper的操作方法
- 杏林同学录(二)