图片的像素

  • 像素:组成图片的单位
  • 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. mysql(2):索引

    索引基础 索引介绍 定义 索引是满足某种特定查找算法的数据结构.这些数据结构会以某种方式指向数据,从而实现高效查找. 优势 提高了查询速度 劣势 降低更新表的速度,因为更新表时,MySQL不仅要保存数 ...

  2. 阻止click点击事件

    遇到一个屏蔽点击事件,以前一般都是通过js控制,阻止事件,今天看到css加一个样式就能屏蔽,来记录一下 //css禁用鼠标点击事件 .test { pointer-events: none; } 随便 ...

  3. pikachu练习平台(XSS-漏洞测试案例(cookie的窃取和利用、钓鱼攻击、XSS获取键盘记录))

    XSS-漏洞测试案例 xss案例 1.cookie的窃取和利用 2.钓鱼攻击 3.XSS获取键盘记录 在进行案例之前首先要搭建xss后台 搭建xss后台 1.在pikachu文件夹下面,把pkxss单 ...

  4. Java:面向对象的编程语言

    java是面向对象的编程语言 Object,就是指面向对象的对象,对象就是实例. 在java里,对象是类的一个具体实例.就像:人,指一个类.你.我.他.张三.李四.王五等则是一个个具体的实例,也就是j ...

  5. Android开发实战——记账本(2)

    开发日志(2)——Bean目录以及数据库 首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上.那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多.bean目录有三个变量事件. ...

  6. 【资源分享】Garry's mod 自制整合包

    *----------------------------------------------[下载区]----------------------------------------------* ...

  7. socket 异步I/O

    # 客服端 # -*- coding: utf-8 -*- import socket import threading # from collections import deque # q = d ...

  8. ubuntu 切换用户

    app切换root ubuntu: sudo su - app sudo su - root centos : sudo su ############ root 切换app sudo su - ap ...

  9. bugku 多种方法解决

    首先打开链接发现是一个exe文件 实在是想不出办法了 只能回去看提示 说会有一张图片 不知道怎么就打开了hxd 然后拖进去 发现了一串 用图片base64加密的码 然后在网页中找到 解码 工具 htt ...

  10. 安装CDH第三方依赖包

    安装CDH第三方依赖包: yum install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyr ...