OpenCV-Python入门教程3-图像基本操作(访问像素点/ROI/通道分离)
一、获取和修改像素点的值
import cv2
img = cv2.imread('lena.jpg')
# 100, 90表示行列坐标
px = img[100, 90]
print(px) # 获取一个坐标单通道的值
# 0:蓝色(B)
# 1:绿色(G)
# 2:红色(R)
px_blue = img[100, 90, 0] px_green = img[100, 90, 1]
px_red = img[100, 90, 2]
print(px_blue)
print(px_green)
print(px_red)
[103 98 197]
103
98
197
通过行、列坐标获取某个像素点的值,对于彩色图。B、G、R对应0, 1, 2
修改像素也是同样的方式:
# 修改像素的值
img[100, 90] = [255, 255, 255]
print(img[100, 90])
[255 255 255]
注意:该操作只是内存中的img像素点变了,因为没有保存,所以原图并没有修改
更好的像素访问和编辑方法:
img.item(100, 90, 0)
103
# 修改蓝色通道的值
img.itemset((100, 90, 0), 50)
img.item(100, 90, 0)
50
二、图片属性
1、图像形状
print(img.shape)
# 形状中包括行数,列数和通道数
height, width, channels = img.shape
# img是灰度图,height, width = img.shape
(263, 247, 3)
2、数据类型
print(img.dtype)
uint8
3、图像总像素数
print(img.size) # 263 * 247 * 3 = 194883
194883
二、感兴趣区域(ROI)
# 截取脸部ROI
face = img[100:200, 115:188]
cv2.imshow('face', face)
cv2.waitKey(0)

行对应y,列对应x,所以其实是img[y, x],所以要注意,不要弄混淆
三、通道分割与合并
b, g, r = cv2.split(img)
img = cv2.merge((b, g, r))
分割:cv2.split() 合并:cv.merge()
split()函数比较耗时,更高效的方式是用numpy中的索引,提取B通道:
b = img[:, :, 0]
cv2.imshow('blue', b)
cv2.waitKey(0)

由于是单通道图,所以呈现出来的是一种灰度图。
参考网址:https://tianchi.aliyun.com/course/courseConsole?courseId=40992&chapterIndex=1§ionIndex=4
OpenCV-Python入门教程3-图像基本操作(访问像素点/ROI/通道分离)的更多相关文章
- Python入门教程 超详细1小时学会Python
Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...
- Python入门教程 超详细1小时学会Python
Python入门教程 超详细1小时学会Python 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的 ...
- 毫无基础的人入门Python,Python入门教程
随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...
- Python入门教程完整版(懂中文就能学会)
前几天给大家分享<从零学会Photoshop经典教程300集>的教程受到了广泛的关注,有人不知道怎么领取,居然称小编为"骗子". 不过小编的内心是强大的,网友虐我千百遍 ...
- 老鸟的Python入门教程
转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...
- 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构
知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...
- 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流
知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...
- 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python
知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...
- 极度舒适的 Python 入门教程,小猪佩奇也能学会~
编程几乎已经成为现代人的一门必修课,特别是 Python ,不仅长期霸占编程趋势榜.薪资榜第一,还屡屡进入小学教材,甚至成为浙江省信息技术高考项目-- 今天,小编带来了一门极度舒适的 Python 入 ...
随机推荐
- QR 编码原理(二)
编码就是把常见的数字.字符等转换成QR码的方法.说具体的编码之前,先说一下QR码的最大容量问题. 一.最大容量 QR码的最大容量取决于选择的版本.纠错级别和编码模式(Mode:数字.字符.多字节字符等 ...
- 二、Java神经网络框架Neuroph的使用和架构分析
一.使用Neuroph Studio构造感知机处理逻辑与 新建项目 接着,输入名字和地址,点击“完成” 在工程的神经网络文件下新建神经网络 准备训练数据 开始训练 误差展示 也可以测试神经元 或者输入 ...
- 《Debug Hacks》和调试技巧【转】
转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...
- 不允许lseek文件 | nonseekable_open()【转】
转自:https://blog.csdn.net/gongmin856/article/details/8273545 使用数据区时,可以使用 lseek 来往上往下地定位数据.但像串口或键盘一类设备 ...
- Linux中OCI开发库的配置
Oracle调用接口(Oracle Call Interface,简称OCI)提供了一组可对Oracle数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取Or ...
- 1、git基础介绍及远程/本地仓库、分支
1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...
- 抢红包时用到的redis函数
2018-2-8 10:25:11 星期四 抢红包时经常会用redis(等其他nosql)的原子性函数去限流, 防止抢超, 下边列出一些主要的原子性函数 限制每个人只能抢一次 getSet(): 设置 ...
- mysql连表分组报错---- sql_mode=only_full_group_by问题解决
#### sql语句报错问题 #1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggreg ...
- windows IDEA注册码激活方法(2018.4.8)靠谱可用!
简介 intellij idea 2018注册码是针对intellij idea 2018软件研发推出,它的使用需要和激活补丁一起使用,安装包里面也拥有破解补丁, 所有无需在进行单独的下载:不过如果选 ...
- spring aop -包的问题
Caused by: java.lang.NoSuchMethodError: org.springframework.aop.framework.AopProxyUtils.getSingleton ...