# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:tzting
@File: 3numpy数组操作.py
@Time: 2020/11/11 19:30 -21:05
"""
import tensorflow as tf
import cv2 as cv
import numpy as np
"""
numpy数组操作
遍历数组中得每个像素点,修改像素点的值,data\dtype\size\shape\len
代码层面知识点:
使用numpy初始化数组的各种方法
"""
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))
# 对其进行循环获取每个像素点,对每个像素点进行修改,access每个像素点
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):
dst = cv.bitwise_not(image)
cv.imshow("inverse demo",dst)
# 创建新的图像
def create_image():
# 单通道灰度图
"""
初始化为全为0
img = np.zeros([400,400,1], np.uint8) # 全部变成0
img[:, :, 0] = np.ones([400,400])*127 # 全部变成1
#初始化为全为1
img = np.ones([400,400,1], np.uint8)
img = img*0 #255白色,0黑色
cv.imshow("new image", img)
"""
# 创建一个小的图像
m1 = np.ones([3,3], np.uint8) # uint8整数 int32/8 int8高位自动截断
# 把浮点数变成八位的整形,变成正的cv.convertScaleABs
m1.fill(112.388)
print(m1)
m2 = m1.reshape([1,9]) # 二维改三维,改变在空间的表示情况
print(m2)
m3 = np.array([[2, 3, 4],[4, 5, 6],[7, 8, 9]]) # 自定义一些矩阵
# m3.fill(9)
print(m3)
"""
#多通道rgb图像
image = np.zeros([400,400,3],np.uint8) # 创建一张图,第一个形状,第二个类型8位
image[:, :, 0] = np.ones([400, 400])*255 # bgr 第一个通道,出来一个蓝色的图
cv.imshow("new image",image)
"""
src = cv.imread("C:/Users/tzt/Desktop/opencv-python/girl.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
# cpu上面运行的时间比较,总共用了多少秒数
t1 = cv.getTickCount()
create_image()
t2 = cv.getTickCount()
time = (t2-t1)/cv.getTickFrequency()
print("time : %s ms"%(time*1000))
create_image()
cv.waitKey(0)
cv.destroyAllWindows()
numpy数组操作
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在C中操作有拷贝和引用两种,形如下: int adder0(int a, int b) { a += 1; ...