cv::Mat ing = cv::imread;这段代码中img的参数
时间: 2023-06-27 11:00:56 浏览: 102
代码中的参数应该是一个图像文件的路径,例如:
```
cv::Mat ing = cv::imread("path/to/image.jpg");
```
`cv::imread`函数是 OpenCV 中用于读取图像文件的函数,它可以读取多种格式的图像文件,例如JPEG、PNG、BMP等。在读取图像文件时,需要指定图像文件的路径,`cv::imread`函数将会返回一个 `cv::Mat` 类型的图像矩阵。
相关问题
Mat imgthreshold; Mat imgsrc = cv::imread("C:/Users/Dell/Pictures/Camera Roll/Yelan.jpg",0); imshow("imgsrc", imgsrc); threshold(imgsrc, imgthreshold,50, 110, THRESH_BINARY); imshow("imgthreshold", imgthreshold); vector<vector<Point>> contours; findContours(imgthreshold, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); cv::Mat imgdraw = imgsrc.clone(); drawContours(imgdraw, contours, -1, Scalar(0, 0, 255),1); imshow("imgdraw", imgdraw); waitKey(0);为什么输出的是白色边框
在这个问题中,你使用了灰度图像作为输入图像,然后使用阈值函数 threshold 对其进行二值化处理。在二值化过程中,所有低于阈值的像素都被设为 0,而高于阈值的像素都被设为 255。因此,输出的图像 imgthreshold 中只有两种颜色,即黑色和白色,没有其他颜色。在使用 drawContours 函数绘制边框时,你将颜色设置为红色 (0, 0, 255),但是由于图像中只有黑色和白色,所以绘制出来的边框是白色,而不是红色。
要输出红色边框,你需要在二值化后的图像上绘制轮廓,而不是在灰度图像上绘制轮廓。这可以通过将函数 findContours 的第一个参数设置为 imgthreshold 来实现。修改代码如下:
```c++
Mat imgthreshold;
Mat imgsrc = cv::imread("C:/Users/Dell/Pictures/Camera Roll/Yelan.jpg",0);
imshow("imgsrc", imgsrc);
threshold(imgsrc, imgthreshold,50, 110, THRESH_BINARY);
imshow("imgthreshold", imgthreshold);
vector<vector<Point>> contours;
findContours(imgthreshold, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
cv::Mat imgdraw = imgthreshold.clone(); // 修改这里
drawContours(imgdraw, contours, -1, Scalar(0, 0, 255), 1);
imshow("imgdraw", imgdraw);
waitKey(0);
```
cv::Mat imgthreshold; cv::Mat imgsrc = cv::imread("C:/Users/Dell/Pictures/Camera Roll/Yelan.jpg",0); cv::threshold(imgsrc, imgthreshold, 100, 255, THRESH_BINARY); vector<vector<Point>> contours; cv::findContours(imgthreshold, contours,cv::noArray(), RETR_LIST, CHAIN_APPROX_SIMPLE);为什么会在findContours这个函数触发断点
如果在调用 `cv::findContours()` 时程序触发了断点,可能是因为在调用该函数之前没有正确地对 `imgthreshold` 进行初始化,导致函数无法正常工作。请检查以下几个方面:
1. 确保图像文件已经成功读入并加载到 `imgsrc` 中。
2. 检查 `imgthreshold` 的大小和数据类型是否正确,可以使用 `cv::imshow()` 函数在窗口中显示图像来检查。
3. 检查 `threshold()` 函数是否成功将 `imgsrc` 转换为二值图像,并将其保存在 `imgthreshold` 中。可以使用 `cv::imshow()` 函数在窗口中显示二值图像来检查。
4. 检查是否正确传入了 `contours` 变量作为函数的输出参数。
如果以上步骤都没有问题,可以尝试使用调试器查看是哪一行代码触发了断点,以便更好地定位问题所在。
阅读全文