当前位置: 首页 > news >正文

OpenCV(01)基本图像操作、绘制,读取视频

图像基础

import cv2 as cv#读取图像 cv.imread(path,读取方式)默认读为彩色图像
#cv.imread(path)
cat = cv.imread('E:\hqyj\code\opencv\images\\face.png')#显示图像 cv.imshow(window,img)
cv.imshow('myimg',cat)print(cat)
print(cat.shape)    #(h,w,c) 元组(1,1)
print(cat.dtype)    #uint8
print('=' * 50)#设为灰度图
cat1 = cv.imread('opencv\images\\1.jpg',cv.IMREAD_GRAYSCALE)
print(cat1)
print(cat1.shape)#保存图像 cv.imwrite(path,img)
cv.imwrite("./grey.jpg",cat1)
cv.imshow('cat',cat1)#留下绘制时间,cv.waitKey(n)等待n毫秒
cv.waitKey(0)#释放资源
cv.destroyAllWindows()

图像剪裁、绘制

  • 剪裁
import numpy as np
import cv2 as cvpig=cv.imread('opencv\images\pig.png')
cv.imshow('pig',pig)#切片(409,349),(534,415)(w,h)
nose=pig[329:429,410:539]   #(y:y+h,x,x+w)
cv.imshow('dst',nose)
cv.waitKey(0)
cv.destroyAllWindows()
  • 绘制
import numpy as np
import cv2 as cvpig=cv.imread('opencv\images\pig.png')
#绘制直线 cv.line(img,start,end,color,thickness) (w,h)
cv.line(pig,(400,212),(584,217),(0,0,255),5)
cv.line(pig,(400,212),(414,78),(0,0,255),5)
cv.line(pig,(584,217),(605,72),(0,0,255),5)#绘制矩形 cv.rectangle(img,start,end,color,thickness) thickness=-1 填充
cv.rectangle(pig,(409,349),(534,415),(0,255,0),-1)#绘制圆形 cv.circle(img,center,radius,color,thickness)
#cv.LINE_AA 反走样技术、抗锯齿、圆滑,默认使用LINE_8
cv.circle(pig,(400,212),50,(0,0,0),-1,cv.LINE_AA)
cv.circle(pig,(584,217),50,(0,0,0),-1,cv.LINE_AA)cv.imshow('pig',pig)
cv.waitKey(0)
cv.destroyAllWindows()

黑、白&随机像素值图像

import numpy as np
import cv2 as cv#创建一个全零数组 表示黑色图像
height, width, c = 360, 480, 3
black = np.zeros((height,width,c), np.uint8)
cv.imshow('black',black)#使用np.full() 创建白色图像
white = np.full((360,480,3),fill_value=255, dtype=np.uint8)
cv.imshow('white',white)#索引修改像素值 表示白色图像
black[:,:,:] = 255
# black[:,:] = 255
# black[:] = 255
cv.imshow('W',black)#创建随机像素值的图像
dst = np.random.randint(0,255,(360,480,3),dtype=np.uint8)   #左闭右开,255取不到
cv.imshow('random',dst)cv.waitKey(0)
cv.destroyAllWindows()

读取视频

import cv2 as cv#创建一个videocaptrue对象
#cv.VideoCapture()
#cap=cv.VideoCapture('opencv/images/videocap.mp4')#获取实时视频流
cap=cv.VideoCapture(0)
#循环读取每一帧图像
while True:#调用read方法读取每一帧图像ret,img = cap.read()	#布尔值ret,帧图像img#判断是否读取成功if not ret:print('error!')breakcv.imshow('video',img)key = cv.waitKey(1)&0xFFif key == ord('q') or key == ord('Q'):breakcap.release()	#停止视频捕获,关闭摄像头或释放视频文件,并释放所有相关资源
cv.destroyAllWindows()

调整图像大小

import cv2 as cv
import numpy as np#读取图像
pig=cv.imread('opencv\images\\pig.png')
print(pig.shape)#调整图像大小cv.resize(img,(w,h,c))
#使用插值算法来计算新像素的值,从而在调整尺寸时保持图像的平滑性和质量。
pig2=cv.resize(pig,(480,520))
cv.imshow('old',pig)
cv.imshow('pig2',pig2)
print(pig2.shape)#np.reshape(img,(h,w,c))
#reshape保持像素个数不变,只是重构元组数据,不推荐使用
# pig3=np.reshape(pig2,(520,480,3))
# cv.imshow('pig3',pig3)cv.waitKey(0)
cv.destroyAllWindows()
http://www.dtcms.com/a/294166.html

相关文章:

  • 枚举右,维护左
  • 【音视频学习】四、深入解析视频技术中的YUV数据存储方式:从原理到实践
  • Web3 开发者进阶学习图谱
  • 面向对象分析与设计40讲(7)设计原则之合成复用原则
  • 用 PyTorch 实现全连接网络识别 MNIST 手写数字
  • 【Unity编辑器开发与拓展Handles】
  • PyTorch中nn.Module详解和综合代码示例
  • 不同地区的主要搜索引擎工具
  • Java项目中定时任务三方工具和技术的深度应用指南
  • C#定时任务实战指南:从基础Timer到Hangfire高级应用
  • 基于Python的新闻爬虫:实时追踪行业动态
  • SQL Server 数据类型的含义、特点及常见使用场景的详细说明
  • Redis 的事务机制是怎样的?
  • 【世纪龙科技】汽车专业数字课程资源-新能源汽车维护与故障诊断
  • UI自动化测试实战
  • RPA认证考试全攻略:如何高效通过uipath、实在智能等厂商考试
  • MCP vs 传统集成方案:AI时代下的协议革命与性能博弈
  • uniapp 仿美团外卖详情页滑动面板组件[可自定义内容、自定义高度]
  • UniApp H5 适配 PC 端新姿势:打造跨设备一致体验
  • 【Linux系统编程】基础指令
  • 实时视频传输遥控车:DIY智能家居监控与探索机器人
  • CentOS 7 Linux 基础知识点汇总
  • 【C++】OpenCV常用对比度增强方法
  • 华普微Matter模块HM-MT7201,打破智能家居生态孤岛
  • Shell 脚本里的流程控制
  • Android用户鉴权实现方案深度分析
  • Android Camera openCamera
  • 绿化工程路牙边界区分-CAD快速看图标注分类高效处理
  • 使用 MobaXterm 登录你的阿里云 ECS 实例
  • 不止于“亮”:一盏智慧路灯的技术进化史——塔能科技用“落地性”定义行业标准