opencv :: mixchannels分段错误

时间:2015-06-09 10:02:04

标签: c++ opencv segmentation-fault

我想创建一个包含4个通道的图像,图像输出是RGB图像和灰度图像的混合, 我用C ++开发了这段代码:

public void UploadUserImage(byte[] arr, int userId)
    {
        Stream stream = new MemoryStream();
        stream.Write(arr, 0, arr.Length);
        using (var dataManager = factory.GetDataManager())
        {
            var userRepository = dataManager.GetRepository<IUserRepository>();
            var user = GetByID(userId);
            user.PhotoURI =
                        storageFactory.CreateFileStorageSender()
                            .Send(storageConfig.UsersPhotoPath, user.Id.ToString(), stream);
            user.PhotoSize = stream.Length;

            userRepository.Save(user);
            dataManager.Commit();
        }
    }

问题在于&#34;分段错误&#34;

使用ReadImageToCVMat就是这样的函数:

 cv::Mat cv_img ( height, width, CV_8UC4 heredcv::Scalar(1,2,3,4) );
 cv::Mat cv_img_rgb = ReadImageToCVMat(filename_rgb, height, width, is_color);
 cv::Mat cv_img_gray = ReadImageToCVMat(filename_gray, height, width, !is_color);
 cv::Mat out[] = { cv_img_rgb, cv_img_gray };
 int from_to[] = { 0,0, 1,1, 2,2, 3,3 };
 cv::mixChannels( &cv_img, 1, out, 2, from_to, 4); 

1 个答案:

答案 0 :(得分:0)

看起来好像你混淆了cv::mixChannels的论点。假设cv_img是您的目标缓冲区,它应该是这样的:

cv::Mat src[] = { cv_img_rgb, cv_img_gray };
int from_to[] = { 0,0, 1,1, 2,2, 3,3 };
cv::mixChannels( src, 2, &cv_img, 1, from_to, 4);