Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2017, 12:32   #11
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Судя по не кратному размеру это спутниковые снимки они многоканальные. И таки это стандартная практика вырезать один или 3 канала и пихать его в RAW, что уменьшает объём.
В качестве RAW, можно взять *.PPM либо *.BMP.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 03.11.2017, 12:34   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Так задача не так поставлена. ТС ни слова про слои и несколько не говорил. А так нафантазировать можно много чего.
p51x вне форума Ответить с цитированием
Старый 03.11.2017, 19:15   #13
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
В качестве RAW, можно взять
В качестве RAW можно взять все что угодно - это сферический формат... не имея описания формата разговор теряет смысл...
waleri вне форума Ответить с цитированием
Старый 04.11.2017, 09:30   #14
Melany95
Пользователь
 
Регистрация: 16.10.2017
Сообщений: 17
По умолчанию

нет,это не спутниковые снимки. Это снимки по томографии. Почему именно в raw теперь не знаю.,раньше думала что из за меньшего объема...Так просто звучало в указаниях к этому заданию.
Цитирую: "Для выполнения использовать фотографию Габора Хермена, которую нужно
использовать для моделирования одномерных проекций для случая
двухмерной томографии. Для этого с помощью Адобе Фотошопа нужно
превратить ее в однобайтовый или двухбайтовый фaйл типа *.raw.
В случае однобайтового файла его содержание нужно поместить в
двухмерный массив типа unsigned char, где значения элементов будут
лежать в диапазоне от нуля до 255. В случае двухбайтового файла
значения элементов массива будут иметь тип unsigned short и будут
лежать в диапазоне от нуля до 65535." Больше к сожалению ничего не известно...Вот нашла какой то пример кода , ну там код помещается в буфер,а надо в массив двумерный... запускает какую то чушь правда,может не читает картинки,по идее там матрица пикселей должна вывестись с числами.Каждый элемент будет отображать код цвета(яркости) в виде числа..И дана еще фотка формата tiff
Код:
#include "stdafx.h"
using namespace std;
/* fread example: read a complete file */
int main () {
FILE * pFile;//переменная pFile является указателем файла
long lSize;
unsigned char *buffer;//используется для объявления переменной buffer
size_t result;
pFile = fopen ("D:\\\C++\\gabor.raw" , "rb" );//мы передаем переменной pFile некоторую информацию,fopen – это функция в Си, которая используется для того, чтобы открыть файл
if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
// obtain file size:
fseek (pFile , 0 , SEEK_END);//ищет позицию файла.0 – смещение Ноль означает, что мы хотим начать запуск с начала.SEEK_END — отчитываем позицию до конца файла
lSize = ftell (pFile);//сохраняем возвращаемое значение ftell() в lSize.
rewind (pFile);//функция перемотки заново открывает файл с начала. Она имеет только один аргумент, указатель на начало файла. Таким образом, файл запущен для повторного использования.
// выделяю память для файла
buffer = (unsigned char*) malloc (sizeof(unsigned char)*lSize);
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
// copy the file into the buffer:
result = fread (buffer,1,lSize,pFile);//считывание блока данных из файла в буфер обмена
if (result != lSize) {fputs ("Reading error",stderr); exit (3);}
/* the whole file is now loaded in the memory buffer. */
// terminate
fclose (pFile);//брасывает любые буферы, сохраняемые для данного файла, и закрывает файл
cout«buffer; //Выводим значение на экран 
free (buffer);
cin.get();
}

Последний раз редактировалось Melany95; 04.11.2017 в 09:46.
Melany95 вне форума Ответить с цитированием
Старый 04.11.2017, 09:55   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ваш код и делает "динамический массив в С стиле". Так делайте как сказано фотошопом, а не парсите сами. И делается это не для уменьшения размера, а для упрощения работы - не надо парсить формат/расжимать и т.д.
p51x вне форума Ответить с цитированием
Старый 04.11.2017, 10:06   #16
Melany95
Пользователь
 
Регистрация: 16.10.2017
Сообщений: 17
По умолчанию

Так я из файла tif в фотошопе сделала raw...Потом запустила код с преобразованным файлом... и вот что оно выводит..
Изображения
Тип файла: png скрин.png (37.0 Кб, 147 просмотров)
Melany95 вне форума Ответить с цитированием
Старый 04.11.2017, 10:14   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

ну так похоже выводит. Или вы путает число 1 и строку "1", ожидали в выводе увидеть 2 3 45 1 ?
p51x вне форума Ответить с цитированием
Старый 04.11.2017, 10:19   #18
Melany95
Пользователь
 
Регистрация: 16.10.2017
Сообщений: 17
По умолчанию

Да,наверное путаю...Ожидала увидеть цифры

Последний раз редактировалось Melany95; 04.11.2017 в 10:51.
Melany95 вне форума Ответить с цитированием
Старый 04.11.2017, 10:52   #19
Melany95
Пользователь
 
Регистрация: 16.10.2017
Сообщений: 17
По умолчанию

Но все же мне нужен двумерный массив,ведь необходимо знать число строк и столбцов хотя бы чтоб с ним работать.А тут вроде одномерный..
Melany95 вне форума Ответить с цитированием
Старый 04.11.2017, 11:10   #20
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну так сделайте двумерный... в чем проблема? Вот у вас 100 кубиков, а вам надо сделать 2 ряда по 50, что делать?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа которая открывает файлы формата bmp и выводит содержимое файла на экран. zhenia312 Помощь студентам 1 13.06.2014 16:11
как поместить всё содержимое файла txt в listbox на visual C++ Valuh Помощь студентам 1 02.03.2012 00:11
как обработать двумерный массив из файла _LEX_ Помощь студентам 6 02.01.2012 18:56
Двумерный массив. Найти среднее арифметическое каждой строки и поместить на место наибольшего (Паскаль) Золушка Паскаль, Turbo Pascal, PascalABC.NET 4 13.04.2011 13:33
Декодирование 48 битного RAW формата Rezet Мультимедиа в Delphi 5 23.01.2009 18:21