估计PI——OpenCV&Cpp
来源:《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文件夹,点击重新生成。(参考这里)
估计PI——OpenCV&Cpp的更多相关文章
- (5编译使用最新opencv)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html 2环境架设http://www.c ...
- 素数计数函数$\pi(x)\sim \Theta(\frac{x}{\log{x}})$的一个初等方法——素数定理的估计
$\DeclareMathOperator{\lcm}{lcm}$ 本文的方法来源于GTM 190:"Problems in Algebraic Number Theory",给出 ...
- 树莓派学习:源码方式安装opencv
1:下载若干依赖项: 更新软件源:sudo apt-get update/upgrade; 依次安装一下依赖项: sudo apt-get install build-essential su ...
- 树莓派3b安装opencv
前言:最近买了一个CSI接口的摄像头,最准用树莓派做人脸识别项目.树莓派上本身已经安装了python2.python3,最开始通过sudo apt-get install python3-opencv ...
- RPi 2B python opencv camera demo example
/************************************************************************************** * RPi 2B pyt ...
- 安装 openCV 2.4.10
近期试验了一下 ubuntu 12.06 (x86) 安装.openCV 安装脚本 最好的文章是 https://help.ubuntu.com/community/OpenCV. 它提供一个脚本( ...
- YOLO---YOLOv3 with OpenCV 再使用
YOLO---YOLOv3 with OpenCV 再使用YOLOv3 with OpenCV官网 @ https://github.com/JackKoLing/opencv_deeplearnin ...
- Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake
Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...
- opencv,用摄像头识别贴片元件的定位和元件的角度(转载)
经过半个月学习opencv有点小成果,用摄像头识别贴片元件的定位和元件的角度(转载) (2013-04-17 16:00:22) 转载▼ 分类: 学习笔记 先说一下开源的opencv真是一件伟大的 ...
随机推荐
- WPF进度条系列①滑动小圆点
写在之前: 关于WPF的样式,我也是学习了很多朋友的文章才有了下面的东西,因为时间有些久远 & 备份的链接也都不在了. 所以,究竟是看过哪些文章,也是记不清楚了…… 请见谅. ------- ...
- nodejs 服务端添加相应头Access-Control-Allow-Origin
重点在这句:res.setHeader("Access-Control-Allow-Origin", "*"); var http = require(&quo ...
- jsessionid 导致重定向404的问题
http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletResponse.html#encod ...
- CentOS 6中MATLAB print函数“所见非所得”bug的解决方案
0 系统配置+软件版本 主机:Dell optiplex 390 MT (i5) 系统+软件:CentOS 6.5 x64, Matlab R2012, R2013 系统+软件:CentOS 6.7 ...
- mybatis-generator-config工具的使用
generator.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE gener ...
- 使用ASP.NET上传图片汇总
1 使用标准HTML来进行图片上传 前台代码: <body> <form id="form1" runat="server"> ...
- callback 转换到 promise
最近项目迭代,从express到koa,面对callback,想偷懒,就想到了Proxy对象 new Proxy(docker,{ get : function (obj,name) { return ...
- Mallet 使用说明
Mallet:自然语言处理工具包 发表于128 天前 ⁄ 技术, 科研 ⁄ 评论数 6 ⁄ 被围观 1006 Views+ MALLET是基于java的自然语言处理工具箱,包括分档得分类.句类.主题模 ...
- 查找“asdfjvjadsffvaadfkfasaffdsasdffadsafafsafdadsfaafd” 该字符串中有多少个af
package lovo.bean; import java.util.Scanner; public class Java { @param args public static void main ...
- Uart、SPI和I2C的区别
串口通信:UART.SPI.I2C区别[引用] 1.UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少.数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快.在多机通信上面 ...