OpenCV 基础入门:图像读取、处理与视频操作

OpenCV 基础入门:图像读取、处理与视频操作 一、环境准备pipinstallopencv-python numpy## 二、图像基础操作demo01_photo_display.py### 1. 读取与显示图片importcv2# 读取图片imgcv2.imread(photo03.jpg)# 显示图片cv2.imshow(tu, img)cv2.waitKey(0)cv2.destroyAllWindows()2. 查看图像属性print(f图像形状(shape):{img.shape})print(f图像数据类型:{img.dtype})print(f图像大小(size):{img.size})shape(高度, 宽度, 通道数)dtype通常为 uint8size像素总数3. 灰度图读取与保存# 读取灰度图graycv2.imread(photo03.jpg,cv2.IMREAD_GRAYSCALE)cv2.imshow(xx,gray)cv2.waitKey(0)cv2.destroyAllWindows()# 保存灰度图cv2.imwrite(photo03_GRAY.jpg,gray)4. ROI感兴趣区域裁剪imgcv2.imread(photo03.jpg)roiimg[30:230,100:300]# 行范围列范围cv2.imshow(yuantu,img)cv2.imshow(qiepain,roi)cv2.waitKey(0)cv2.destroyAllWindows()三、视频处理importcv2# 打开视频文件摄像头传0video_capturecv2.VideoCapture(7_后羿采集器使用.mp4)ifnotvideo_capture.isOpened():print(无法打开视频文件)exit()whileTrue:ret,framevideo_capture.read()ifnotret:break# 可添加处理如转灰度# frame cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow(video,frame)ifcv2.waitKey(60)27:# ESC键退出breakvideo_capture.release()cv2.destroyAllWindows()说明waitKey(60)控制播放速度单位毫秒27是 ESC 键的 ASCII 码。四、颜色通道分离与合并imgcv2.imread(photo03.jpg)# 方法1索引分离bimg[:,:,0]gimg[:,:,1]rimg[:,:,2]# 方法2使用splitb,g,rcv2.split(img)cv2.imshow(b,b)cv2.imshow(g,g)cv2.imshow(r,r)cv2.waitKey(0)cv2.destroyAllWindows()# 合并通道mergedcv2.merge((b,g,r))cv2.imshow(result3,merged)cv2.waitKey(0)cv2.destroyAllWindows()五、图像处理进阶1. 马赛克importnumpyasnp imgcv2.imread(photo03.jpg)# 在指定区域生成随机的颜色img[100:200,200:300]np.random.randint(0,256,(100,100,3))cv2.imshow(masaike,img)cv2.waitKey(0)cv2.destroyAllWindows()2. 图像组合ROI粘贴acv2.imread(photo03.jpg)bcv2.imread(photo02.jpg)b[200:350,200:350]a[50:200,100:250]# 尺寸必须一致cv2.imshow(b,b)cv2.waitKey(0)cv2.destroyAllWindows()3. 图像缩放cv2.resizeimgcv2.imread(photo03.jpg)# 指定尺寸# resized cv2.resize(img, (200, 200))# 按比例缩放resizedcv2.resize(img,None,fx2,fy0.5)# 宽2倍高0.5倍cv2.imshow(original,img)cv2.imshow(resized,resized)cv2.waitKey(0)cv2.destroyAllWindows()六、综合练习任务要求读取彩色原图尺寸修改为 500×500截取左上角 ROI行0:250列100:250粘贴到右下角行250:500列250:400在右上角黑色小鸟区域添加随机噪声马赛克转为灰度图并保存同时显示彩色图与灰度图完整代码importcv2importnumpyasnp# 1. 读取图像imgcv2.imread(photo04.png)# 2. 调整尺寸为 500×500imgcv2.resize(img,(500,500))# 3. ROI 裁剪 粘贴到右下角img[250:500,250:400]img[0:250,100:250]# 4. 右上角黑色小鸟区域马赛克img[50:140,320:410]np.random.randint(0,256,(90,90,3))# 5. 转为灰度图并保存graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)cv2.imwrite(photo04_GRAY.jpg,gray)# 6. 显示结果cv2.imshow(caitu,img)cv2.imshow(huidutu,gray)cv2.waitKey(0)cv2.destroyAllWindows()