c# OpenCV cv2.resize
时间: 2023-12-21 17:30:58 浏览: 169
以下是使用c# OpenCV中的cv2.resize函数进行图像缩放的示例代码:
```csharp
using OpenCvSharp;
using System;
class Program
{
static void Main()
{
Mat img = Cv2.ImRead("lena.png");
Console.WriteLine(img.Size());
int cols = img.Cols;
int rows = img.Rows;
Size size = new Size((int)(cols * 0.9), (int)(rows * 0.5));
Mat rst = new Mat();
Cv2.Resize(img, rst, size);
Console.WriteLine("img.Size=" + img.Size());
Console.WriteLine("rst.Size=" + rst.Size());
Cv2.ImShow("img", img);
Cv2.ImShow("rst", rst);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
```
相关问题
C# opencv
C#使用OpenCV的一些代码如下:
1. 需要加头文件
```csharp
using OpenCvSharp;
```
2. 读取图片
```csharp
Mat img1 = new Mat("F:\\all_truck\\truck_3.jpg", ImreadModes.Color);
Cv2.ImShow("win1", img1);
Cv2.WaitKey(0);
```
3. 定义一个没有初始化的图片作为复制
```csharp
Mat pBkImage_copy = new Mat();
pBkImage.CopyTo(pBkImage_copy);
```
4. 灰度化
```csharp
Cv2.CvtColor(img1, img1, ColorConversionCodes.BGR2GRAY);
```
5. 高斯模糊和size数据格式的定义
```csharp
Size ksize = new Size(5, 5);
Cv2.GaussianBlur(img1, img1, ksize, 0);
```
6. 二值化
```csharp
Cv2.Threshold(img1, img1, 128, 255, ThresholdTypes.Binary);
```
7. 开闭运算
```csharp
Mat kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(3, 3));
Cv2.MorphologyEx(img1, img1, MorphTypes.Open, kernel);
```
8. FindContours查找轮廓和contours参数的定义和操作
```csharp
Point[][] contours;
HierarchyIndex[] hierarchy;
Cv2.FindContours(img1, out contours, out hierarchy, RetrievalModes.External, ContourApproximationModes.ApproxSimple);
```
9. Rect和Size格式的定义
```csharp
Rect rect = Cv2.BoundingRect(contours[0]);
Size size = new Size(rect.Width, rect.Height);
```
10. resize函数在图片上画矩形框在图片上画直线
```csharp
Cv2.Rectangle(img1, rect, Scalar.Red, 2);
Cv2.Line(img1, new Point(0, 0), new Point(img1.Width, img1.Height), Scalar.Blue, 2);
```
C#opencv 遮罩层放大
在C#中使用OpenCV处理图像时,如果你想对遮罩层进行放大操作,可以按照以下几个步骤:
1. **加载原始图像和掩码**:
使用`cv2.imread()`函数分别加载你的源图像和掩码图像。掩码通常是二值化的,表示需要放大的部分为白色(非零),其他地方为黑色(零)。
2. **图像预处理**:
可能需要对掩码进行一些预处理,比如缩放,以确保它与源图像的比例匹配。如果比例不同,可以使用`cv2.resize()`函数调整掩码尺寸。
3. **创建放大后的掩码**:
将缩放后的掩码与源图像的大小相匹配,例如,使用`MatOfByte.Create`创建一个新的`byte`类型的Mat对象,然后设置对应位置的像素值为1(白色)或0(黑色)。
4. **按位与操作**:
使用`bitwise_and()`函数,将放大后的掩码和源图像按位与运算,这样只有源图像中与掩码对应的区域会被保留。
```csharp
// 假设src是源图像,mask是掩码(已经调整过大小)
Mat resizedMask = new Mat();
double[] scaleParams = { factorX, factorY };
Size newSize = new Size(src.Rows * scaleParams, src.Cols * scaleParams);
resize(mask, resizedMask, newSize);
Mat output = new Mat(src.Size(), src.Type());
cv2.bitwise_and(src, src, output, resizedMask);
// output就是放大了的源图像,只保留了掩码区域
```
5. **结果保存**:
最后,可以使用`cv2.imwrite()`函数将处理后的图像保存到文件。
阅读全文