『OpenCV3』简单图片处理
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』简单图片处理的更多相关文章
- 『OpenCV3』基于色彩分割图片
一.遍历图像实现色彩掩码 本节我们实现这样一个算法,我们指定某种颜色和一个阈值,根据输入图片生成一张掩码,标记符合的像素(和指定颜色的差异在阈值容忍内). 源代码如下,我们使用一个class完成这个目 ...
- 『OpenCV3』Harris角点特征_API调用及python手动实现
一.OpenCV接口调用示意 介绍了OpenCV3中提取图像角点特征的函数: # coding=utf- import cv2 import numpy as np '''Harris算法角点特征提取 ...
- 『OpenCV3』霍夫变换原理及实现
霍夫变换常用于检测直线特征,经扩展后的霍夫变换也可以检测其他简单的图像结构. 在霍夫变换中我们常用公式 ρ = x*cosθ + y*sinθ 表示直线,其中ρ是圆的半径(也可以理解为原点到直线的距离 ...
- 『OpenCV3』Mat简介
Mat属性方法介绍:OpenCV2:Mat属性type,depth,step 推荐一套OpenCV入门博客:OpenCV探索 一.Mat Mat类用于表示一个多维的单通道或者多通道的稠密数组.能够用来 ...
- 『OpenCV3』处理视频&摄像头
在opencv中,摄像头和视频文件并没有很大不同,都是一个可以read的数据源,使用cv2.VideoCapture(path).read()可以获取(flag,当前帧),对于每一帧,使用图片处理函数 ...
- 『TensorFlow』pad图片
tf.pad()文档如下, pad(tensor, paddings, mode='CONSTANT', name=None, constant_values=0) Pads a tensor. ...
- 『OpenCV3』滤波器边缘检测
一.原理简介 边缘检测原理 - Sobel, Laplace, Canny算子 X方向Sobel算子 -1 -2 -1 0 0 0 1 2 1 Y方向Sobel算子 -1 0 1 -2 0 2 -1 ...
- 『OpenCV3』滤波器实现及使用滤波器降噪
一.滤波器实现 我们实现这样一个基于拉普拉斯算子的滤波器核心,并使用它进行滤波,这可以做到锐化图像的效果, 0 -1 0 -1 5 -1 0 -1 0 首先我们完全手动的进行滤波,依赖指针操作, vo ...
- 『TensorFlow』专题汇总
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...
随机推荐
- postman接口测试——笔记
接口测试理论: 一.接口 1.程序内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块,发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它 ...
- sqlserver 判断各种不存在
判断数据库是否存在 if exists (select * from dbo.sysobjects where name = '数据库名') --drop database [数据库名] 判断表是否存 ...
- MySQL Crash Course #01# Chapter 1. 2 概念. Primary key
索引 database table schema Primary Key MySQL 书的第一章介绍一些基本的概念.理解数据库是掌握 MySQL 非常重要的一个部分. 第二章简单介绍了 MySQL 以 ...
- JavaScript甜点(1)
甜点1:什么是脚本语言? 脚本语言是由传统编程语言简化而来的,它与传统的编程语言既有很多相似之处,又有很多的不同之处.脚本语言的最显著的特点是:首先它不需要编译成二进制,以文本的形式存在:其次就是脚本 ...
- bzoj1635 / P2879 [USACO07JAN]区间统计Tallest Cow
P2879 [USACO07JAN]区间统计Tallest Cow 差分 对于每个限制$(l,r)$,我们建立一个差分数组$a[i]$ 使$a[l+1]--,a[r]++$,表示$(l,r)$区间内的 ...
- html模板生成静态页面及模板分页处理
它只让你修改页面的某一部分,当然这"某一部分"是由你来确定的.美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种 ...
- 20145216史婧瑶 《网络对抗》 MSF基础应用
20145216史婧瑶 <网络对抗> MSF基础应用 实验回答问题 用自己的话解释什么是exploit,payload,encode. exploit:渗透攻击模块,测试者利用它来攻击一个 ...
- Splay简介
Splay树,又叫伸展树,可以实现快速分裂合并一个序列,几乎可以完成平衡树的所有操作.其中最重要的操作是将指定节点伸展到指定位置, 目录 节点定义 旋转操作 伸展操作 插入操作 删除操作 lower_ ...
- Ruby基础教程
一.Ruby基础知识 1.关于Ruby Ruby是脚本语言 Ruby是面向对象语言 Ruby是跨平台语言 Ruby是开放源码软件 2.Ruby入门书籍推荐 <Ruby.Programming向R ...
- Python3基础 bool类型变量赋值
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...