我在Labview中有一个图像,我希望将此图像作为C中DLL的输入,但我不知道如何读取每个像素以处理该图像。我要做的是将整个图像传递到DLL。
我有一个群集,其中包含图像的像素指针,像素的大小和图像的大小。
这是我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;
}
答案 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,很容易在网上搜索以找到方法