Python OpenCV处理图像之图像像素点操作


Posted in Python onJuly 10, 2018

本文实例为大家分享了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 OpenCV处理图像之图像像素点操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过exifread模块获得图片exif信息的方法
Mar 16 Python
详解Django通用视图中的函数包装
Jul 21 Python
深入解析Python编程中JSON模块的使用
Oct 15 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
python3.7简单的爬虫实例详解
Jul 08 Python
Django 反向生成url实例详解
Jul 30 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
Aug 09 Python
Pytorch mask_select 函数的用法详解
Feb 18 Python
利用python生成照片墙的示例代码
Apr 09 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 #Python
Python OpenCV处理图像之滤镜和图像运算
Jul 10 #Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 #Python
python操作excel文件并输出txt文件的实例
Jul 10 #Python
深入浅析Python传值与传址
Jul 10 #Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 #Python
python3读取excel文件只提取某些行某些列的值方法
Jul 10 #Python
You might like
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
webpack4的迁移的使用方法
2018/05/25 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
React优化子组件render的使用
2019/05/12 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python中函数的返回值示例浅析
2019/08/28 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
酒店前厅员工辞职信
2014/01/08 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
《小小的船》教学反思
2016/02/18 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
MySQL去除密码登录告警的方法
2022/04/20 MySQL