2013-07-12 89 views
0

我目前正在努力翻譯一個Python程序到C++我已經將98%的程序轉換爲C++,但是有一行我被卡住了。我目前正在使用OpenCV,我相信它與此有關。 Python的線:翻譯python行到c + + opencv

 for box in self.Boxes[:]: 
       Cropped_Box = image.crop(box) 
       mean = ImageStat.Stat(Cropped_Box).mean 

C++行:

 for(int a = 0; a < 24; a++) 
       Average_reds = cv::mean(roi[a]) 

Average_reds是cv::Scalar和我試圖從LED指示器光板讀取GPS倍。我怎麼不知道我是否像在Python中一樣在C++中使用相同的mean函數。 另外,Cropped_Boxroi[a]當然是Mat類型的圖像的裁剪區域。

+0

那麼問題是什麼? – ypnos

+0

我想從python行ImageState。(box).mean翻譯成C++我使用了cv :: mean(),但我不確定這兩行是否相同。如果不是什麼C++ equilavent? – CIM

+2

你有ImageStat的文檔是什麼意思? cv :: mean的詳細記錄:http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=mean#cv2.mean – ypnos

回答

0

答案是,cv::mean()執行與ImageStat.mean相同的操作。它們都執行像素值的通道平均值。

有一個細微的差別:ImageStat.mean返回每個通道的平均值列表。因此,三通道圖像將返回三元素列表。 cv::mean()總是返回一個cv::Scalar,它有四個元素。這意味着如果圖像少於四個通道,則只有cv::Scalar(其中N是圖像通道數)的前N個元素將具有有意義的數字。