OpenCV-----Numpy数组
Nunmpy数组包含:
强大的N维数组对象
复杂的(广播)功能
集成C / C ++和Fortran代码的工具
有用的线性代数,傅立叶变换和随机数功能
遍历与修改数组中的所有像素点
#对所有像素进行循环
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
cv.imshow("pixels_demo",image)
创建新图像
创建新图像:
np.zeros([400, 400, 3], np.uint8) #形状、类型
代码:
#通过Numpy对一个数组指定维数赋值
def create_image():
'''
#(创建一个新三通道的图像)
#多通道常见为RGB图像
# img = np.zeros([400, 400, 3], np.uint8)
# img[: ,: ,0] = np.ones([400, 400])*255 #0表示第一通道Blue;1表示第二通道Green;3表示第三通道Read #单通道常见为灰度图像
# img = np.zeros([400, 400, 1], np.uint8) #创建新的图像
# img[:, :, 0] = np.ones([400, 400]) * 127
img = np.ones([400, 400, 1], np.uint8)
img =img*127
cv.imshow("new image", img) #窗口显示
cv.imwrite("C:/Users/shinelon/Desktop/DL/001.png") #将图像保存
''' #初始化二维,打印像素点
m1 = np.ones([3, 3], np.float32)
m1.fill(222.388)
print(m1) m2 = m1.reshape([1,9]) #改变其在空间的形状
print(m2)
其他知识点
获取当前CPU时钟:
t1 = cv.getTickCount() #获取当前CPU时间
完整代码
import cv2 as cv
import numpy as np #对所有像素进行循环;解释执行速度较慢
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
cv.imshow("pixels_demo",image) def inverse(image):
dest = cv.bitwise_not(image) #像素取反,依靠C的代码
cv.imshow("inverse",dest) #通过Numpy对一个数组指定维数赋值
def create_image():
'''
#(创建一个新三通道的图像)
#多通道常见为RGB图像
# img = np.zeros([400, 400, 3], np.uint8)
# img[: ,: ,0] = np.ones([400, 400])*255 #0表示第一通道Blue;1表示第二通道Green;3表示第三通道Read #单通道常见为灰度图像
# img = np.zeros([400, 400, 1], np.uint8) #创建新的图像
# img[:, :, 0] = np.ones([400, 400]) * 127
img = np.ones([400, 400, 1], np.uint8)
img =img*127
cv.imshow("new image", img) #窗口显示
cv.imwrite("C:/Users/shinelon/Desktop/DL/001.png") #将图像保存
''' #初始化二维,打印像素点
m1 = np.ones([3, 3], np.float32)
m1.fill(222.388)
print(m1) m2 = m1.reshape([1,9]) #改变其在空间的形状
print(m2) m3 = np.array([[2, 3, 4], [4, 5, 6], [7, 8, 9]], np.int32) #卷积神经需要
#m3.fill(9)
print(m3) print("------Python OpenCV Tutorial-----")
src = cv.imread("C:/Users/shinelon/Desktop/DL/12.png") #括号类为图片的绝对路径
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src) #将图片在Windows窗口显示
t1 = cv.getTickCount() #获取当前CPU时间
create_image()
#access_pixels(src) #时间比较长
inverse(src) #优化,时间较短
t2 = cv.getTickCount()
time = (t2 - t1)/cv.getTickFrequency() #运行的时间ms
print("time : %s ms"%(time*1000))
cv.waitKey(0) cv.destroyAllWindows()
OpenCV-----Numpy数组的更多相关文章
- Python图像处理丨OpenCV+Numpy库读取与修改像素
摘要:本篇文章主要讲解 OpenCV+Numpy 图像处理基础知识,包括读取像素和修改像素. 本文分享自华为云社区<[Python图像处理] 二.OpenCV+Numpy库读取与修改像素> ...
- numpy数组的操作
numpy - 介绍.基本数据类型.多维数组ndarray及其内建函数 http://blog.csdn.net/pipisorry/article/details/22107553 http://w ...
- numpy数组、向量、矩阵运算
可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...
- Numpy数组对象的操作-索引机制、切片和迭代方法
前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...
- 操作 numpy 数组的常用函数
操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...
- NumPy 超详细教程(1):NumPy 数组
系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...
- NumPy数组对象
1.创建NumPy数组 import numpy as np # 创建3*2*4的三维数组 a = np.arange(24).reshape(3, 2, 4) # 打印三维数组的所有元素 print ...
- Numpy 数组属性
Numpy 数组的维数称为秩(rank),一维数组的秩为 1 , 二维数组的秩为 2 , 以此类推:在Numpy中, 每一个线性的数组称为是一个轴(axis),也就是维度(dimensios).比如说 ...
- numpy 数组对象
numpy 数组对象NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:实际的数据,描述这些数据的元数据# eg_v1 import numpy as np a = np.arange ...
- python numpy 数组拼接
我就写一下我遇到的,更多具体的请看Python之Numpy数组拼接,组合,连接 >>> aarray([0, 1, 2], [3, 4, 5], [6, 7, ...
随机推荐
- CSS3——制作正在加载页面loading...
今天做了好多小东西,还挺开心的~ <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- postman—Sandbox和断言
Postman沙盒 Postman Sandbox是一个JavaScript执行环境,您可以在编写预请求脚本和测试脚本(在Postman和Newman中)时可用.在这个沙箱中执行您在预请求/测试脚本部 ...
- 如何在Web页面里使用高拍仪扫描上传图像
如何在Web页面里使用高拍仪扫描上传图像 市场上所有的高拍仪都支持扫描图片并保存到本地,一般公司都会提供控件.开发人员只需要在页面集成就可以进行拍照和扫描.只不过一般扫描的图片是保存在本地固定的文件夹 ...
- WEB实现大文件上传和下载
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
- USACO Overplanting ( 线段树扫描线 )
题意 : 在二维平面上给出 N 个矩形,问你所有矩形构成的图案的面积是多少(相互覆盖的地方只计算一次) 分析 : 求矩形面积并可以模拟来做,不过使用线段树来辅助做扫描线可以更高效地求解 扫描线顾名思 ...
- 洛谷p3955 图书管理员(NOIP2017 t2)
蒟蒻的最后一篇pas题解...目前转c++ ing 回顾了一下,发现c++的string真的好繁啊(主要我这个蒟蒻太菜不会用) 还是pas的string操作简洁 做法 我这种蒟蒻不像别的dalao,懒 ...
- [CSP-S模拟测试]:串串香(KMP)
题目传送门(内部题75) 输入格式 输入文件$ccx.in$ 每个输入文件包含多组测试数据.输入文件的第一行为一个整数$T$,表示数据组数.接下来$T$行,每行表示一组测试数据 每行一开始,两个空格隔 ...
- Handling Configuration Changes with Fragments
This post addresses a common question that is frequently asked on StackOverflow: What is the best wa ...
- IDEA设置Ctrl+滚轮调整字体大小
IDEA设置Ctrl+滚轮调整字体大小(转载) 按Ctrl+Shift+A,出现搜索框 输入mouse: 点击打开这个设置:勾选 点击ok,之后就可以通过Ctrl+滚轮 调整字体大小了.
- 双边滤波Matlab代码
%简单地说: %A为给定图像,归一化到[,]的矩阵 %W为双边滤波器(核)的边长/ %定义域方差σd记为SIGMA(),值域方差σr记为SIGMA() %%%%%%%%%%%%%%%%%%%%%%%% ...