我想将矩阵中的特定行和列范围分配给1,并将矩阵与将图像与掩码相乘的原始图像进行多重化。在matlab中我使用了以下代码
texture_mask= zeros(size(d_mask, 1), size(d_mask,2));
texture_mask(troi(1)-troi(3):troi(1)+troi(3),troi(2)-troi(3):troi(2)+troi(3))=1;
im= im2double(im).*repmat(texture_mask, [1 1 3]);
im= im(troi(1)-troi(3):troi(1)+troi(3),troi(2)-troi(3):troi(2)+troi(3),:);
当我在opencv中使用以下代码尝试时,我在乘法中得到错误,可能是因为未正确分配texture_mask。
Mat texture_mask= Mat::zeros((dress_mask.rows),(dress_mask.cols),CV_64FC3); texture_mask.rowRange(troi[0]-troi[2],troi[0]+troi[2]).colRange(troi[1]-troi[2],troi[1]+troi[2])=1;
img.convertTo(img,CV_64FC3);
img= img*texture_mask;//Getting an error here
img=img.rowRange(troi[0]-troi[2],troi[0]+troi[2]).colRange(troi[1]-troi[2],troi[1]+troi[2]);
在进行乘法后,我必须裁剪图像。如上所示。代码出了什么问题?