Библиотека Opencv, получить данные без заголовка ?
привет друзья
Я начинаю работать с opencv с помощью программирования на языке Си
- во-первых, я конвертирую изображение формата greyscale pgm в двоичный черно-белый
-я хочу получить только данные изображения без заголовка? без изменения свойств изображения
-если у opencv есть функция для этого, то это хорошо ;
но если у него этого нет, то я думаю использовать 2 буфера один для заголовка и 2 для данных после того, как я сохраню каждый из них для файла (файл из заголовка и один для данных)
но probem здесь после того, как я могу вернуться к исходному изображению (это означает, что когда у меня есть файл для данных и файл для данных, как я могу additionnel быть, я могу снова открыть изображение)
nota: код предназначен только для того, как я конвертирую изображение в формате оттенков серого в двоичный файл, который я буду после обновления читать на данных
Что я уже пробовал:
#include "stdafx.h" #include <iostream> #include <opencv\cv.h> #include <opencv\highgui.h> #include <stdio.h> #include</iostream> int _tmain(int argc, _TCHAR* argv[]) { //load image IplImage* im_gray = cvLoadImage("lena512.pgm",CV_LOAD_IMAGE_GRAYSCALE); //convert to grey //convert to binary IplImage* im_bw = cvCreateImage(cvGetSize(im_gray),IPL_DEPTH_8U,1); cvThreshold(im_gray, im_bw, 128, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); //save to disk cvSaveImage("image_bw.pbm",im_bw);
yagami_md
вы можете показать Заголовок изображения и данные здесь :
// show_pixel_image.cpp : определяет точку входа для консольного приложения.
//
код #include "файл stdafx.ч"
#include < stdio.h>
#include & lt;string>
#включить & lt;conio. h>
пустота Функ()
{
Файл * pFile=fopen ("image_bw.pbm", " rb");
int c;
//int a=0;
делать {
c = fgetc (pFile);
printf ("int -- %d \n", c);
//printf ("int -- %d", a);
//ля++;
} while (c != EOF);
//Е ("А ===%Д",а);
fclose(pFile);
}
инт имя _tmain(АГДС, функций _tchar* argv в[])
{
функция();
геч();
}
yagami_md
что мне нужно сделать для сохранения только заголовка и только данных с помощью этого программирования?
// image_to_buffer.cpp : определяет точку входа для консольного приложения.
//
код #include "файл stdafx.ч"
#include < stdio.h>
#include <stdlib.h>
#включить & lt;conio. h>
инт имя _tmain(АГДС, функций _tchar* argv в[])
{
Файл * pFile;
long lSize;
char * буфер;
реализация результатов;
pFile = fopen ("image_bw.pbm", " r+b" );
if (pFile==NULL) {fputs ("File error", stderr); exit (1);}
/*char c;
делать {
c = fgetc (pFile);
printf ("%c", c);
} while (c != EOF);*/
// получение размера файла:
fseek (pFile, 0, SEEK_END);
lSize = ftell (pFile);
перемотка назад (pFile);
// выделите память для хранения всего файла:
buffer = (char*) malloc (sizeof(char)*lSize);
if (buffer == NULL) {fputs ("ошибка памяти", stderr); exit (2);}
// скопируйте файл в буфер:
результат = fread (buffer, 1,lSize,pFile);
if (result != lSize) {fputs ("ошибка чтения", stderr); exit (3);}
/* теперь весь файл загружается в буфер памяти. */
// прекратить
int i=0;
while (i < lSize)
{
printf ("%02X", (int)буфер[i]);
я++;
}
fclose (pFile);
свободный (буфер);
геч();
}
yagami_md
ответьте пожалуйста