Форум сайта python.su
вообщем есть такой код на питоне
где сверху приходит бинарная строка img_str, потом с помощью PIL
img = Image.fromstring(“L”, (size, size), img_str)
img.save('test_image.png')
fd= open(“test.dat”,'wb')"))
fd.write(img_str)
fd.close()
>>> import Image
>>> fd=open(“C:/test.dat”,'rb')
>>> s=fd.read()
>>> len(s)/512
512
>>> im=Image.fromstring(“L”,(512,512),s)
>>> im.show()
const char *filename = "C:/test.dat"; ifstream infile(filename, fstream::in/*,fstream::binary*/); //картинка у нас одноканальная заданного размера infile.seekg(0,ios::end); int file_size=infile.tellg(); infile.seekg(0,ios::beg); std::vector<unsigned char> data(file_size, 0); infile.read(reinterpret_cast<char*>(&data[0]), file_size); cv::Mat img(data); int c= img.channels(); cv::Mat r= img.reshape(0,512); imwrite("C:/test.png",r);
Офлайн
std::ifstream infile(filename, std::ios::binary);
Отредактировано py.user.next (Июнь 26, 2012 02:39:53)
Офлайн
ага, так всё ок, только я не понимаю почему?
Отредактировано mrgloom (Июнь 26, 2012 08:42:42)
Офлайн
в текстовом режиме над символами потока могут проводится преобразования, которые не влияют на текст
Офлайн
py.user.next, ты еще помнишь С++? Приятно. Я лет пять его не применял :(
Офлайн
в C++ слишком большой стандарт, да и смысл его изучать
а C изучаю постоянно, чередую с питоном и теорией программирования
Офлайн
мне кажется так будет лучше.
std::ifstream infile(filename, std::ios::binary|std::ios::in);
Офлайн
ifstream - уже поток ввода
Офлайн
std::ifstream infile(filename,std::ios::in,std::ios::binary);
Офлайн
mrgloom
дело было в том компилятор съел и так, а я не заметил что через запятую.
std::ifstream infile(filename, std::ios::in, std::ios::binary);
[guest@localhost tests]$ g++ t.cpp -o t
t.cpp: В функции ‘int main()’:
t.cpp:11:66: ошибка: нет подходящей функции для вызова ‘std::basic_ifstream<char>::basic_ifstream(const char*&, const std::ios_base::openmode&, const std::ios_base::openmode&)’
/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../../include/c++/4.5.1/fstream:455:7: замечание: претенденты: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::ios_base::openmode) [with _CharT = char, _Traits = std::char_traits<char>, std::ios_base::openmode = std::_Ios_Openmode]
/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../../include/c++/4.5.1/fstream:441:7: замечание: std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char, _Traits = std::char_traits<char>]
/usr/lib/gcc/i686-redhat-linux/4.5.1/../../../../include/c++/4.5.1/iosfwd:111:11: замечание: std::basic_ifstream<char>::basic_ifstream(const std::basic_ifstream<char>&)
[guest@localhost tests]$
Отредактировано py.user.next (Июнь 28, 2012 11:39:18)
Офлайн