openCv学习记录2

像素的访问与修改

准备工作:导包

import cv2 as cv
#数值计算扩展工具,用来存储和处理大型多维矩阵
import numpy as np
  1. 准备一张图
src=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
  1. 方法
#图片中像素访问
def access_pixels(image):
    print(image.shape)
    height=image.shape[0]#图片垂直尺寸
    width=image.shape[1]#图片水平尺寸
    channels=image.shape[2]#图片通道数
    #把获取的尺寸输出来看
    print("width:%d,height:%d,channels:%d" %(height,width,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)
  1. 显示
access_pixels(src)#显示
t1=cv.getTickCount()#用于返回从操作系统启动到当前所经的计时周期数
t2=cv.getTickCount()
time=(t2-t1)/cv.getTickCount()
#执行时间显示
print('time:%d' %(time+1000))

创建一个rgb颜色的通道

def create_fmage():
    #zeros来创建一个空数组([h,w,3通道],通道的8位图像(np的数据类型))
    img=np.zeros([400,400,3], np.uint8)
    #用ones给zeros赋值
    img[: ,: ,0]=np.ones([400,400])*255#蓝
    #img[: ,: ,1]=np.ones([400,400])*255#绿
    #img[: ,: ,2]=np.ones([400,400])*255#红
	#创建一个单通道图像
	imgs=np.zeros([400,400,1],np.uint8)
    imgs[:,:,0]=np.ones([400,400])*127#灰色
    
    #用ones直接创建通道,比较简单灵活
	imge=np.ones([400,400,1],np.uint8)
   imge*=0#黑色  
    #显示
    cv.imshow("new image",img)
    cv.imshow("new image",imgs)
    cv.imshow("new image",imge)
    #保存图像
    cv.imwrite("C:/Users/admin/Pictures/zyl/zhuanhuan/test2.png",imge)

二维的数组转换成一维表示

#用ones生成二维数组
	m1=np.ones([3,3],np.uint8)#3*3列的数组
    m1.fill(122.388)#生成数字是122的3行3列
    print(m1)#显示
    m2= m1.reshape([1,9])#转换成一维(一行)
    print(m2)#显示
#用数组生成二维数组  
  m3=np.array([[1,2,3],[4,5,6],[7,8,9],[7,8,9]],np.int32)
  m3.fill(9)#生成数字是9的4行3列
  print(m3)

提高修改数组中像素点的值的速度

src=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")#读取图片
#cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)#新建打开窗体和类型
#cv.imshow("input image",src)#显示打开窗体图片
#修改数组中像素点的值
def inverse(image):
    dst=cv.bitwise_not(image)
    cv.imshow("inverse demo",dst)
inverse(src)#调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值