Я получил ошибку слияния для канала take rgb изображений

#python #c #opencv #image-processing

Вопрос:

Я пытаюсь изменить Python на C .

Вот моя первая переменная, определенная следующим образом:

 x = np.ones((h,w,4),dtype=np.uint8)*255  

Я хочу уравнять третий канал с другой переменной, подобной этой:

 x[:,:,3] = y  

Я использую OpenCV. Я немного закодировал на C вот так:

 cv::Mat x; x = cv::Mat::ones(cv::Size(h, w), CV_32FC1)*255; cv::Mat channel[3]; cv::split(x, channel); channel[0] = cv::Mat::zeros(x.rows, x.cols, CV_32FC1); cv::merge(channel,3,x);  

Я получил эту ошибку при запуске кода: merge.dispatch.cpp:129: ошибка: (-215:Утверждение не выполнено) mv[i].размер == mv[0].размер amp;amp; mv[i].глубина() == глубина в функции «слияние»

Как я могу это исправить?

Комментарии:

1. Измените тип x на 3 канала, CV_32FC3 .

2. Заменить x = cv::Mat::ones(cv::Size(h, w), CV_32FC1)*255; на x = cv::Mat::zeros(cv::Size(h, w), CV_32FC3) cv::Scalar(255.0f, 255.0f, 255.0f); .