Этот код предназначен для 8-битных данных, чтобы сделать IplImage с серой шкалой.Как сделать OpenCV IplImage для 16-битных серых данных?
IplImage* img_gray_resize = NULL;
img_gray_resize = cvCreateImage(cvSize(320, 256), IPL_DEPTH_8U, 1);
DWORD dwCount;
LVDS_SetDataMode(0); // o for 8 bit mode and 1 for 16 bit mode
dwCount = (LONG)320 * (LONG)256;
unsigned char* m_pImage = NULL;
m_pImage = new unsigned char[320 * 256];
for (int i=0; i<320 * 256; i++) m_pImage[i] = NULL;
LVDS_GetFrame(&dwCount, m_pImage);
int width = 320;
int height = 256;
int nn = 0;
int ii = 0;
for (int y=0; y<height; y++)
{
for (int x=0; x<width; x++)
{
ii = y * width + x;
if(nn < (height*width))
img_gray_resize->imageData[ii] = m_pImage[nn++];
}
}
delete [] m_pImage;
Мне нужно отобразить 16-битное изображение шкалы серого. Если я отображу 8-битные данные, некоторая информация отсутствует на изображении. Однако LVDS_SetDataMode() может предоставлять оба типа данных. Я использую библиотеку для устройства захвата кадров. Пожалуйста, помогите мне.
Как я могу преобразовать 16-битные данные в 8-битные данные? Пожалуйста, дайте мне некоторую информацию. – IRFAN
1. вычислить егограмму с учетом 16-битного изображения 2. нормировать его на запрос и преобразовать в cdf 3. сопоставить индекс со значением cdf до 256 * cdf – michaeltang