一、获取和修改像素点的值

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&sectionIndex=4

												

OpenCV-Python入门教程3-图像基本操作(访问像素点/ROI/通道分离)的更多相关文章

  1. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 作者: 字体:[增加 减小] 类型:转载 时间:2006-09-08我要评论 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Ja ...

  2. Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python 本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的 ...

  3. 毫无基础的人入门Python,Python入门教程

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...

  4. Python入门教程完整版(懂中文就能学会)

    前几天给大家分享<从零学会Photoshop经典教程300集>的教程受到了广泛的关注,有人不知道怎么领取,居然称小编为"骗子". 不过小编的内心是强大的,网友虐我千百遍 ...

  5. 老鸟的Python入门教程

    转自老鸟的Python入门教程 重要说明 这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,S ...

  6. 2018-06-21 中文代码示例视频演示Python入门教程第五章 数据结构

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第四章 控制流 对应在线文档: 5. Data Structures 这一章起初还是采取了尽量与原例程相近的汉化方式, 但有些语义较偏(如T ...

  7. 2018-06-20 中文代码示例视频演示Python入门教程第四章 控制流

    知乎原链 续前作: 中文代码示例视频演示Python入门教程第三章 简介Python 对应在线文档: 4. More Control Flow Tools 录制中出了不少岔子. 另外, 输入法确实是一 ...

  8. 2018-06-20 中文代码示例视频演示Python入门教程第三章 简介Python

    知乎原链 Python 3.6.5官方入门教程中示例代码汉化后演示 对应在线文档: 3. An Informal Introduction to Python 不知如何合集, 请指教. 中文代码示例P ...

  9. 极度舒适的 Python 入门教程,小猪佩奇也能学会~

    编程几乎已经成为现代人的一门必修课,特别是 Python ,不仅长期霸占编程趋势榜.薪资榜第一,还屡屡进入小学教材,甚至成为浙江省信息技术高考项目-- 今天,小编带来了一门极度舒适的 Python 入 ...

随机推荐

  1. pythonの递归锁

    首先看一个例子,让我们lock = threading.Lock() 时(代码第33行),程序会卡死在这里 #!/usr/bin/env python import threading,time de ...

  2. 基于FATFS的磁盘分布

    1.前言 本文主要采用FAT32文件系统的磁盘各个部分是如何划分的 2. 磁盘分布总图 如包含两个分区的磁盘整体分布如下: 图 带有两个分区的磁盘分布 2.1 MBR 图  MBR的高层视图 主引导记 ...

  3. http 遇到中文表单 转码

    #include <string> #include <vector> inline BYTE toHex(const BYTE x) { return x>9?x+55 ...

  4. Unity3D Shader 入门

    什么是Shader Shader(着色器)是一段能够针对3D对象进行操作.并被GPU所执行的程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出.绘图单元可以依据这 ...

  5. Ubuntu 关闭触摸板

    1.关闭 sudo modporbe -r psmouse 2.开启 sudo modprobe psmouse

  6. Mac 上卸载 Java

    如何在 Mac 上卸载 Java? 本文适用于: 平台: Macintosh OS X Java 版本: 7.0, 8.0 使用终端卸载 Oracle Java 注:要卸载 Java,必须具有管理员权 ...

  7. Vue-cli 搭建web服务介绍

    Node.js 之 npm 包管理 - Node.js 官网地址:点我前往官网 - Node.js 中文镜像官网: 点我前往```` Node.js 是一个基于 Chrome V8 引擎的 JavaS ...

  8. vue.js computed,watch的区别

    computed: 当数据没有变化时,它会去读取缓存,当数据有变化时,它才会去执行computed,而不会像method和watch一样每次都去执行函数(摘自https://www.jb51.net/ ...

  9. Struts2,springMVC获取request和response

    springMVC获取request和response1:在BaseController中加入: protected HttpServletRequest request;   protected H ...

  10. python深浅拷贝与赋值

    初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...