나는 이런 종류의 물건에 익숙하지 않습니다. 이미지의 히스토그램 함수에 해당하는 함수를 만들려고합니다. 히스토그램을 표시하고 이미지를로드하는 Windows 양식 응용 프로그램과 히스토그램을 작성하는 CUDA/C++을 사용하고 있습니다. OpenCV, glut, OpenGL 또는 다른 세 번째 라이브러리를 사용하지 않는다는 것을 처음부터 언급하고 있습니다. Carrying on ... 비 관리 C++ DLL에 비트 맵을 전달하려고합니다. 여기서 문제는 C++ 코드에서 해당 비트 맵을 참조하는 방법이 아니라는 것입니다. (그리고 RGB를 얻는 방법조차도). 코드의 조각 :dll 내보내기로 CUDA의 포인터에서 이미지로드
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++ : 나는 인터넷 검색을 stackoverflowing 2 시간 후에 뭔가를했다
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++로하는 법을 배웠습니다 : D –