图片的像素

  • 像素:组成图片的单位
  • RGB:颜色由 RGB三种颜色组成
  • 颜色深度:对于8bit的颜色深度来说,它可以表示的颜色范围是 0 ~ 255,对于RGB图片来说,8位颜色深度可以表示 (28)3 种颜色
  • 宽高:图片横向与纵向的像素点个数
  • 大小:宽 * 高 * 3 * 8 bit = xxx bit
  • alpha:有些图片还会有一个alpha通道,描绘图片的透明度信息

常见颜色存储格式:RGB、BGR

像素操作

获取一个具体点的像素值: r, g, b = img[x, y]

写入一个颜色到指定点:img[100,100]=[255,255,255]

使用NumPy的方法进行读取和写入

print( img.item(10,10,2))

img.itemset((10,10,2), 100)

Numpy 是经过优化了的进行快速矩阵运算的软件包。所以我们不推荐

逐个获取像素值并修改,这样会很慢,能有矩阵运算就不要用循环。

上面提到的方法被用来选取矩阵的一个区域,比如说前 5 行的后 3

列。对于获取每一个像素值,也许使用 Numpy 的 array.item() 和 array.itemset() 会更好。但是返回值是标量。如果你想获得所有 B, G, R 的

值,你需要使用 array.item() 分割他们。

像素取反

def access_pixels(image):
    print(image.shape)
    height = image.shape[0]
    width = image.shape[1]
    channels = image.shape[2]
    print("width : %s, height : %s, channels : %s" % (width, height, channels))
    for row in range(height):
        for col in range(width):
            for c in range(channels):
                pv = image[row, col, c]
                image[row, col, c] = 255-pv  # 修改
    cv2.imshow("pixels_demo", image)

使用 OpenCV 自带的API:

dst = cv2.bitwise_not(image)

这个操作底层是用C++操作的,比起自己使用循环来操作速度快很多

NumPy 创建一张图片

def create_image():
img = np.zeros([400, 400, 3], np.uint8)
# img = np.zeros([400, 400, 1], np.uint8) # 单通道图片
# img[:, :, 0] = np.ones([400, 400])*127 # 单通道设置灰度图
img[:, :, 0] = np.ones([400, 400])*255
# img[:, :, 1] = np.ones([400, 400])*255
# img[:, :, 2] = np.ones([400, 400])*255
cv2.imshow("new image", img)
# cv2.imwrite("images/demo.img")

python opencv:像素操作的更多相关文章

  1. OpenCV像素操作和图形绘制

    像素操作 #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespac ...

  2. Python openCV基础操作

    1.图片加载.显示和保存 import cv2 # 读取图片 img = cv2.imread("img1.jpg") # 生成灰色图片 imgGrey = cv2.imread( ...

  3. Opencv中图像的遍历与像素操作

    Opencv中图像的遍历与像素操作 OpenCV中表示图像的数据结构是cv::Mat,Mat对象本质上是一个由数值组成的矩阵.矩阵的每一个元素代表一个像素,对于灰度图像,像素是由8位无符号数来表示(0 ...

  4. opencv中对图像的像素操作

    1.对灰度图像的像素操作: #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using ...

  5. 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化

    一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...

  6. OpenCV基础篇之像素操作对照度调节

    程序及分析 /* * FileName : contrast.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Tue 29 ...

  7. python - opencv 的一些小技巧备忘

    python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...

  8. python opencv识别蓝牌车牌号 之 取出车牌号 (1/3)

    概述 车牌识别是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常来讲如果结合opencv进行车牌识别主要分为四个大步骤,分别为: 图像采集 车牌定位 分割车牌字符 字符识别 当然,如果结合了机器 ...

  9. python opencv show图片,debug技巧

    debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...

随机推荐

  1. 钉钉内网穿透工具在windows的使用。

    钉钉内网穿透工具在windows环境下使用 1.WIN+R,然后cmd,调出dos控制台 2.进入内网穿透程序ding.exe所在目录 3.执行 ./ding.exe -config=ding.cfg ...

  2. php设计模式之观察者模式实例代码

    php提供的两个接口,一个被观察者接口SplSubject,一个或多个观察者接口SPLObserver,和一个可以储存对象的类SplObjectStorage.被观察者有三个方法,需要实现这三个方法, ...

  3. mysql分组,然后组内排序取最新的一条

    参照: https://blog.csdn.net/qq_16504067/article/details/78589232 https://www.cnblogs.com/w1441639547/p ...

  4. artTemplate使用说明

    普通使用 <script id="test" type="text/html"> {{if isAdmin}} <h1>{{title} ...

  5. AWD - IDE For Web dev汉化版

    一款安卓上的HTML网页编辑软件,不错哦 下载链接 http://t.cn/AiRIvtoL

  6. xml配置文件中对于Shiro 权限管理filterChainDefinitions过滤器配置

    博客转载:http://blog.csdn.net/userrefister/article/details/47807075 /** * Shiro-1.2.2内置的FilterChain * @s ...

  7. Vue - 动态组件 & 异步组件

    动态组件 <div id="app"> <components :is="com[2]"></components> < ...

  8. mongo的常用命令--转载

    转载liyonghui的博文,出处  http://www.cnblogs.com/liyonghui/p/mongodb.html 博主写的特别好,对于我这个新手帮了大忙了,还将mongo和mysq ...

  9. radar图生成用户guideline

    1.最后生成的效果是这样的: 2.第一个对话框如下(包含了样图),用于输入维度个数[最小为4,最大不限]: 3.第二个对话框如下,根据维度个数生成了信息录入表[每个维度3个信息,每3个一次重复,不清楚 ...

  10. 03hive_DDL数据定义

    一. DDL数据定义 创建数据库 1)create database db_hive; 2)避免要创建的数据库已经存在错误,增加 if not exists 判断. create database i ...