cv2和numpy深度契合,其图片读入后就是numpy.array,只不过dtype比较不常用而已,支持全部数组方法

数组既图片

import numpy as np
import cv2
img = np.zeros((3, 3), dtype=np.uint8) # numpy数组使用np.uint8编码就是cv2图片格式
print(img, '\n', img.shape, '\n')
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) # 单通道转化BGR格式3通道
print(img, '\n', img.shape)

[[0 0 0]
 [0 0 0]
 [0 0 0]]
 (3, 3)

[[[0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]]

[[0 0 0]
  [0 0 0]
  [0 0 0]]]
 (3, 3, 3)

读写图片文件

image = cv2.imread('img1.jpg')   # 读文件
cv2.imwrite('img1.png', image) # 写文件
print(image.shape)

(2716, 1920, 3)

灰度模式读取

grayImage = cv2.imread('img2.jpg', cv2.IMREAD_GRAYSCALE)  # 读取为灰度模式
cv2.imwrite('img2_gray.png', grayImage)

True

数组or图片属性查询

img = cv2.imread('img1.jpg')  # 图片属性查询
print(img[0, 0])
print(img.shape)
print(img.size)
print(img.dtype)

[18 18 18]
(2716, 1920, 3)
15644160
uint8

其他演示

cv2.cvtColor(img,cv2.COLOR_BAYER_BG2BGR)

img.item(0,0)

img.itemset((0,0),0)

cv2.imshow('my image',img)

cv2.waitKey()

cv2.destroyAllWindows()

 # coding=utf-8
import cv2
import numpy as np # array数组生成
img = np.zeros((3,3),dtype=np.uint8)
print img.shape # array数组转化为BGR模式
# 我也不懂为什么不用RGB而用BGR这么蹩脚的用法
img = cv2.cvtColor(img,cv2.COLOR_BAYER_BG2BGR)
print img.shape # 读取图片,左上像素点改写为蓝色,保存
img = cv2.imread('beauti.jpeg')
img[0][0] = [255,0,0]
cv2.imwrite('MyPic.png',img) # 丢失颜色信息,左上像素点改写为黑色,保存
img = cv2.imread('beauti.jpeg',cv2.IMREAD_GRAYSCALE)
print img.shape
img[0][0] = 0
cv2.imwrite('MyPic-gray.png',img) # 使用array.item和array.itemset优雅的重写上面代码
img = cv2.imread('beauti.jpeg',cv2.IMREAD_GRAYSCALE)
print img.shape
#img[0][0] = 0
print img.item(0,0)
img.itemset((0,0),0)
cv2.imwrite('MyPic-gray.png',img) # 去掉绿色通道
img = cv2.imread('beauti.jpeg')
img[:,:,1] = 0
cv2.imwrite('no_green.png',img)
print img.shape,img.size,img.dtype img = cv2.imread('beauti.jpeg')
# 显示图片,必须输入两个参数
cv2.imshow('my image',img)
# 窗口展示时间
cv2.waitKey()
# 释放窗口
cv2.destroyAllWindows()

『OpenCV3』简单图片处理的更多相关文章

  1. 『OpenCV3』基于色彩分割图片

    一.遍历图像实现色彩掩码 本节我们实现这样一个算法,我们指定某种颜色和一个阈值,根据输入图片生成一张掩码,标记符合的像素(和指定颜色的差异在阈值容忍内). 源代码如下,我们使用一个class完成这个目 ...

  2. 『OpenCV3』Harris角点特征_API调用及python手动实现

    一.OpenCV接口调用示意 介绍了OpenCV3中提取图像角点特征的函数: # coding=utf- import cv2 import numpy as np '''Harris算法角点特征提取 ...

  3. 『OpenCV3』霍夫变换原理及实现

    霍夫变换常用于检测直线特征,经扩展后的霍夫变换也可以检测其他简单的图像结构. 在霍夫变换中我们常用公式 ρ = x*cosθ + y*sinθ 表示直线,其中ρ是圆的半径(也可以理解为原点到直线的距离 ...

  4. 『OpenCV3』Mat简介

    Mat属性方法介绍:OpenCV2:Mat属性type,depth,step 推荐一套OpenCV入门博客:OpenCV探索 一.Mat Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来 ...

  5. 『OpenCV3』处理视频&摄像头

    在opencv中,摄像头和视频文件并没有很大不同,都是一个可以read的数据源,使用cv2.VideoCapture(path).read()可以获取(flag,当前帧),对于每一帧,使用图片处理函数 ...

  6. 『TensorFlow』pad图片

    tf.pad()文档如下, pad(tensor, paddings, mode='CONSTANT', name=None, constant_values=0)    Pads a tensor. ...

  7. 『OpenCV3』滤波器边缘检测

    一.原理简介 边缘检测原理 - Sobel, Laplace, Canny算子 X方向Sobel算子 -1 -2 -1 0 0 0 1 2 1 Y方向Sobel算子 -1 0 1 -2 0 2 -1 ...

  8. 『OpenCV3』滤波器实现及使用滤波器降噪

    一.滤波器实现 我们实现这样一个基于拉普拉斯算子的滤波器核心,并使用它进行滤波,这可以做到锐化图像的效果, 0 -1 0 -1 5 -1 0 -1 0 首先我们完全手动的进行滤波,依赖指针操作, vo ...

  9. 『TensorFlow』专题汇总

    TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...

随机推荐

  1. python 文件操作 练习:把一个目录下的所有文件名,打印一下,不要包含后缀名

    #coding=utf-8 import osos.chdir('d:\\test2')file_list=os.listdir('.')print "file_list:",fi ...

  2. Django 将数据库查出的 QuerySet 对象转换为 json 字符串

    通过Django查询出MySQL数据库的数据,并将查询出的QuerySet 对象转化成 json 字符串. 写这个例子的作用主要是用来为手机端提供接口用,记录一下,以后 说不准 肯定能用到! ---- ...

  3. 20145335郝昊《网络攻防》Exp4 Adobe阅读器漏洞攻击

    20145335郝昊<网络攻防>Exp4 Adobe阅读器漏洞攻击 实验内容 初步掌握平台matesploit的使用 有了初步完成渗透操作的思路 本次攻击对象为:windows xp sp ...

  4. 关于cp命令的编写

    关于cp命令的编写 娄老师在课上详细的讲了命令who的编写过程~对此,我很有启发!于是想亲自动手试试~ 有什么不足的地方请大家提出来! Learning by doing ~ 做中学,真的只有自己动手 ...

  5. codevs 1423 骑士 - Tarjan - 动态规划

    题目描述 Description Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵 ...

  6. 网站精准查询IP

    分享一些网站能精准查询IP的 https://www.chaidu.com/App/Web/IP/ http://www.ipip.net/ip.html http://www.hao7188.com ...

  7. 最大子段和SP1716GSS3 线段树

    前言 spoj需要FQ注册,比较麻烦,大家就在luogu评测吧 题目大意: $n$ 个数,$q$ 次操作 操作$0 _ x_ y$把$A_x$ 修改为$y$ 操作$1 _ l _r$询问区间$[l, ...

  8. 分布式系统一致性算法Raft

    Raft 算法也是一种少数服从多数的算法,在任何时候一个服务器可以扮演以下角色之一:Leader:负责 Client 交互 和 log 复制,同一时刻系统中最多存在一个Follower:被动响应请求 ...

  9. BZOJ4419: [Shoi2013]发微博 暴力

    Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x   表示用户x发了一条微博: + x y 表示用户x和用 ...

  10. 关于xargs cp中,如何确定拷贝的源和目的 (copied)

    Seker: find . -name "*" |xargs cp ???? 这里 xargs cp 怎么区分cp源 和 cp目的 例如:想把 查询到的文件 都copy到/home ...