Я принял ответ. Можете ли вы указать мне пример кода opencvsharp.
аюсь увеличить резкость изображения с помощью EmguCV
Image<Bgr, Byte> myImage = new Image<Bgr, Byte>(new Bitmap(pictureBox1.Image));
float[,] matrixKernel = new float[3, 3] {
{ 0,-1, 0 },
{-1, 5,-1 },
{ 0,-1, 0 }
};
ConvolutionKernelF matrix = new ConvolutionKernelF(matrixKernel);
Image<Bgr, float> result = myImage.Convolution(matrix);
Image<Bgr, Byte> BGRResult = result.ConvertScale<byte>(1, 0);
e.Result = BGRResult.ToBitmap();
myImage.Dispose();
result.Dispose();
BGRResult.Dispose();
Код отлично работает для изображений со средним разрешением, но при использовании изображений с высоким разрешением, например: 6000X4000. Выдается следующее исключение
Обратите внимание, что резкость работает отлично даже для изображений с высоким разрешением, когда проект установлен в AnyCPU -> Режим отладки. Я использую EmguCV 3.3
Обновить:
Согласно справочному ответу Рика, я сделал следующую модификацию, но проблема остается. Пожалуйста, совет.
float[,] matrixKernel = new float[3, 3] {
{ 0,-1, 0 },
{-1, 5,-1 },
{ 0,-1, 0 }
};
ConvolutionKernelF matrix = new ConvolutionKernelF(matrixKernel);
var result2 = myImage.CopyBlank();
var handle = GCHandle.Alloc(result2);
Image<Bgr, float> result = result2.Convolution(matrix);
Image<Bgr, Byte> BGRResult = result.ConvertScale<byte>(1, 0);
bm_dest = new Bitmap(BGRResult.ToBitmap());
handle.Free();
BGRResult.Dispose();
result.Dispose();
myImage.Dispose();
matrix.Dispose();