『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训 ...
随机推荐
- python webdriver 显示等待判断元素是可以被点击的,但是执行脚本时,却提示元素不能点击的解决办法?
我之前运行没问题的环境是firefox版本50,对应的驱动是没有问题的,现在firefox自动升级到了60,驱动没有变,我试着把浏览器装回了50,再试就好了, 所以应该是浏览器跟驱动geckodriv ...
- nodejs中req.body对请求参数的解析问题
首先,先了解一下关于http协议里定义的四种常见数据的post方法,分别是: application/www-form-ulrencoded multipart/form-data applicati ...
- python之路----TCP与UDP
TCP import socket #tcp协议 sk = socket.socket() # 买手机 创建一个socket对象 sk.bind(('127.0.0.1',8080)) # 给serv ...
- https的设置
现有如下的web架构(简化之后的),需要把原来的http访问修改到https访问! haproxy的认证有两种方式: 第一种:haproxy提供ssl证书,后面的nginx访问使用正常的http. 第 ...
- Python入门之面向对象编程(二)python类的详解
本文通过创建几个类来覆盖python中类的基础知识,主要有如下几个类 Animal :各种属性.方法以及属性的修改 Dog :将方法转化为属性并操作的方法 Cat :私人属性讲解,方法的继承与覆盖 T ...
- Python descriptor 以及 内置property()函数
Python Descriptor 1, Python Descriptor是这样一个对象 它按照descriptor协议, 有这样的属性之一 def __get__(self, obj, type ...
- 计算两个集合的差集——第六期 Power8 算法挑战赛
第六期Power8大赛 1.1 比赛题目 题目: 计算两个集合的差集: 详细说明: 分别有集合A和B两个大数集合,求解集合A与B的差集(A中有,但B中无的元素),并将结果保存在集合C中,要求集合C中的 ...
- troubleshooting-windows 在 CDH集群环境读取 Hive 表 KrbException: Cannot locate default realm
KrbException: Cannot locate default realm 解决办法 1)拷贝需要组件的配置文件到项目中的 /resources/目录.如hadoop,目录/etc/hadoo ...
- 20145106《Java程序设计》第7周学习总结
教材学习内容总结 使用Lambda的特性可以去除重复的信息,以取得语法的简洁,增加程序代码的表达性.Lambda表达式本身是中性的,不代表任何类型的实例,同样的Lambda表达式,可用来表示不同目标类 ...
- JS(JavaScript)脚本库的积累
在现在互联网盛行的时代,使得B/S架构飞速发展.曾经在大学的时候我一直都梦想着毕业后要找一个像腾讯这样大企业做C/S方面的开发工作(其实现在腾讯也有很多B/S软件),因为C/S体验度非常高,感觉非常好 ...