c# OpenCvSharp读取、显示和写入图像(二)

本文介绍了OpenCV库中的三个关键函数:imread()用于读取图像,imshow()在窗口中显示图像,imwrite()用于保存图像。同时讲解了cv.waitKey()的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要先读取图像。因此,掌握这些基本操作非常重要。

  1. imread()读取图像
  2. imshow()在窗口中显示图像
  3. imwrite()将图像保存到文件目录里

我们将使用下图来演示此处的所有功能。

一、imread()读取图像

cv.imread(filename[, flags])

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

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

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

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

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

Mat image = Cv2.ImRead("path/to/your/image.jpg");
Cv2.ImShow("默认", image);

Mat img1 = new Mat("1.jpg", ImreadModes.Color);
Cv2.ImShow("始终将图像转换为 3 通道BGR彩色图像,默认方式", img1);

Mat img2 = new Mat("1.jpg", ImreadModes.Grayscale);
Cv2.ImShow("图像转换为单通道灰度图像", img2);

Mat img3 = new Mat("1.jpg", ImreadModes.Unchanged);
Cv2.ImShow("按原样返回加载的图像(使用Alpha通道)", img3);

Mat img4 = new Mat("1.jpg", ImreadModes.AnyColor);
Cv2.ImShow("以任何可能的颜色格式读取图像", img4);

二、imshow()在窗口中显示图像

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

img = cv2.imread('image.jpg')
cv2.imshow('image', img)
k = cv2.waitKey(0) & 0xFF # 等待按键按下
if k == 27: # 如果按下ESC键
    cv2.destroyAllWindows() # 关闭所有窗口
elif k == ord('s'): # 如果按下's'键
    cv2.imwrite('image_copy.jpg', img) # 保存图像
    cv2.destroyAllWindows() # 关闭所有窗口

 在上面的例子中,cv2.waitKey(0)会一直等待,直到用户按下任意键。如果用户按下ESC键,则所有窗口都将关闭。如果用户按下’s’键,则图像将被保存为’image_copy.jpg’并关闭所有窗口。

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

imwrite(filename, image).

  1. 第一个参数是文件名,它必须包含文件扩展名(例如 .png、.jpg 等)。OpenCV 使用此文件扩展名来指定文件的格式。
  2. 第二个参数是要保存的图像。如果图像保存成功,该函数将返回。True
Mat src = Cv2.ImRead("lenna.png", ImreadModes.AnyColor);
Mat output_image = new Mat();
Cv2.CvtColor(src, output_image, ColorConversionCodes.BGR2GRAY);
Cv2.ImWrite("output_image.png", output_image);

四、总结

  • imread() imshow() imwrite() 图像读取,图像显示,图像保存;
  • waitKey()和功能,以及显示功能destroyAllWindows()
    • 按键时关闭图像窗口
    • 并从内存中清除任何打开的图像窗口

  c# OpenCV相关文章目录

 c# OpenCvSharp安装(一)
c# OpenCvSharp读取、显示和写入图像(二)
c# OpenCvSharp图像裁剪、调整大小、旋转、透视(三)
c# OpenCvSharp基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)
c# OpenCvSharp 检测(斑点检测、边缘检测、轮廓检测)(五)
c# OpenCvSharp 轮廓绘制六步骤你学会了吗(六)
c# OpenCvSharp 目标检测五个步骤(又学会了)(七)
c# OpenCvSharp透视矫正六步实现透视矫正(八
c# OpenCvSharp Cv2.Threshold()和Cv2.AdaptiveThreshold参数说明
c# OpenCvSharp透视矫正参数调整器

图像处理是计算机视觉领域的基础,而Python结合PILOpenCV库能够提供强大的图像处理能力。首先,使用PIL库,我们可以轻松地读取写入各种格式的图像文件。例如,使用PIL的Image模块,可以通过open函数读取图像,然后利用save函数将其保存为新的格式。对于图像的缩放、裁剪等基本操作,PIL也提供了直观的方法。 参考资源链接:[Python图像处理:PIL, OpenCV, NumPy与可视化工具](https://wenku.youkuaiyun.com/doc/1dkox6n9p8?spm=1055.2569.3001.10343) 当涉及到更高级的图像处理功能时,比如特征检测、图像滤波等,OpenCV库则显得更为合适。OpenCV支持多种编程语言,但其Python接口提供了易于使用的方法。例如,使用cv2.imread函数可以读取图像文件,然后可以利用cv2.imshow显示图像。对于图像的处理,OpenCV提供了大量的函数,例如cv2.GaussianBlur用于图像模糊,cv2.Canny用于边缘检测。 在进行图像处理后,我们经常需要将处理结果展示出来。结合PILOpenCV,可以实现图像的快速读取处理,然后通过OpenCV的cv2.imshow函数展示给用户。此外,如果需要更高级的可视化功能,如绘制直方图、3D图像等,可以结合使用Matplotlib库,它提供了丰富的绘图工具,如plt.imshow用于显示图像,并且可以与PILOpenCV库的数据结构兼容。 综上所述,通过结合PILOpenCV这两个库,我们可以从读取图像到处理再到显示,完成一个完整的图像处理流程。通过实践,你可以更好地理解图像处理的基本概念技巧,而《Python图像处理:PIL, OpenCV, NumPy与可视化工具》这本资料,将帮助你深入掌握这些技术,并在实际项目中加以应用。 参考资源链接:[Python图像处理:PIL, OpenCV, NumPy与可视化工具](https://wenku.youkuaiyun.com/doc/1dkox6n9p8?spm=1055.2569.3001.10343)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值