1、准备一张你的个人一寸照片,使用彩色、灰度等方式读取图像,并显示出来,请截图你的代码和执行结果。
1.1彩色图像
#读取图像
img = cv.imread("lena.jpg",cv.IMREAD_REDUCED_COLOR_2) #读取当前路径下的图像文件lena.jpg
cv.imshow("lena",img) # 显示图像,窗口标题未:lena
cv.waitKey(0) #等待用户输入
cv.destroyAllWindows() #用户一旦输入任意键后,程序关闭窗口
1.2灰度图像
import cv2 as cv
import numpy as np
img = cv.imread("lena.jpg",cv.IMREAD_REDUCED_GRAYSCALE_4) #读取当前路径下的图像文件lena.jpg
cv.imshow("lena",img) # 显示图像,窗口标题未:lena
cv.waitKey(0) #等待用户输入
cv.destroyAllWindows() #用户一旦输入任意键后,程序关闭窗口
2、制作彩色图像
#制作BGR图像
Img = np.zeros((200,200,3),dtype=np.uint8)
while True:
Img[50:150,50:150,1] = 255
Img[0:50,:,2] = 255
Img[150:200,:,2] = 255
Img[50:150,0:50,2] = 255
Img[50:150,150:200,2] = 255
cv.imshow('Color',Img)
key = cv.waitKey(1000)
if key==27:
break
3、读取一个视频,以每秒25帧的速度播放出来
#读取视频
import time
import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
from cv2 import cv2 as cv
vc = cv.VideoCapture("D:/myvscode/text.mp4")
success,frame = vc.read()
fps = 25
size = (vc.get(cv.CAP_PROP_FRAME_HEIGHT),
vc.get(cv.CAP_PROP_FRAME_WIDTH))
print('帧速率:',fps)
print('大小:',size)
cv.namedWindow("my video", cv.WINDOW_NORMAL)
while success:
cv.imshow("my video",frame)
key = cv.waitKey(40)
if key == 27:
break;
success,frame = vc.read()
4、生成是一个视频,视频的大小为300*200像素(300行,200列),视频内容是一组动画。
#制作动画
import cv2 as cv
import numpy as np
img = np.zeros((300, 200),dtype = np.uint8)
cv.namedWindow("img1",cv.WINDOW_NORMAL)
for i in range(0,255,10):
img[:,:]=0
img[:,i:i+20]=255
cv.imshow("img1",img)
cv.waitKey(100)
cv.destroyAllWindows()
5、图像的位操作
a) 图像可以进行按位运算,你将你自己的一寸照片与一副全白(R、G、B分量均为255)进行按位与、或、异或操作之后的结果是什么?
b) 图像可以进行按位运算,你将你自己的一寸照片与一副纯黑(R、G、B分量均为0)进行按位与、或、异或操作之后的结果是什么?
#图像位运算
import cv2 as cv
import numpy as np
# np.arange(d)
src1 = cv.imread('D:/myvscode/lena.jpg',cv.IMREAD_REDUCED_COLOR_2) #读取图像
src2 = cv.imread('D:/myvscode/write.jpg',cv.IMREAD_REDUCED_COLOR_2) #读取图像
img3 = cv.bitwise_and(src1,src2) #按位与
img4 = cv.bitwise_or(src1,src2) #按位或
img5 = cv.bitwise_not(src1) #按位去反
img6 = cv.bitwise_xor(src1,src2) #按位异或
cv.imshow('color_h',src1) #显示原图像
cv.imshow('color_v',src2) #显示原图像
cv.imshow('and',img3) #显按位与图像
cv.imshow('or',img4) #显示位或图像
cv.imshow('not',img5) #显示取反图像
cv.imshow('xor',img6) #显示位异或图像
cv.waitKey(0)
cv.destroyAllWindows()