mirror of
https://github.com/opencv/opencv.git
synced 2025-06-12 20:42:53 +08:00
imgcodecs: add check image.empty() in imwrite()/imencode()
This commit is contained in:
parent
eabbe38001
commit
ad2854c8b3
@ -824,6 +824,7 @@ bool TiffEncoder::writeLibTiff( const std::vector<Mat>& img_vec, const std::vect
|
|||||||
for (size_t page = 0; page < img_vec.size(); page++)
|
for (size_t page = 0; page < img_vec.size(); page++)
|
||||||
{
|
{
|
||||||
const Mat& img = img_vec[page];
|
const Mat& img = img_vec[page];
|
||||||
|
CV_Assert(!img.empty());
|
||||||
int channels = img.channels();
|
int channels = img.channels();
|
||||||
int width = img.cols, height = img.rows;
|
int width = img.cols, height = img.rows;
|
||||||
int type = img.type();
|
int type = img.type();
|
||||||
@ -883,6 +884,7 @@ bool TiffEncoder::writeLibTiff( const std::vector<Mat>& img_vec, const std::vect
|
|||||||
|
|
||||||
const int bitsPerByte = 8;
|
const int bitsPerByte = 8;
|
||||||
size_t fileStep = (width * channels * bitsPerChannel) / bitsPerByte;
|
size_t fileStep = (width * channels * bitsPerChannel) / bitsPerByte;
|
||||||
|
CV_Assert(fileStep > 0);
|
||||||
|
|
||||||
int rowsPerStrip = (int)((1 << 13) / fileStep);
|
int rowsPerStrip = (int)((1 << 13) / fileStep);
|
||||||
readParam(params, TIFFTAG_ROWSPERSTRIP, rowsPerStrip);
|
readParam(params, TIFFTAG_ROWSPERSTRIP, rowsPerStrip);
|
||||||
|
@ -689,6 +689,8 @@ static bool imwrite_( const String& filename, const std::vector<Mat>& img_vec,
|
|||||||
for (size_t page = 0; page < img_vec.size(); page++)
|
for (size_t page = 0; page < img_vec.size(); page++)
|
||||||
{
|
{
|
||||||
Mat image = img_vec[page];
|
Mat image = img_vec[page];
|
||||||
|
CV_Assert(!image.empty());
|
||||||
|
|
||||||
CV_Assert( image.channels() == 1 || image.channels() == 3 || image.channels() == 4 );
|
CV_Assert( image.channels() == 1 || image.channels() == 3 || image.channels() == 4 );
|
||||||
|
|
||||||
Mat temp;
|
Mat temp;
|
||||||
@ -735,6 +737,9 @@ bool imwrite( const String& filename, InputArray _img,
|
|||||||
const std::vector<int>& params )
|
const std::vector<int>& params )
|
||||||
{
|
{
|
||||||
CV_TRACE_FUNCTION();
|
CV_TRACE_FUNCTION();
|
||||||
|
|
||||||
|
CV_Assert(!_img.empty());
|
||||||
|
|
||||||
std::vector<Mat> img_vec;
|
std::vector<Mat> img_vec;
|
||||||
if (_img.isMatVector() || _img.isUMatVector())
|
if (_img.isMatVector() || _img.isUMatVector())
|
||||||
_img.getMatVector(img_vec);
|
_img.getMatVector(img_vec);
|
||||||
@ -919,6 +924,7 @@ bool imencode( const String& ext, InputArray _image,
|
|||||||
CV_TRACE_FUNCTION();
|
CV_TRACE_FUNCTION();
|
||||||
|
|
||||||
Mat image = _image.getMat();
|
Mat image = _image.getMat();
|
||||||
|
CV_Assert(!image.empty());
|
||||||
|
|
||||||
int channels = image.channels();
|
int channels = image.channels();
|
||||||
CV_Assert( channels == 1 || channels == 3 || channels == 4 );
|
CV_Assert( channels == 1 || channels == 3 || channels == 4 );
|
||||||
|
Loading…
Reference in New Issue
Block a user