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()