OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 1423|回复: 0

【求助】EMGU 累计概率霍夫变换问题

[复制链接]
发表于 2018-9-25 10:41:38 | 显示全部楼层 |阅读模式
本帖最后由 flymoon87 于 2018-9-25 19:59 编辑

我用C# + EMGU3.4.1版本,重写了《OpenCV3编程入门》中7.2.5的示例程序,该程序演示了累计概率霍夫变换:HoughLinesP()函数的使用,程序代码如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Drawing;
  7. using Emgu.CV;
  8. using Emgu.CV.CvEnum;
  9. using Emgu.CV.Util; //用于定义vector的cv命名空间
  10. using Emgu.CV.Structure;

  11. namespace HoughLines
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             //载入原始图
  18.             Mat srcImage = CvInvoke.Imread("Building3.jpg");

  19.             //临时变量和目标图的定义
  20.             Mat tempImage = new Mat(), dstImage = new Mat();

  21.             //进行Canny边缘检测
  22.             CvInvoke.Canny(srcImage, tempImage, 50, 200, 3);
  23.             //灰度转换,此处dstImage之所以要转换成color形式,是为了后面绘制line时,可以使用彩色line
  24.             CvInvoke.CvtColor(tempImage, dstImage, ColorConversion.Gray2Bgr);

  25.             //进行霍夫线变换
  26.             VectorOfVectorOfInt lines = new VectorOfVectorOfInt();
  27.             //VectorOfVectorOfPoint lines = new VectorOfVectorOfPoint();
  28.             CvInvoke.HoughLinesP(tempImage, lines, 1, Math.PI / 180, 80, 50, 10);

  29.             //依次在图中绘制出每条线段
  30.             for (int i = 0; i < lines.Size; i++)
  31.             {
  32.                 /*
  33.                 VectorOfPoint vp = lines[i];
  34.                 Point pt1 = vp[0];
  35.                 Point pt2 = vp[1];
  36.                 */
  37.                 VectorOfInt vi = lines[i];
  38.                 Point pt1 = new Point(vi[0], vi[1]);
  39.                 Point pt2 = new Point(vi[2], vi[3]);
  40.                 CvInvoke.Line(dstImage, pt1, pt2, new MCvScalar(186, 88, 255), 1, LineType.AntiAlias); //LineType.AntiAlias表示抗锯齿
  41.             }
  42.             CvInvoke.Imshow("SourceImage", srcImage); //显示原始图
  43.             CvInvoke.Imshow("CannyImage", tempImage); //显示Canny边缘检测后的图
  44.             CvInvoke.Imshow("HoughTransformImage", dstImage); //显示霍夫变换后的效果图

  45.             CvInvoke.WaitKey(0);
  46.         }
  47.     }
  48. }
复制代码


运行后,出现如下异常提示(提示以上代码中第32行有问题):
Emgu.CV.Util.CvException:“OpenCV: channels() == ((((dtype) & ((512 - 1) << 3)) >> 3) + 1)”

各种百度,调试,都找不到异常原因,有大神知道错误原因吗?感激不尽~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-11-17 08:10 , Processed in 0.021249 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表