当前位置: 首页 > 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.lryc.cn/news/596906.html

相关文章:

  • Redis MCP 安装与配置完整指南
  • Spring Boot全局异常处理:一网打尽Controller层异常,@RestControllerAdvice解析
  • Unreal5从入门到精通之使用 Python 编写虚幻编辑器脚本
  • Linux进程控制:掌握系统的核心脉络
  • 《设计模式之禅》笔记摘录 - 9.责任链模式
  • Xorg占用显卡内存问题和编译opencv GPU版本
  • 基于LNMP分布式个人云存储
  • Docker 容器中的 HEAD 请求缺失 header?从 Content-MD5 缺失聊起
  • BitDistiller:通过自蒸馏释放 Sub-4-Bit 大语言模型的潜力
  • BiLLM:突破大语言模型后训练量化的极限
  • AI安全“面壁计划”:我们如何对抗算法时代的“智子”封锁?
  • 主要分布在背侧海马体(dHPC)CA1区域(dCA1)的时间细胞对NLP中的深层语义分析的积极影响和启示
  • 使用 QLExpress 构建灵活可扩展的业务规则引擎
  • 糖尿病数据分析:血压与年龄关系可视化
  • OpenAI发布ChatGPT Agent,AI智能体迎来关键变革
  • Linux网络-------1.socket编程基础---(UDP-socket)
  • 基于数据挖掘的短视频点赞影响因素分析【LightGBM、XGBoost、随机森林、smote】
  • 应用层自定义协议【序列化+反序列化】
  • 2025暑期—06神经网络-常见网络
  • ChatGPT桌面版深度解析
  • 华为7月23日机考真题
  • TDengine 的 HISTOGRAM() 函数用户手册
  • 解决Spring事务中RPC调用无法回滚的问题
  • 解构未来金融:深入剖析DeFi与去中心化交易所(DEX)的技术架构
  • 【音视频学习】五、深入解析视频技术中的像素格式:颜色空间、位深度、存储布局
  • LoRA 低秩矩阵实现参数高效的权重更新
  • 新手向:Pycharm的使用技巧
  • python3写一个异步http接口服务调用大模型(async, sanic)---6.1
  • Hexo - 免费搭建个人博客04 - 创建另一个私人仓库,对Hexo项目进行版本管理
  • Log4j CVE-2021-44228 漏洞复现详细教程