C#使用OpenCv图像批处理并改变图片大小并且重命名
作者:_冉冉 发布时间:2023-12-20 11:10:29
标签:C#,OpenCv,批处理
添加NuGet包
选择最新版就好了
安装完成后右键项目重新生成方案
使用OpenCvSharp.CPlusPlus命名空间
using OpenCvSharp.CPlusPlus;
写一个函数用来改变图片大小并且重新命名
read_path是存储图片的文件夹的路径,write_path是改变后图片存储的文件夹路径,filename是图片重命名,width和height分别为图片修改后的宽和高
public static void ResizeImg(String read_path,String write_path,String filename,double width,double height) {
Mat img1 = new Mat(read_path);
Mat img2 = img1;
OpenCvSharp.CPlusPlus.Size size = new OpenCvSharp.CPlusPlus.Size(width, height);
Cv2.Resize(img1, img2, size, 0, 0);
Cv2.ImWrite(write_path+"\\"+ filename, img2);
}
在Main函数中使用该函数
static void Main(string[] args)
{
string dir_path = @"G:\TestImg";//读取路径
String write_path = "G:\\TestImg2";//存储路径
String[] filenames=Directory.GetFiles(dir_path);
for (int i = 0; i < filenames.Length; i++) {
ResizeImg(filenames[i], write_path, i + ".png", 200, 300);
}
Console.ReadKey();
}
运行结果
完整代码
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
using System.Runtime.InteropServices;
using System.IO;
namespace ResizeTest
{
class Program
{
static void Main(string[] args)
{
string dir_path = @"G:\TestImg";//读取路径
String write_path = "G:\\TestImg2";//存储路径
String[] filenames=Directory.GetFiles(dir_path);
for (int i = 0; i < filenames.Length; i++) {
ResizeImg(filenames[i], write_path, i + ".png", 200, 300);
}
Console.ReadKey();
}
public static void ResizeImg(String read_path,String write_path,String filename,double width,double height) {
Mat img1 = new Mat(read_path);
Mat img2 = img1;
OpenCvSharp.CPlusPlus.Size size = new OpenCvSharp.CPlusPlus.Size(width, height);
Cv2.Resize(img1, img2, size, 0, 0);
Cv2.ImWrite(write_path+"\\"+ filename, img2);
}
}
}
来源:https://blog.csdn.net/weixin_43356091/article/details/104174341


猜你喜欢
- 在Spring中有一个类CachingUserDetailsService实现了UserDetailsService接口,该类使用静态代理模
- Fragment的产生与介绍Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是
- SpringBoot自带Tomcat,所以我们的项目可以单独部署,不需要依赖Window、Linux系统中的服务器,所以打包出来的Jar包是
- 话不多说,请看代码:System.Math.Abs(float value);System.Math.Abs(decimal value);
- 介绍本篇主要介绍kafka的 * 和序列化器,序列化器是和数据在网络中的传输有关,数据在网络中的传输为字节流,所以生产者在发送时需要将其序列
- Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,是一种比较常用
- 前言dataGridView是常用的表格控件,实现分页的方式也有很多种,例如直接使用sql语言,配合存储方式,直接读取某一页的内容,大家如果
- 快速排序实现: namespace QuickSort { class QuickSort { public static void Sor
- Atomikos是一个为Java平台提供增值服务的并且开源类事务管理器,如果将事务统一注册到Atomikos中,则可以统一管理。常用于后台管
- 测试springboot项目出现Test Ignored今天在写springBoot项目运行测试类时出现了以下问题:Test ignored
- 对于QQ截图,肯定是早就有认识了,只是一直没有去认真观察这个操作的具体实现步骤。所以这里将自己的记忆中的步骤简单的写一下:习惯性用QQ或者T
- 在项目开发中,我们经常会遇到表中的字段名和表对应实体类的属性名称不一定都是完全相同的情况,下面小编给大家演示一下这种情况下的如何解决字段名与
- Java原生SPI面向接口编程+策略模式实现建立接口Robotpublic interface Robot { /
- 最近在搞一个购物车的功能,里面有一个批量删除的操作,采用的是ExpandableListView以及BaseExpandableListAd
- 本文为大家分享了CentOS 7下安装JDK8的详细步骤,供大家参考,具体内容如下一、下载JDK 至oracle官网下载,如图所示二、安装J
- 前言平时做一些统计数据,经常从数据库或者是从接口获取出来的数据,单位是跟业务需求不一致的。比如, 我们拿出来的 分, 实际上要是元又比如,我
- 嵌入式Servlet容器在Spring Boot中,默认支持的web容器有 Tomcat, Jetty, 和 Undertow1、原理分析那
- 在我们移动应用开发过程中,偶尔有可能会接到这种需求:1、在手机桌面创建一个窗口,类似于360的悬浮窗口,点击这个窗口可以响应(至于窗口拖动我
- 我们知道在编程时许多操作(如更新UI)需要在主线程中完成,而且,耗时操作(如网络连接)需要放在子线程中,否则会引起ANR。所以我们常使用Ha
- 一、概述Groovy is a multi-faceted language for the Java platform.Apache Gr