『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训 ...
随机推荐
- seo标题关键字描述字数限制Title,keywords,description长度最长多长 ?
seo标题关键字描述字数限制 seo优化各个搜索引擎收录Title,keywords,description长度最长多长 ?SEO网站优化中Title标签的作用为重中之重,好的Title也就成功了一半 ...
- JUC原子类 1
根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ; 2. 数组类型: AtomicI ...
- IP分片丢失重传
尽管IP分片看起来是是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报.为什么会发生这种情况呢? 因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(TCP有超时 ...
- 2018跳槽面试必备之深入理解 Java 多线程核心知识
导语:多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线 ...
- PHP多进程并行执行php脚本
<?php //fork.php $cmds = [ '/data/wwwroot/default/test1.php', '/data/wwwroot/default/test2.php', ...
- Python3 数字保留后几位
Python3 数字保留后几位 方案一: 使用Python处理精度很重要的浮点数时,建议使用内置的Decimal库: from decimal import Decimal a = Decimal(' ...
- jQuery 对象
jQuery 对象 版权声明:未经博主授权,严禁转载分享 什么是 jQuery 对象 jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象. jQuery 对象是一个类数组对象. j ...
- 对于“机器视觉(computer version)”的反思
做图像有一段时间了,几个问题进行反思,欢迎讨论 1.机器视觉的本质是什么? 我认为就是通过计算机和数学的方法,对一定形式存储的2d或3d的视觉信号进行增强.延伸,以增加信号的强度: 2.机器视觉的第一 ...
- 20145104张家明 《Java程序设计》第三次实验设计
合作伙伴是20145103 下面是我们的git成果 首先下载他托管上去的代码 然后运行下载的代码 之后对下载的代码进行修改 然后推送上去 下载修改后的代码并运行 •软件工程是把系统的.有序的.可量化的 ...
- tf.reduce_sum tensorflow维度上的操作
tensorflow中有很多在维度上的操作,本例以常用的tf.reduce_sum进行说明.官方给的api reduce_sum( input_tensor, axis=None, keep_dims ...