小编dav*_*vid的帖子

在OpenCV中旋转旋转图像的后点

我有轮换麻烦.我想要做的是:

  • 旋转图像
  • 检测旋转图像上的特征(点)
  • 向后旋转点,使得我可以得到与初始图像对应的点坐标

我有点卡在第三步.

我设法使用以下代码旋转图像:

cv::Mat M(2, 3, CV_32FC1);
cv::Point2f center((float)dst_img.rows / 2.0f, (float)dst_img.cols / 2.0f);
M = cv::getRotationMatrix2D(center, rotateAngle, 1.0);
cv::warpAffine(dst_img, rotated, M, cv::Size(rotated.cols, rotated.rows));
Run Code Online (Sandbox Code Playgroud)

我尝试用这段代码回转点:

float xp = r.x * std::cos( PI * (-rotateAngle) / 180 ) - r.y * sin(PI * (rotateAngle) / 180);
float yp = r.x * sin(PI * (-rotateAngle) / 180) + r.y * cos(PI * (rotateAngle) / 180);
Run Code Online (Sandbox Code Playgroud)

这不是为了工作,但这些点在图像上不能很好地回归.有一个偏移.

谢谢您的帮助

c++ opencv rotation matrix

12
推荐指数
2
解决办法
7684
查看次数

具有直接像素访问的Opencv颜色映射

我有一个灰度图像,我希望通过使用调色板(如Matlab中的colormap)映射灰度值来显示颜色.

我设法通过使用OpenCV cvSet2D函数来实现,但出于性能原因我想直接访问像素.

但是,当我这样做时,图像有奇怪的颜色.我尝试以不同的顺序(RGB,BGR,......)设置颜色,但似乎无法解决它.

有我的代码:

    IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), IPL_DEPTH_8U, 3 );
for (int y=0; y<temp->height; y++)
{
    uchar* ptr1 = (uchar*) ( temp->imageData + y * temp->widthStep );
    uchar* ptr2 = (uchar*) ( img->imageData + y * img->widthStep );

    for (int x=0; x<temp->width; x++)
    {
        CvScalar v1;

        int intensity = (int)ptr2[x];
        int b=0, g=0, r=0;
        r = colormap[intensity][0];
        g = colormap[intensity][1];
        b = colormap[intensity][2];

        if (true)
        {
            ptr1[3*x]   = b;
            ptr1[3*x+1] = g;
            ptr1[3*x+2] = r;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ opencv

7
推荐指数
2
解决办法
6886
查看次数

使用OpenCV在MFC/C++应用程序中显示图像

我想在MFC应用程序中显示我从具有OpenCV(cvCaptureFromAVI函数)的avi文件中捕获的帧.

我是MFC的新手,但觉得我已经接近使它成功了.但是,不是在图片框中显示的帧,它们显示在新窗口中.

cvGetWindowName 返回始终为null值.

有我的代码:

CWnd* hPic = 0;
hPic = GetDlgItem(IDC_STATICPIC1);  
const char* szWindName = cvGetWindowName(hPic->GetSafeHwnd());
cvShowImage(szWindName, frame_copy);
Run Code Online (Sandbox Code Playgroud)

c++ mfc opencv

3
推荐指数
2
解决办法
9144
查看次数

将项目从紧凑框架 .NET 转换为完整框架 .Net

所以我有一个包含 120 个项目的大型 c# 解决方案。该解决方案不包含用户界面,并且经过编译以支持紧凑框架和完整框架。该解决方案采用 Visual Studio 2005 格式。

我想删除对 Windows CE 的支持并将其全部转换为面向完整框架并在 Visual Studio 2010 中打开它。

我想要做的是从整个解决方案中删除对紧凑框架的支持。

我应该如何进行?是否可以将项目转换为完整的框架?

谢谢你。

.net c# compact-framework visual-studio-2010 visual-studio

3
推荐指数
1
解决办法
1912
查看次数

float cv :: Mat的访问元素

我不明白为什么我不能让这段代码工作:

cv::Mat M(2, 3, CV_32FC1);
cv::Point2f center(20, 20);
M = cv::getRotationMatrix2D(center, 20, 1.0);
float test;
test = M.at<float>(1, 0);
test = M.at<float>(0, 1);
test = M.at<float>(1, 1);
Run Code Online (Sandbox Code Playgroud)

使用M.at访问元素时代码失败.出现以下断言:

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel
s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in unknown function, file C:\OpenCV2.2\include\
opencv2/core/mat.hpp, line 517
Run Code Online (Sandbox Code Playgroud)

c++ opencv

1
推荐指数
1
解决办法
1万
查看次数