Обработка изображения в Labview с использованием DLL в C - PullRequest
0 голосов
/ 09 июля 2019

У меня есть изображение в Labview. Я хочу, чтобы это изображение использовалось в качестве входной информации в моей DLL на C, но я не знаю, как прочитать каждый пиксель для обработки изображения.Что я хочу сделать, это передать все изображение в 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;
}

1 Ответ

0 голосов
/ 10 июля 2019

Я бы попробовал это:

Измените 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;
}
...