Bir mex dosyasından matlab dosyama geri bir görüntü çıktı çalışıyorum, ancak matlab içinde açtığımda doğru değil. I new_img.at<int>(j, i)
içinde i
ve j
takas gibi mwSize yönünü değiştirme çalıştılargörüntüyü matlab'a geri döndürme Mex
mex dosya Withing çıkış görüntü doğrudur;
Mat image = imread(mxArrayToString(prhs[0]));
Mat new_img(H,W, image.type(), Scalar(0));
// some operations on new_img
imshow("gmm image", image); //shows the original image
imshow("gmm1 image", new_img); //shows the output image
waitKey(200); //both images are the same size as desired
mwSize nd = 2;
mwSize dims[] = {W, H};
plhs[0] = mxCreateNumericArray(nd, dims, mxUINT8_CLASS, mxREAL);
if(plhs == NULL) {
mexErrMsgTxt("Could not create mxArray.\n");
}
char* outMat = (char*) mxGetData(plhs[0]);
for (int i= 0; i < H; i++)
{
for (int j = 0; j < W; j++)
{
outMat[i +j*image.rows] = new_img.at<int>(j, i);
}
}
bu mat dosyasında olduğunu
gmmMask = GmmMex2(imgName,rect);
imshow(gmmMask); % not the same as the output image. somewhat resembles it, but not correct.
Bunun bir
renkli görüntü olmanın ima Çünkü
'new_img' a 'cv :: Mat' nesnesini mi? Bu, herhangi bir yerde tanımlanmadığı için gerçek koddan net değildir. – rayryeng
Üzgünüz, evet, yanlış düzeltme bu –
olduğunu düzeltmek bir gri tonlama görüntü değil, nedenini açıklayabilir. Birden fazla kanalı hesaba katmak için daha önce denedim ama anlayamadım. düzenleme: aynı zamanda gri tonlamalı görüntü çıktılarsa ben de im –