Python-OpenCV 处理图像(三):图像像素点操作
来源:互联网 发布:java中吸收回车符 编辑:程序博客网 时间:2024/05/30 04:48
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 cvim = 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 cvim = cv.LoadImage("img/lena.jpg")li = cv.InitLineIterator(im, (0, 0), (im.rows, im.cols)) #So loop the entire matrixfor (r, g, b) in li: # 这里可以对每个像素点的 r g b 进行处理
娱乐一下, 随机获取 5000 个像素点,然后把颜色换成一个随机的值(salt):
import cv2.cv as cvimport 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] = colorcv.ShowImage("Noize", im)cv.WaitKey(0)
效果图:
- 2015年09月13日发布
- 更多
0 0
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(三):图像像素点操作
- Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作
- Python-OpenCV图像像素点操作
- python OpenCV 图像像素访问 (三)
- vim+python+OpenCV学习三 : 对图像的像素处理
- Opencv像素点操作--图像加减
- 【OpenCV】OpenCV中获取图像的像素点并处理
- OpenCV 访问图像像素点
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- 6-python图像处理opencv(2.图像像素访问,通道分离与合并)
- 图像的像素点操作【OpenCV学习笔记3】
- 五.使用OpenCv操作图像上每一个像素点
- opencv入门笔记之二 操作图像像素点
- 图像处理-像素点分析
- 图像的像素点操作
- opencv学习三种常用方法访问操作图像像素
- Cocos2d-x游戏引擎开发[6]---定时器(Schedule)
- c++11 跨平台多线程demo和qt 静态链接
- GridControl自定义合并单元格 多个条件同时满足
- Android之仿QQ的侧滑菜单
- Curl用法点滴
- Python-OpenCV 处理图像(三):图像像素点操作
- RISC和CISC比较
- 集合:接口List
- 欢迎使用CSDN-markdown编辑器
- android Glide 获取磁盘缓存
- 大数(加减乘除)
- Java基础总结
- js-鼠标经过显示下拉菜单
- Linux Nginx Centos 下使用 ab 工具 进行压力测试