7.29任务反馈 王可
1.Task:
task1: 将视频流读入,将其中连续两帧图片进行做差处理,保存做差后的图片。
代码如下:
1 import cv2 #opencv的缩写为cv2 2 import matplotlib.pyplot as plt # matplotlib库用于绘图展示 3 import numpy as np # numpy数值计算工具包 4 vc = cv2.VideoCapture('、home/wang300404/opencv/test.mp4') 5 c=1 6 while open: # 如果正常打开,则不停循环读取 7 ret, frame = vc.read() 8 if frame is None: # 视频读完以后的下一帧为空 9 break 10 if ret == True: 11 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 读取的图片转换成黑白的 12 cv2.imwrite('/home/wang300404/video_picture'+str(c)+'.jpg') 13 c=c+1 14 if cv2.waitKey(1) & 0xFF == 27: # 把视频的每一帧保存,0xFF为退出键ESC 15 break 16 vc.release() # release()完成与 open() 相反的工作.释放 open() 向内核申请的所有资源 17 cv2.destroyAllWindows() # 销毁所有窗口 18 19 -----------------------------读取视频,并把每一帧作为照片保存------------------------ 20 21 # 读取图片 22 img1 = cv2.imread("/home/wang30040/video_picture/jietu1.jpg") 23 img2= cv2.imread("./home/wang30040/video_picture/jietu2.jpg") 24 # 转灰度图 25 img1_gray= cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) 26 img2_gray = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) 27 28 res= cv2.absdiff(gray_cur, gray_base) 29 cv2.imshow("res ", res ) 30 cv2.waitKey(0)
结果如下:
task2: 选择一张图片进行图像的锐化、增强,并将这两张图片与原图进行拼接显示。
锐化代码如下(使用傅里叶变换高通滤波实现)
1 import numpy as np 2 import cv2 3 from matplotlib import pyplot as plt 4 5 img = cv2.imread('home/wang300404/opencvtest/le.jpg',0) 6 img_float32 = np.float32(img) 7 8 dft = cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT) 9 dft_shift = np.fft.fftshift(dft) 10 11 rows, cols = img.shape 12 crow, ccol = int(rows/2), int(cols/2) # 中心位置 13 14 # 高通滤波 15 mask = np.ones((rows,cols,2),np.uint8) 16 mask[crow-30:crow+30,ccol-30:ccol+30] = 0 # 中间区域置 0,外面的区域置 1 17 fshift = dft_shift * mask 18 f_ishift = np.fft.ifftshift(fshift) 19 img_back = cv2.idft(f_ishift) 20 img_back = cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) 21 22 plt.subplot(121),plt.imshow(img,cmap = 'gray') 23 plt.title('Input Image'), plt.xticks([]),plt.yticks([]) 24 plt.subplot(122),plt.imshow(img_back,cmap='gray') 25 plt.title('Result'),plt.xticks([]),plt.yticks([])
锐化效果如下:

增强代码如下:(使用自适应直方图均衡化实现)
1 img=cv.imread('/home/wang300404/opencvtest/le.jpg') 2 clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8,8)) # 自适应均衡化方法生成出来 3 res_clahe = clahe.apply(img) # 方法应用到输入图片当中 4 res = np.hstack((img,res_clahe)) 5 cv2.imshow('res',res) 6 cv2.waitKey(0)
增强效果如下:

-----------------------------------------------------------------------------------------------------------------分界线 分界线------------------------------------------------------------------------------------------------------------------------------2.学习进度汇报及近期思考
本周进行了opencv的学习,一开始也准备手撕文档,但opencv看文档确实有点抽象,后来还是乖乖回去刷视频,刚开始入门的一些基本操作如图片导入视频导入,图像的一些基本操作,形态学操作等还是可以掌握,从边缘检测开始就对原理有点蒙圈了,从傅里叶变换开始,原理中的各种高数知识和线代知识有点头晕,而且课程在讲解过程中也只讲了每一步是做什么的,不知道这样做的原因是什么,或者说怎么想到去这样做的,所以从傅里叶变换开始后面的如直方图,角点检测,sift算法(尤其是这个,得到特征点之后的操作基本都没看懂),特征匹配对原理都是一知半解的听完然后跑一下代码。所以虽然opencv的操作视频基本都刷完了,当感觉还是一个很蒙圈的状态,不知道怎么用。周末准备刷一下视频中的实战案例,看看能不能将这些技术与现实结合一下。

浙公网安备 33010602011771号