在C中使用dll在Labview中处理图像

时间:2019-07-09 10:08:25

标签: c dll labview

我在Labview中有一个图像,我希望将此图像作为C中DLL的输入,但我不知道如何读取每个像素以处理该图像。我要做的是将整个图像传递到DLL。

我有一个群集,其中包含图像的像素指针,像素的大小和图像的大小。

block diagram image

这是我DLL中的函数。 a应包含像素[i][j]的蓝色值。

DLLIMPORT int funcImage(int *pixel_pointer, int line_width, int pixel_size, int x_resolution, int y_resolution)
{
int j;
int i;
unsigned char b;
unsigned char g;
unsigned char r;
int gray[1000][100];

for(j = 0;j < y_resolution;j++){
    for(i = 0;i < x_resolution;i++){
        b = pixel_pointer[3*i + x_resolution*j] ;
        g = pixel_pointer[3*i + 1 + x_resolution*j];
        r = pixel_pointer[3*i + 2 + x_resolution*j];
        //gray[i][j] = ((int)r)* 0.3 + ((int)g)* 0.58 + ((int)b)* 0.11;
    }
}
int a;
b = pixel_pointer[3*14*648 + 3*21 - 2];
a = (int)b;

return a;
}

2 个答案:

答案 0 :(得分:0)

我会尝试:

将int * pixel_pointer更改为unsigned char *,并使用线宽代替x_resolution来处理像素

DLLIMPORT int funcImage(unsigned char *pixel_pointer, int line_width, int pixel_size, int x_resolution, int y_resolution)
{
int j;
int i;
unsigned char b;
unsigned char g;
unsigned char r;
int gray[1000][100];

for(j = 0;j < y_resolution;j++){
    for(i = 0;i < x_resolution;i++){
        b = pixel_pointer[3*i + line_width*j] ;
        g = pixel_pointer[3*i + 1 + line_width*j];
        r = pixel_pointer[3*i + 2 + line_width*j];
        //gray[i][j] = ((int)r)* 0.3 + ((int)g)* 0.58 + ((int)b)* 0.11;
    }
}
int a;
b = pixel_pointer[3*14*648 + 3*21 - 2];
a = (int)b;

return a;
}

答案 1 :(得分:0)

首先,您必须创建dll包装器,还必须使用图像数组vi在dll中插入图像数据,您可以在labview中调用dll,很容易在网上搜索以找到方法