opcv基础操作

1.图片的载入

import cv2 as cv

#imread 函数用来读取照片
src = cv.imread("E:0.jpg")

#namedwindow 函数用来指定输出图像的尺寸和窗口大小, autosize是自动大小
cv.namedwindow("input image",cv.WINDOW_AUTOSIZE)

#imshow 用来展示照片
cv.imshow("input image", src)

#等待键盘触发, 否则一直在此窗口等待
cv.waitKey(0)

#结束所有窗口
cv.destroyAllWindows()

2.读取视频

def video_demo():
    #capture = cv.VideoCapture(0)  #0代表摄像头
    capture = cv.VideoCapture("E:01.avi")
    
    while(true):
        #读取视频中的帧
        ret, frame = capture.read()
        #显示
        cv.imshow('video', frame)
        c = c.waitKey(50)

        if c == 27:
            break

3.打印图片类型

图片的信息主要包括图片的类型,图片的尺寸,图片的长宽高以及通道数,如果是彩色图片通道数就是3,如果是黑白的图片通道数为1。

#打印图片类型
def get_image_info(image):
    print(type(image))
    print(image.shape)
    print(image.size)
    print(image.dtype)
    
    pixel_data = np.array(image)
    print(pixel_data)

4.图像的对比度转换

我们知道图像的像素数是从0-255,如果实现图像的反转只需要遍历每个像素然后每个像素减去255即可,这里用一个笨方法实现以下

def access_pixel(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("numpy_test",image)



#使用自带的函数,底层用c++封装,效率高
def inverse(img):
    dis = cv.bitwise_not(img)

    cv.imshow("inverse",dis)

5. 时间消耗的计算

GetTickcount函数:它返回从操作系统启动到当前所经历的计时周期数

GetTickFrequency函数:返回每秒的计时周期数

使用的方法:

t1 = cv.getTickCount()

#你需要的测试的函数或代码

t2 = cv.getTickCount()

time = (t2-t1)/cv.getTickFrequency()
print("time:%s ms"%(time*1000))

src = cv.imread("D:/1.png")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)

t1  = cv.getTickCount()
inverse(src)
t2 = cv.getTickCount()

#测试时间消耗
time = (t2-t1)/cv.getTickFrequency()

print("time:%s ms"%(time*1000))

cv.waitKey(0)
cv.destroyAllWindows()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值