用opencv将一幅保存在Mat矩阵的图片左右翻转,程序该怎么写.其中Mat是CV_8UC3的
我这样写的程序哪里出错intreverseMat(Mat&mat1,Mat&mat2){intnr=mat1.rows;intnc=mat1.cols;for(intj=...
我这样写的程序 哪里出错
int reverseMat(Mat &mat1,Mat &mat2)
{
int nr=mat1.rows;
int nc=mat1.cols;
for(int j=0;j<nr;j++)
{
for(int i=0;i<nc;i++)
{
mat2.at<cv::Vec3b>(j,i)=mat1.at<cv::Vec3b>(j,nc-i);
}
}
return 0;
}
还有
int reverseMat(Mat &mat1,Mat &mat2)
{
int nr=mat1.rows;
int nc=mat1.cols;
for(int j=0;j<nr;j++)
{
for(int i=0;i<nc;i++)
{
// mat2.at<cv::Vec3b>(j,i)=mat1.at<cv::Vec3b>(j,nc-i);
char tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[0];
mat1.at<cv::Vec3b>(j,i)[0]=mat1.at<cv::Vec3b>(j,nc-i)[0];
mat1.at<cv::Vec3b>(j,mat1.cols-i)=tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[1];
mat1.at<cv::Vec3b>(j,i)[1]=mat1.at<cv::Vec3b>(j,nc-i)[1];
mat1.at<cv::Vec3b>(j,mat1.cols-i)[1]=tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[2];
mat1.at<cv::Vec3b>(j,i)[2]=mat1.at<cv::Vec3b>(j,nc-i)[2];
mat1.at<cv::Vec3b>(j,mat1.cols-i)[2]=tmp;
}
}
return 0;
} 展开
int reverseMat(Mat &mat1,Mat &mat2)
{
int nr=mat1.rows;
int nc=mat1.cols;
for(int j=0;j<nr;j++)
{
for(int i=0;i<nc;i++)
{
mat2.at<cv::Vec3b>(j,i)=mat1.at<cv::Vec3b>(j,nc-i);
}
}
return 0;
}
还有
int reverseMat(Mat &mat1,Mat &mat2)
{
int nr=mat1.rows;
int nc=mat1.cols;
for(int j=0;j<nr;j++)
{
for(int i=0;i<nc;i++)
{
// mat2.at<cv::Vec3b>(j,i)=mat1.at<cv::Vec3b>(j,nc-i);
char tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[0];
mat1.at<cv::Vec3b>(j,i)[0]=mat1.at<cv::Vec3b>(j,nc-i)[0];
mat1.at<cv::Vec3b>(j,mat1.cols-i)=tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[1];
mat1.at<cv::Vec3b>(j,i)[1]=mat1.at<cv::Vec3b>(j,nc-i)[1];
mat1.at<cv::Vec3b>(j,mat1.cols-i)[1]=tmp;
tmp=mat1.at<cv::Vec3b>(j,i)[2];
mat1.at<cv::Vec3b>(j,i)[2]=mat1.at<cv::Vec3b>(j,nc-i)[2];
mat1.at<cv::Vec3b>(j,mat1.cols-i)[2]=tmp;
}
}
return 0;
} 展开
2个回答
展开全部
at函数问题
CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
CV_DbgAssert( dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] &&
(unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) &&
CV_ELEM_SIZE1(DataType<_Tp>::depth) == elemSize1());
更多追问追答
追问
at函数哪里出问题了呢,能明确的说一下嘛 谢谢
东莞大凡
2024-08-07 广告
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询