来源:《Learning Image Processing With OpenCV》

  算法原理:蒙特卡洛

  PI的计算公式:

  

  Cpp代码:

#include <opencv2/opencv.hpp>
#include <iostream> using namespace std;
using namespace cv; int main()
{
const int side=100;
const int npixels=8000; int i,j;
Mat s1=Mat::zeros(side, side, CV_8UC1); // 背景黑色
Mat s2=s1.clone();
circle(s1, Point(side/2, side/2), side/2, 255, -1); // 白色填充的圆 imshow("s1", s1); for (int k=0; k<npixels;k++)
{
i = rand()%side;
j = rand()%side;
s2.at<uchar>(i, j)=255;
}
Mat r;
bitwise_and(s1, s2, r);
imshow("s2", s2);
imshow("r", r); int Acircle = countNonZero(r);
int Asquare = countNonZero(s2);
float Pi=4*(float)Acircle/Asquare;
cout << "Estimated value of Pi:"<<Pi<<endl;
waitKey();
return 0;
}

  踩到的坑:

问题1. 看输出的s2的图像,理论上是黑背景白点,但是随机8000个点下来就看不出了,还以为是白背景黑点了。。。

解决:npixels=80

问题2:编译出现突然出现错误,error LNK1104: 无法打开***.exe

解决:删除已经生成的Debug文件夹,点击重新生成。(参考这里

最新文章

  1. 【Centos】修改网卡名字&amp;随之出现的问题
  2. 未能加载文件或程序集 Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad
  3. web standards
  4. sql server 2008 r2 报错
  5. 【转】Android 获得view的宽和高
  6. android Button 切换背景,实现动态按钮和按钮颜色渐变
  7. (转)实战Memcached缓存系统(7)Memcached的一些基础FAQ
  8. JavaScript几种类工厂实现原理剖析
  9. Android安全–加强版Smali Log注入
  10. TensorFlow下利用MNIST训练模型并识别自己手写的数字
  11. 1092 回文字符串(LCSL_DP)
  12. 天融信资料下载官方FTP服务器
  13. cvc-complex-type.3.2.2: 元素 &#39;constructor-arg&#39; 中不允许出现属性 &#39;name&#39;
  14. Oracle使用exp和imp导出、导入数据
  15. mongod 安装,增删改查
  16. Mysql(三)约束
  17. MySql数据库资料收集
  18. Java编程的逻辑 (37) - 泛型 (下) - 细节和局限性
  19. How To Create A Local Repository For SUSE Linux
  20. C++设计模式 之 “数据结构” 模式:Composite、Iterator、Chain of Resposibility

热门文章

  1. 由于客户端检测到一个协议错误 代码0x1104
  2. 学习PYTHON之路, DAY 3 - PYTHON 基础 3 (函数)
  3. html/css小练习2
  4. iOS---自动布局
  5. C++11新特性学习
  6. react验证码倒计时
  7. 在 Linux 上配置一个 syslog 服务器
  8. 计划任务,机器码与注册码,Web服务
  9. c++学习笔记1
  10. While循环