Я хочу сохранить изображение, которое представляет собой последовательность из 300 изображений размером 256x256, используя OpenCV (то есть ширина: 300 * 256, высота: 256).
Я пытался сохранить, используя код ниже:
#include <string.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
int img_num = 300;
cv::Mat img = cv::imread( "256.jpg", cv::IMREAD_UNCHANGED );
if( img.empty() )
{
return -1;
}
cv::Mat img_big = cv::Mat::zeros(256,256*img_num,CV_8UC3);
for (int i = 0; i < img_num; i++)
{ img(cv::Rect(0,0,256,256)).copyTo(img_big(cv::Rect((i)*256,0,256,256)));
}
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(100);
imwrite("big.jpg",img_big,compression_params);
img_big.release();
img.release();
}
и скомпилировано с
g++ -std=gnu++0x -o saveOpenCV saveOpenCV.cpp `pkg-config --libs --cflags opencv`
Я ожидал, что результатом будет изображение размером 76800x256 (300 изображений размером 256x256 подряд), но выходное изображение размером всего 4,1 КБ, и его нельзя открыть. При изменении номера изображения на 200 или 250, результат в порядке. Я заметил, что если номер изображения больше 250, то проблема возникла.
Кто-нибудь может сказать мне, что не так, или попробовать мой код на компьютере и посмотреть, возникает ли такая же проблема?