OpenCV GLib-GObject-CRITICAL **:g_object_unref:断言'G_IS_OBJECT(对象)'失败

时间:2015-10-09 01:10:41

标签: c++ opencv

我正在使用OpenCV和MPI来编辑图像(这是一个类)我将图像分成n个片段,每个片段将被发送到核心进行处理,图像将在稍后重新组合。到目前为止,我正试图分解并重新构图,我得到了这个错误

image_descriptor id;    
                id.process_type = processingType;
                id.work_row_start = 0;
                id.work_row_stop = localcount[irank] - 1;
                id.cols = image.cols;
                id.rows = localcount[irank];
                imageCells[irank] = id;
                y += localcount[irank];

                std::vector<byte> img = matToBytes( image(cv::Rect(x, localstart[irank], image.cols, localcount[irank])) );

                cv::Mat reconImg = bytesToMat(img, image.cols, localcount[irank]);

                cout << reconImg.rows << "x" << reconImg.cols << endl;

                std::stringstream ss;

                ss << irank;

                cv::namedWindow("Original Image" + ss.str(), cv::WINDOW_AUTOSIZE );
                cv::imshow("Image" ,reconImg);
                cvWaitKey(1000);

然后我看到图像的n个部分中的第一部分和许多黑色方块弹出。

我的主要循环包括

localstart

我的图片720x601 localstop的位置为0,180,360,540和localcount加上image(cv::Rect(x, localstart[irank], image.cols, localcount[irank])) ,总是180(在这种情况下)。

如果我只是使用

    std::vector<byte> matToBytes(cv::Mat image)
{
    int size = image.total() * image.elemSize();
    std::vector<byte> img_bytes(size);
    std::memcpy(img_bytes.data(),image.data,size * sizeof(byte));
    return img_bytes;
}

cv::Mat bytesToMat(vector<byte> bytes,int width,int height)
{
    cv::Mat image = cv::Mat(height,width,CV_8UC3,bytes.data()).clone();
    return image;
}

我的图像被很好地分成4个偶数部分,只有当我尝试将其转换为字节向量并且返回时才会出现错误。

我的转换方法如下:

int mygetchar(void)
{
        static char buf[BUFSIZ];
        static char *bufp = buf;
        static int i = 0;

        if (i == 0)
        {
                i = read(0, buf, 1);
                bufp = buf;
        }
        if ( --i >= 0 )
        {
                return  *bufp++;
        }

        return EOF;
}

通过对我的转换方法进行这些更改,我的图像被正确分割和重建,但我仍然会遇到这种奇怪的错误。

0 个答案:

没有答案