I am new to Programming using Visual Studio and openCv. I wrote a simple program to display the red channel of an image, but every time i run the code it throws "DEBUG ASSERTION FAILED" error.
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main() {
Mat image;
image = imread("C:/Users/siddartha/Pictures/sample.jpg");
if (!image.data) {
cout << "Cannot load image";
return -1;
}
else {
if (image.channels() >= 3) {
vector<Mat> rgb;
split(image, rgb);
namedWindow("r");
imshow("r", rgb[0]);
}
}
while (1);
return 0;
}
Error:
Debug Assertion Failed!
Program: ...sual Studio 2015\Projects\sampleOpenCV\Debug\sampleOpenCV.exe
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line: 892
Expression: is_block_type_valid(header->_block_use)
Are you absolutely sure that the image has been loaded correctly?
I would think that it hasn't been loaded correctly and because of that the vector rgb
is empty and, in turn, the element rgb[0]
doesn't exist which triggers the exception ...
A couple of things I noted:
Use slashes ( /
) for include-statements not backslashes ( \\
), ie
#include <opencv2\\core.hpp> // Bad! #include <opencv2/core.hpp> // Good!
In your check
if (!image.data) { ... }
do not assume that image.data
is set to NULL
or nullptr
for empty images. Instead check
if (!image.empty()) { ... }
Make sure that calls to cv::imshow(...)
are followed by a call to cv::waitKey( /* delay in ms or 0 to wait for user input */ )
, cf. the note in the OpenCV reference .
while (1);
-- is that intentional? What you want is probably cv::waitKey( 0 )
(see 3.).
UPDATE:
Make sure the vector rgb
has been initialized to the number of channels, ie
vector<Mat> rgb(image.channels()); split(image, rgb); // ...
UPDATE 2:
Can you tell me what exactly the error meant ?
Three things:
std::vector<T>
creates an empty vector. cv::split()
expects the caller, ie you , to allocate data for the output. If you fail to do so, it's likely provoke a segmentation fault . it is compiling just fine for me. I am on visual-studio-2013.
here you have a case similar to yours, maybe it will help: debug-assertion-failed
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.