我正在尝试将灰色框架细分为多个小方块,而不是为每个小方块计算每个方格的平均颜色值,以便我可以构建一个显示这些值的结果框架,这就是我所做的:
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
显示结果时,我只得到一个白框! !
任何想法如何解决这个问题?
提前致谢 !
答案 0 :(得分:3)
你的评论行实际上是正确的,但它正在进行整数除法,因此乘以零。只需在末尾添加一个点,如meanS *=1/255.; // I've tried this one also, it didn't help !