小编Ven*_*ici的帖子

使用OpenCV的MATLAB和C++中的不同像素值

我看到有类似的问题,但不要安静回答我的问题所以这是我的问题.

在使用OpenCV的C++中,我运行下面将提供的代码,它返回的平均像素值为6.32.但是,当我打开图像并在MATLAB中使用均值函数时,它返回的平均像素强度约为6.92ish.正如您所看到的,我将OpenCV值转换为double以尝试缓解此问题,并发现openCV将图像作为一组整数加载,而MATLAB将图像加载为十进制值,这些值与整数大致相当但不完全相同.所以我的问题是,对编码不熟悉,这是正确的吗?我假设MATLAB返回更准确的值,如果是这种情况,我想知道是否有办法以相同的方式加载图像以避免差异.

谢谢,代码如下

    Mat img = imread("Cells2.tif");
cv::cvtColor(img, img, CV_BGR2GRAY);
cv::imshow("stuff",img);
Mat dst;
if(img.channels() == 3)
{
    img.convertTo(dst, CV_64FC1);
}
else if (img.channels() == 1) 
{
    img.convertTo(dst, CV_64FC1);
}
cv::imshow("output",dst/255);
int NumPixels = img.total();


double avg;
double c = 0; 
double std;
    for(int y = 0; y < dst.cols; y++)
    { 

        for(int x = 0; x < dst.rows; x++)
        {
            c+=dst.at<double>(x,y)*255;
        }
    }

avg = c/NumPixels;
cout << "asfa = " << c << endl;
double deviation;

double var;
double …
Run Code Online (Sandbox Code Playgroud)

c++ matlab opencv

3
推荐指数
1
解决办法
2979
查看次数

标签 统计

c++ ×1

matlab ×1

opencv ×1