用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;
}
展开
 我来答
用户名不合法5
2015-05-17 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:77.8万
展开全部
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());
更多追问追答
追问
at函数哪里出问题了呢,能明确的说一下嘛  谢谢
追答

我现在也没办法解释了,昨天我用VS2013+opencv2.4.9测试的结果,执行报错。今天在centos上用gcc4.8.3+opencv2.4.10结果是正确的

东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
2009301953
2015-05-15 · TA获得超过663个赞
知道小有建树答主
回答量:839
采纳率:0%
帮助的人:481万
展开全部
有个函数flip。自己查查吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式