OpenCVsharp4 以最大分辨率保存图像
OpenCVsharp4 save Image at max resolution
我正在使用 shimat 的 Opencvsharp 构建应用程序。代码只是打开相机,保存图像并使用下面的代码关闭它。
using OpenCvSharp;
VideoCapture capture;
Mat frame;
private void btn_Camera_Click(object sender, EventArgs e)
{
capture = new VideoCapture();
frame = new Mat();
capture.Open(1);
capture.Read(frame);
if (capture.Read(frame))
{
frame.SaveImage("@test.jpg");
}
capture.Release();
}
然而,图片以 640x480 分辨率保存,而相机能够拍摄 1280x720 分辨率的图片。
我尝试设置 VideoCapture
属性,如下所示
capture.Set(VideoCaptureProperties.FrameHeight, 720);
capture.Set(VideoCaptureProperties.FrameWidth, 1280);
但保存的图像仍然是 480p 分辨率。有没有办法以 720p 分辨率保存它,就像默认的 windows 相机应用程序一样。
此外,我不想将其保存为 480p,然后将其调整为 720p,因为这无助于获取需要捕获的细节。
我知道在 opencv 中 Python 它是可能的。我正在使用 Opencvsharp4
在 C# 中寻找类似的东西
通过 OpenCvSharp 捕获时,640x480 是默认分辨率。
您必须在打开设备之前设置所需的分辨率(这在您抓取帧时隐式完成)例如:
int frameWidth = 1280;
int frameHeight = 720;
int cameraDeviceId = 1;
var videoCapture = VideoCapture.FromCamera(cameraDeviceId);
if (!videoCapture.Set(VideoCaptureProperties.FrameWidth, frameWidth))
{
logger.LogWarning($"Failed to set FrameWidth to {frameWidth}");
}
if (!videoCapture.Set(VideoCaptureProperties.FrameHeight, frameHeight))
{
logger.LogWarning($"Failed to set FrameHeight to {frameHeight}");
}
using (videoCapture)
{
videoCapture.Grab();
var image = videoCapture.RetrieveMat();
logger.LogInformation($"Image size [{image.Width} x {image.Height}]");
}
我正在使用 shimat 的 Opencvsharp 构建应用程序。代码只是打开相机,保存图像并使用下面的代码关闭它。
using OpenCvSharp;
VideoCapture capture;
Mat frame;
private void btn_Camera_Click(object sender, EventArgs e)
{
capture = new VideoCapture();
frame = new Mat();
capture.Open(1);
capture.Read(frame);
if (capture.Read(frame))
{
frame.SaveImage("@test.jpg");
}
capture.Release();
}
然而,图片以 640x480 分辨率保存,而相机能够拍摄 1280x720 分辨率的图片。
我尝试设置 VideoCapture
属性,如下所示
capture.Set(VideoCaptureProperties.FrameHeight, 720);
capture.Set(VideoCaptureProperties.FrameWidth, 1280);
但保存的图像仍然是 480p 分辨率。有没有办法以 720p 分辨率保存它,就像默认的 windows 相机应用程序一样。
此外,我不想将其保存为 480p,然后将其调整为 720p,因为这无助于获取需要捕获的细节。
我知道在 opencv 中 Python 它是可能的。我正在使用 Opencvsharp4
在 C# 中寻找类似的东西通过 OpenCvSharp 捕获时,640x480 是默认分辨率。
您必须在打开设备之前设置所需的分辨率(这在您抓取帧时隐式完成)例如:
int frameWidth = 1280;
int frameHeight = 720;
int cameraDeviceId = 1;
var videoCapture = VideoCapture.FromCamera(cameraDeviceId);
if (!videoCapture.Set(VideoCaptureProperties.FrameWidth, frameWidth))
{
logger.LogWarning($"Failed to set FrameWidth to {frameWidth}");
}
if (!videoCapture.Set(VideoCaptureProperties.FrameHeight, frameHeight))
{
logger.LogWarning($"Failed to set FrameHeight to {frameHeight}");
}
using (videoCapture)
{
videoCapture.Grab();
var image = videoCapture.RetrieveMat();
logger.LogInformation($"Image size [{image.Width} x {image.Height}]");
}