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

OpenCvSharp读取、显示和写入图像

⒈目的

通过本案例,掌握在winform框架下基于OpenCvSharp读取、显示和写入图像的方法。

⒉软件

Visual Studio 2022

⒊界面设计

控件包括:button。

⒋安装NuGet程序包

⑴OpenCvSharp4

⑵OpenCvSharp4.runtime.win

⑶OpenCvSharp4.Extensions

⒌imread()读取图像

cv.imread(filename[,flags])

ImreadModes.Color:始终将图像转换为 3 通道BGR彩色图像,默认方式

ImreadModes.Grayscale:始终将图像转换为单通道灰度图像

ImreadModes.Unchanged:按原样返回加载的图像(使用Alpha通道)

ImreadModes.AnyDepth:在输入具有相应深度时返回16位/ 32位图像,否则将其转换为8位

ImreadModes.AnyColor:以任何可能的颜色格式读取图像

⒍imshow()在窗口中显示图像

语法:imshow(winname,img);其中winname:字符串,显示窗口的名称;img:所显示的OpenCV图像,nparray多维数组。

Cv2.waitKey()是OpenCV中的一个函数,它会在窗口上等待指定的毫秒数,如果期间没有按下任何键,则返回-1。如果按下了任何键,则返回按键的ASCII码值。该函数通常与cv2.imshow()一起使用,以便在窗口中显示图像并等待用户按下键盘。

⒎ImWrite()将图像写入文件目录

imwrite(filename,image);filename:文件名,它必须包含文件扩展名(例如.png、.jpg等),OpenCV使用此文件扩展名来指定文件的格式;image:要保存的图像。如果图像保存成功,该函数将返回True。

⒏编程代码

⑴命名空间及初始化

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Linq;

usingSystem.Text;

usingSystem.Threading.Tasks;

usingSystem.Windows.Forms;

usingOpenCvSharp;

namespace_04__OpenCvSharp读取_显示和写入图像

{

publicpartialclassForm1:Form

{

publicForm1()

{

InitializeComponent();

}

}

}

⑵“加载”按钮

privatevoidCreat_Click(objectsender,EventArgse)//加载

{

stringimagePath =@"C:\Users\wangfeng0613\Desktop\OpencvSharp系列应用资料\图片.jpg";//使用统一的绝对路径

Matimage =Cv2.ImRead(imagePath);

Cv2.ImShow("默认图像", image);//显示默认图像

//方式1:始终将图像转换为3通道BGR彩色图像,默认方式

Matimg1 =newMat(imagePath,ImreadModes.Color);

Cv2.ImShow("方式1", img1);

//方式2:图像转换为单通道灰度图像

Matimg2 =newMat(imagePath,ImreadModes.Grayscale);

Cv2.ImShow("方式2", img2);

//方式3:按原样返回加载的图像(使用Alpha通道)

Matimg3 =newMat(imagePath,ImreadModes.Unchanged);

Cv2.ImShow("方式3", img3);

//方式4:以任何可能的颜色格式读取图像

Matimg4 =newMat(imagePath,ImreadModes.AnyColor);

Cv2.ImShow("方式4", img4);

Cv2.WaitKey(0);//等待用户按键(0表示无限等待)

Cv2.DestroyAllWindows();//程序退出前关闭所有窗口

}

⑶“读图”按钮

privatevoidRead_Click(objectsender,EventArgse)//读图

{

stringimagePath =@"C:\Users\wangfeng0613\Desktop\OpencvSharp系列应用资料\图片.jpg";//使用统一的绝对路径

Matimage =Cv2.ImRead(imagePath);

Cv2.ImShow("原图", image);

intk =Cv2.WaitKey(0) & 0xFF;//等待按键按下,获取用户按下的键盘按键,并提取键值的低8位

if(k == 27)//如果按下ESC键

Cv2.DestroyAllWindows();//关闭所有窗口

elseif(k =='s')//如果按下's'键,注意是小s,此时切换为大S键无效

{

Cv2.ImWrite("image_copy.jpg",image);//保存图像

Cv2.DestroyAllWindows();//关闭所有窗口

}

}

⑷“保存”按钮

privatevoidSave_Click(objectsender,EventArgse)//保存

{

stringimagePath =@"C:\Users\wangfeng0613\Desktop\OpencvSharp系列应用资料\图片.jpg";//使用统一的绝对路径

Matsrc =Cv2.ImRead(imagePath,ImreadModes.AnyColor);

Matoutput_image =newMat();

Cv2.CvtColor(src, output_image,ColorConversionCodes.BGR2GRAY);//转换为灰度图像

stringsavePath =Path.Combine(Application.StartupPath,"output_image.png");//保存图像(使用应用程序的当前目录)

Cv2.ImWrite(savePath, output_image);//依据轨迹保存图像

MessageBox.Show($"保存路径:{savePath}");//显示保存路径

}

⒐功能演示

运行测试,点击“加载”,软件显示下图照片,任意键关闭照片:

点击“读图”,键盘按“ESC”关闭窗口,按“s”键保存图片后关闭窗口:

点击“保存”,保存指定图片到相对位置:

http://www.jsqmd.com/news/1250070/

相关文章:

  • 抖音小店一件代发如何找蓝海商品?新手选品和类目竞争分析方法 - 电商分享
  • day7
  • 2026 抖音去水印工具怎么选?实测这几款解析快又合规 - 免费软件工具方法教程
  • 深圳猎头公司收费标准大揭秘:2026深圳企业HRD与CFO必备招聘手册
  • 有没有一键转换智谱清言到 Word 的工具?AI 导出鸭一站式完成智谱清言内容转 Word,高效省心
  • 2026金华漏水维修公司严选推荐盘点 - 鼎万建筑修缮
  • AI大模型开发学习路线:从Python基础到多模态实战
  • 2026美国留学中介测评:案例多的高端留学中介有哪些 - 2027品牌AI展
  • 传统 RPA 技术瓶颈深度解析:基于大模型 Agent 的替代路径与落地实践——企业智能自动化范式迁移指南
  • 【成都信息工程大学主办 | IEEE(ISBN: 979-8-3195-3661-7)出版 | EI Compendex、Scopus检索】2026年数据与信息系统国际学术会议(DIS 2026)
  • Reliable Curation of EHR Dataset via Large Language Models under Environmental Constraints
  • 20MB,管理70+种数据库!DBX太好用了!
  • Android CameraServer架构理解
  • 2026年工业超声波清洗机采购测评:巴克选型指南 - 资讯纵览
  • 2026重庆南川管道疏通避坑指南 - 余生黄金回收
  • GDB调试C++段错误与内存分配失败:从原理到实战
  • 指纹浏览器生态闭环:如何设计灵活的插件系统让第三方扩展浏览器功能?
  • 深入解析TI TMS470R1A256:ARM7TDMI内核与实时控制外设实战指南
  • 企业级基础软件领域中远超国外的国货
  • 2026 年平鲁口碑好的景观闸门订制厂家推荐几家,揭秘隐藏的流量密码:景观闸门如何改变你的视野? - 企业推荐官【认证】
  • 干了3年运维,我转行了网络安全,聊一下我是怎么想的!
  • 在昆明出手旧金首饰注意什么?称重、验金、报价避坑全流程指南 - 日常比对手册
  • shared_ptr的一个最大的陷阱是循环引用,如何解决循环引用
  • 2026论文效率工具榜单|告别无效改稿!Okbiye一站式碾压碎片化工具[特殊字符]
  • 2026年高压喷淋清洗机采购测评与选型参考 - 资讯纵览
  • 达洛婚纱适合中大码和新款需求 - 摄影评价管
  • JBoltAI AI应用中台:企业智能化转型的Java技术实践
  • C6EZRun:降低ARM+DSP异构开发门槛,实现高效计算卸载
  • 从原始tensor到可解释仪表盘:AI工程师必须掌握的4层可视化架构(含PyTorch+TF原生集成方案)
  • 基于C2000 CLA协处理器的三相异步电机无感FOC控制实战指南