time1 = cv.getCPUTickCount()
# getCPUTickCount用于返回从操作系统启动到当前所经的计时周期数
stetements
time2 = cv.getCPUTickCount()
print("Time:%s ms" % ((time2 - time1) / cv.getTickFrequency() * 1000))
# getTickFrequency用于返回CPU的频率
# 三通道
creat_img3 = np.zeros([400, 400, 3], np.uint8) # 高400*宽400*通道3 单通道8位
creat_img3[:, :, 0] = np.ones([400, 400]) * 255 # 0(Blue)通道全部赋值255
creat_img3[:, :, 2] = np.ones([400, 400]) * 255 # 2(Red)通道全部赋值255
cv.imshow("create image3", creat_img3)
2. 创建单通道
# 单通道
creat_img1 = np.zeros([400, 400, 1], np.uint8)
creat_img1[:, :, 0] = np.ones([400, 400]) * 127 # 单通道灰度图像
cv.imshow("create image1", creat_img1)
3. 创建小尺寸
# 生成小尺寸图片
mini_img = np.ones([3, 3], np.float)
mini_img.fill(127.1) # .fill方法填充数据
mini_img2 = mini_img.reshape([1, 9]) # reshape只改变形状,不改变数据
print(mini_img, mini_img2)
# -*- coding: utf-8 -*-
# By:iloveluoluo
# 2019.3.21
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] # Blue, Green, Red
print("height:%s, width:%s, channels:%s, pixels:%s" % (height, width, channels, image.size))
# 像素读取
for row in range(height): # 行
for col in range(width): # 列
for chl in range(channels): # 维度
pv = image[row, col, chl]
image[row, col, chl] = 255 - pv
cv.imshow("pixels_demo", image) # 显示遍历修改完的图片
def inverse(image):
"""利用OpenCV API像素取反"""
dst = cv.bitwise_not(image)
cv.imshow("inverse image", dst)
def create_image():
"""创建图像"""
"""
# 三通道
creat_img3 = np.zeros([400, 400, 3], np.uint8) # 高400*宽400*通道3 单通道8位
creat_img3[:, :, 0] = np.ones([400, 400]) * 255 # 0(Blue)通道全部赋值255
creat_img3[:, :, 2] = np.ones([400, 400]) * 255 # 2(Red)通道全部赋值255
cv.imshow("create image3", creat_img3)
"""
"""
# 单通道
creat_img1 = np.zeros([400, 400, 1], np.uint8)
creat_img1[:, :, 0] = np.ones([400, 400]) * 127 # 单通道灰度图像
cv.imshow("create image1", creat_img1)
"""
"""
# 单通道,快速初始化
create_img1 = np.ones([400, 400, 1], np.uint8)
create_img1 *= 127
cv.imshow("fast creat image1", create_img1)
"""
# 生成小尺寸图片
mini_img = np.ones([3, 3], np.float)
mini_img.fill(127.1) # .fill方法填充数据
mini_img2 = mini_img.reshape([1, 9]) # reshape只改变形状,不改变数据
print(mini_img, mini_img2)
# x = np.array([1, 2], [3, 4], np.int32) # 按要求生成数组
img = cv.imread('E:/MyFile/Picture/date/zly.jpg') # 读取图片
cv.imshow("img", img)
# 遍历像素并修改
time1 = cv.getCPUTickCount() # getCPUTickCount用于返回从操作系统启动到当前所经的计时周期数
access_pixels(img)
time2 = cv.getCPUTickCount()
print("Time:%s ms" % ((time2 - time1) / cv.getTickFrequency() * 1000)) # getTickFrequency用于返回CPU的频率
# 总次数/一秒内重复的次数*1000 = 时间(ms)
# API速度对比
time3 = cv.getCPUTickCount()
inverse(img)
time4 = cv.getCPUTickCount()
print("Time:%s ms" % ((time4 - time3) / cv.getTickFrequency() * 1000))
# create_image()
key = cv.waitKey(0) # 无限等待
cv.destroyAllWindows()