c++ - 将行复制到矩阵导致 OpenCV 崩溃 - Visual Studio 2010 C++

标签 c++ opencv

我正在尝试将某些行从 src 图像复制到名为 gaps 的新图像。间隙图像将仅包含几行。然而,程序在带有 copyTo 的行崩溃。 Mat src 图像是正确的,它包含我的图像,因为我可以通过 imshow() 查看它。

Mat gaps;
int gap = 6;
for (int r = 0; r < src.rows; r++)
{
    if ( r % gap == 0 )
        src.row(r).copyTo(gaps.row(r));
    }
imshow("gaps", gaps);
waitKey(0);

我在 Windows XP 上使用 OpenCV、Visual Studio 2010 C++。

我试着添加这个: gaps.create(CV_8UC3, 2056,2056); 指定深度和尺寸,但它仍然崩溃。

最佳答案

试试这个:

// if you want your background to be black --> Scalar(0,0,0)
Mat gaps = Mat(src.size(), src.type(), Scalar(0,0,0));

这就是你会得到的,我不知道这是否是你所期望/想要的。

enter image description here


代码

// set your input image
Mat src = imread("{path to input image}");

// your code with the change I proposed
Mat gaps = Mat(src.size(), src.type(), Scalar(0,0,0));
int gap = 6;
for (int r = 0; r < src.rows; r++) {
    if ( r % gap == 0 )
        src.row(r).copyTo(gaps.row(r));
}
imshow("gaps", gaps);

// create the result image
Mat result = Mat(Size(src.cols * 2, src.rows), src.type(), Scalar(0,0,0));
src.copyTo(result(Rect(0,0,src.cols,src.rows)));
gaps.copyTo(result(Rect(src.cols,0,src.cols,src.rows)));
imshow("result", result);
waitKey();

关于c++ - 将行复制到矩阵导致 OpenCV 崩溃 - Visual Studio 2010 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018580/

相关文章:

c++ - 如何将权限从一个主要用户 token 复制到另一个主要用户 token ?

image - 透视变换四边形平面中的给定点(x,y)到矩形平面的点(x',y')?

opencv - 给定点的世界坐标(在二维图像平面位置和深度值中),我该如何导出?

c++ - 具有循环依赖性的 CRTP

c++ - 使用 OpenCV C++ 接口(interface),我是否需要释放使用 VideoCapture(int 设备?)

c++ - 质量差,在 qt4 中渲染来自相机的图像时

c++ - 对 cv::inpaint 的 undefined reference - 错误 1

c++ - 如何使用QSqlQueryModel处理海量数据?

c++ - 有没有办法在 C++ 的枚举中存储静态指针地址

c++ - 尝试在 Visual Studio 2010 中编译 Tessnet2 (Visual Studio 2008 C++) 项目