以下用于在图像中查找轮廓的代码不会产生任何编译错误。但是,在运行时我得到了错误
“在OpenCV imshow
文件中打开cv:断言失败(size.width> 0& size.height> 0)”。
我只使用imshow
函数尝试了代码,删除后面的所有代码,代码运行正常,因此文件位置似乎不是问题!
非常感谢任何帮助。 提前谢谢!
#include <opencv\cv.h>
#include <opencv2\highgui\highgui.hpp>
#include <opencv\cvaux.h>
#include <opencv\cxcore.h>
#include <opencv2\imgproc\imgproc.hpp>
#include <iostream>
#include <conio.h>
using namespace cv;
using namespace std;
int main() {
Mat img1;
Mat output;
Mat img = imread("blue.jpg");
cvtColor(img, img1, CV_BGR2GRAY);
threshold(img1, output, 176, 255, CV_THRESH_BINARY);
imshow("hi", output);
vector<vector<Point>> Contours;
vector<Vec4i> hier;
Mat final;
findContours(img1, Contours, hier, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
for (int i = 0; i < Contours.size(); i++)
{
drawContours(final, Contours, i, Scalar(0, 255, 0), 1, 8, hier);
}
imshow("result", final);
waitKey();
}
答案 0 :(得分:2)
您正在此处绘制一个非初始化矩阵(final
):
Mat final;
....
drawContours(final, Contours, i, Scalar(0, 255, 0), 1, 8, hier);
您应首先初始化final
,例如:
Mat final = img.clone();