获得图像部分的平均值

时间:2013-11-19 07:39:25

标签: c++ opencv

我正在尝试将灰色框架细分为多个小方块,而不是为每个小方块计算每个方格的平均颜色值,以便我可以构建一个显示这些值的结果框架,这就是我所做的:

int main (){
cv::Mat frame= cv::imread("test2.jpg",0), result, myROI; 
int key = 0; 
int roiSize =10;
cv::Scalar mean(0);
cv::Mat meanS;
meanS = cv::Mat::zeros (frame.rows/roiSize,frame.cols/roiSize,CV_32FC1)  ;
cv::Rect roi;
if(frame.channels()!=1)
    cv::cvtColor(frame,frame,CV_BGR2GRAY);
    for ( int i=0 ; i< frame.cols /roiSize; i++){
        for (int j = 0 ; j < frame.rows/roiSize; j++){
            roi.x= i*roiSize;
            roi.y= j*roiSize;
            roi.height=roiSize;
            roi.width= roiSize;
            myROI = frame(roi);
            cv::imshow("myRoi",myROI);
            mean = cv::mean(myROI);
            std::cout << mean[0] << std::endl;
            meanS.at<float>(j,i) = mean[0];

        }
    }

    //meanS *=1/255; // I've tried this one also, it didn't help ! 
    cv::imshow("the reuslt ",meanS);
    cv::waitKey(0);
    return 0;

}

在控制台中值是正确的但是当我用imshow显示结果时,我只得到一个白框! ! 任何想法如何解决这个问题? 提前致谢 !

1 个答案:

答案 0 :(得分:3)

你的评论行实际上是正确的,但它正在进行整数除法,因此乘以零。只需在末尾添加一个点,如meanS *=1/255.; // I've tried this one also, it didn't help !