Я новичок в этом. Я пытаюсь создать функцию, которая эквивалентна функции гистограммы изображения. Я использую приложение форм Windows для отображения гистограммы (и загрузки изображения) и CUDA/C++ для создания гистограммы. Я с самого начала упоминаю, что я НЕ использую openCV, glut, OpenGL или любую другую третью библиотеку. Выполнение ... Я пытаюсь передать растровое изображение в неуправляемую библиотеку C++. Проблема здесь в том, что я не сейчас, как ссылаться на это растровое изображение в коде C++. (И даже, как получить RGB из него). Отрывки кода:Загрузить изображение из указателя в CUDA с экспортом dll
C#:
private void calculateHistogram(object sender, EventArgs e)
{
Bitmap bmp = (Bitmap)pictureBox1.Image;
unsafe {
int** matrixAcumulated;
var date = bmp.LockBits(new Rectangle(0, 0, pictureBox1.Width, pictureBox1.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
matrixAcumulated=NativeMethods.GenerateHistogram(date.Scan0, pictureBox1.Width);
bmp.UnlockBits(date);
// Write the string to a file.
System.Console.WriteLine(matrixAcumulated[0][0]);
}
}
Dll импорта:
using System;
using System.Runtime.InteropServices;
namespace HistogramProcessingCs
{
class NativeMethods
{
[DllImport("HistogramProcessingCpp.dll", CallingConvention = CallingConvention.StdCall)]
public static extern unsafe int** GenerateHistogram(IntPtr bmp, int dimensionImage);
}
}
C++:
extern "C" __declspec(dllexport) int** __stdcall GenerateHistogram(unsigned char *bmp, int dimensionImage)
{
//How to refere the bitmap from the bmp pointer?
//dimensionImage is Width = Height
}
Я копаю в этом –
Надеюсь, мой ответ поможет людям! :)! Спасибо за этот вопрос. Теперь я знаю, как делать C++ с помощью C#: D –