cv::Size 断言失败
Assertion Failure with cv::Size
我是 OpenCV 的新手,在声明 Mat 实例时遇到了问题。
#include <opencv2\opencv.hpp>
int main(int argc, char *argv[]) {
cv::Mat before = cv::imread("./irene.jpg", CV_LOAD_IMAGE_COLOR);
cv::imshow("before", before);
cv::waitKey(0);
cv::Mat after(cv::Size(before.rows, before.cols), CV_8UC3);
for (int y = 0; y < before.rows; y++) {
for (int x = 0; x < before.cols; x++) {
after.at<cv::Vec3b>(y, x)[0] = before.at<cv::Vec3b>(y, x)[2];
after.at<cv::Vec3b>(y, x)[1] = before.at<cv::Vec3b>(y, x)[1];
after.at<cv::Vec3b>(y, x)[2] = before.at<cv::Vec3b>(y, x)[0];
}
}
cv::imshow("after", after);
cv::waitKey(0);
return 0;
}
只是一个改变图像颜色的简单代码。
问题是,当我尝试使用 cv::Size() 时,编译器 returns 断言失败 。它构建正常,但是当我尝试按任意键转到下一个代码时,它会出现异常。
编译器引用并放在控制台上的是:
OpenCV(3.4.3) Error: Assertion failed ((unsigned)(i1 *
DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())) in
cv::Mat::at, file
c:\opencv343\opencv\build\include\opencv2\core\mat.inl.hpp, line 1101
我确定异常是由于 Size() 结构而引发的,因为如果我更改 Size(before.rows, before.cols)到before.rows,before.cols,效果很好!
我不知道哪里出了问题,但所有教程都说我试过的代码没问题。
出现此异常是因为我在 Size() 中设置的宽度和高度顺序错误。
正确的顺序是 cv::Size(width(cols)_of_image, height(rows)_of_image)
对于许多教程来说这不是问题,因为它们通常使用方形尺寸的图像。
我是 OpenCV 的新手,在声明 Mat 实例时遇到了问题。
#include <opencv2\opencv.hpp>
int main(int argc, char *argv[]) {
cv::Mat before = cv::imread("./irene.jpg", CV_LOAD_IMAGE_COLOR);
cv::imshow("before", before);
cv::waitKey(0);
cv::Mat after(cv::Size(before.rows, before.cols), CV_8UC3);
for (int y = 0; y < before.rows; y++) {
for (int x = 0; x < before.cols; x++) {
after.at<cv::Vec3b>(y, x)[0] = before.at<cv::Vec3b>(y, x)[2];
after.at<cv::Vec3b>(y, x)[1] = before.at<cv::Vec3b>(y, x)[1];
after.at<cv::Vec3b>(y, x)[2] = before.at<cv::Vec3b>(y, x)[0];
}
}
cv::imshow("after", after);
cv::waitKey(0);
return 0;
}
只是一个改变图像颜色的简单代码。 问题是,当我尝试使用 cv::Size() 时,编译器 returns 断言失败 。它构建正常,但是当我尝试按任意键转到下一个代码时,它会出现异常。
编译器引用并放在控制台上的是:
OpenCV(3.4.3) Error: Assertion failed ((unsigned)(i1 * DataType<_Tp>::channels) < (unsigned)(size.p[1] * channels())) in cv::Mat::at, file c:\opencv343\opencv\build\include\opencv2\core\mat.inl.hpp, line 1101
我确定异常是由于 Size() 结构而引发的,因为如果我更改 Size(before.rows, before.cols)到before.rows,before.cols,效果很好!
我不知道哪里出了问题,但所有教程都说我试过的代码没问题。
出现此异常是因为我在 Size() 中设置的宽度和高度顺序错误。 正确的顺序是 cv::Size(width(cols)_of_image, height(rows)_of_image)
对于许多教程来说这不是问题,因为它们通常使用方形尺寸的图像。