记录一下一些奇怪的问题
有些问题虽然一波操作解决了,但是不知道为啥,这里记录一下:
image.convertTo(image, CV_32FC3)导致数据不一样了
void sub_mean(const cv::Mat &img,cv::Mat &m_out)
{
const cv::Scalar m_mean = cv::Scalar(104.0,117.0,123.0);
if(3 != img.channels() || img.empty())
{
return false;
}
m_out = img - m_mean;
return ;
}
cv::Mat image;
cv::resize(m_src,image,cv::Size(m_SIZE_IMAGE,m_SIZE_IMAGE));
if(1 == image.channels()) { cv::cvtColor(image,image,CV_GRAY2BGR); }
image.convertTo(image, CV_32FC3);
bool b_flg = sub_mean(image,m_out);
这里需要把图像数据转为一维数组数据:
void base_transform(const cv::Mat &m_src,float *data)
{
int m_SIZE_IMAGE = 320;
cv::Mat image;
cv::resize(m_src,image,cv::Size(m_SIZE_IMAGE,m_SIZE_IMAGE));
if(1 == image.channels()) { cv::cvtColor(image,image,CV_GRAY2BGR); }
// image.convertTo(image, CV_32FC3); ////////////////////////////////////
//bgr 2 rgb
for (int i = 0; i < INPUT_H * INPUT_W; i++) {
data[i] = (float)(image.at<cv::Vec3b>(i)[2]) * 1.0 - 123.0;
data[i + INPUT_H * INPUT_W] = (float)(image.at<cv::Vec3b>(i)[1]) * 1.0 - 117.0;
data[i + 2 * INPUT_H * INPUT_W] = (float)(image.at<cv::Vec3b>(i)[0]) * 1.0 - 104.0;
}
}
一加image.convertTo(image, CV_32FC3); 这句就会导致数据不一样,不知道为啥
好记性不如烂键盘---点滴、积累、进步!