在openCV中访问mat中的元素时获取垃圾值
getting garbage values while accessing elements in mat in openCV
Hi我有一个声明为rgbMat的矩阵,我正试图通过以下代码旋转它:
CvMat* rot = cvCreateMat(2,3,CV_32FC1);
CvPoint2D32f center = cvPoint2D32f(rgbMat->width/2,rgbMat->height/2);
double angle = 90;
double scale = 1;
CvMat* rot3= cv2DRotationMatrix( center, angle, scale, rot);
不幸的是,我只得到6个值作为输出,而我期望得到25个值,因为我最初的rgbMat是5*5矩阵,如下所示:
{
{ 1, 1, 1, 1, 1} ,
{ 0, 0, 0, 0, 0} ,
{ 2, 2, 2, 2, 2} ,
{ 0, 0, 0, 0, 0} ,
{ 1, 1, 1, 1, 1} }
有人能告诉我为什么吗?
首先,坚持使用C API(CvMat*,cvFoo)或C++API(Mat,Foo)。清除后,您确实得到了一个正确的旋转矩阵,现在您必须使用cvWarpAffine或WarpAffine应用它。
您只输出了6个值,因为您正在迭代并打印旋转矩阵的值,而不是rgbMat
中的值。执行此操作的代码实际上是正确的,并且您正在获得您应该得到的输出。
除了Boyko Perfanov的建议(我建议您遵循)之外,您还可以使用cvTranspose()
,它将使rgbMat
旋转90度,这正是您正在尝试做的。这是可能的,因为rgbMat
在两个维度上都是对称的。这种方法消除了显式迭代CvMat
的每个元素的需要。
cvTranspose(rgbMat, rgbMat);
相关文章:
- OpenCV 4.1.2 - 从网络摄像头获取帧并将其拆分
- 如何在 ORB 检测 OpenCV ++ 中获取校正角度?
- 使用 opencv 凸胡尔 获取给定点的面积. - 点到垫子转换期间发生错误
- OPENCV 3.4.1获取经过定制训练的线性SVM HOG DETECTMULTISCALE的原始形式
- 遍历区域并在 OpenCV 中获取平均像素值
- 如何在 OpenCV 3.0 c++ 中获取链码 xml 文件
- 从直方图OPENCV中的峰中获取色调值
- 获取具有X,Y和距离的OPENCV中的3D坐标
- opencv::Mat,从原始数据中获取像素值
- OpenCV - 获取图像的一部分
- OpenCV从2D像素获取3D坐标
- 从OpenCV MLP响应中获取最高值(概率)位置
- 如何使用JNI + OpenCV + NDK获取原始的android相机传感器图像数据
- 如何从乐谱中获取不同的五角星(openCV)
- 从OpenFrameworks OpenCV中的数组中获取凸出点
- openCV读取.avi文件的视频捕获获取空框架
- "Sometimes"获取 openCV 中整数类型变量的垃圾值
- 获取 opencv 2.4.3 的编译错误
- 正在获取OpenCV中的像素值
- 使用glGetTexImage()获取OpenCV材质