由于OpenCV的java版本画图有太多错误,只能自己编写画图的代码,在一个函数中,编写出画圆和深度距离的代码,

代码如下:

public int CircleMyMat(Mat Show, Point3 Center, double Radius, Scalar COLOR ,int Width)
{
//请空画布为白色
Show = Mat.zeros(Show.size(), CvType.CV_8UC3);
//Core.bitwise_not(Show, Show);//反色! double[] C= Show.get(0, 0);
C[0]= 0;C[1]= 0;C[2]= 255;//C[0]= 0;C[1]= 0;C[2]= 0; //1.获取圈的值//画出圆!
int CenterX = (int) Center.x;
int CenterY = (int) Center.y;
int R = (int)Radius;
List<Point3 > CirclePoints = new LinkedList<Point3 >();
//得到圆上点的值!
int MaxX= CenterX + (int)R;
int MinX= CenterX - (int)R; int i =0; int X =0; int Y =0;
for(i = 0-R; i<R ;++i){
Point3 PointIn= new Point3();
PointIn.x = i + CenterX ;
PointIn.y = Math.sqrt( Math.abs(R*R - i*i) );//这个公式ZTMD关键!
PointIn.y = CenterY + PointIn.y ;
CirclePoints.add(PointIn);
}
//取下半部分!
for(i = 0-R; i<R ;++i){
Point3 PointIn= new Point3();
PointIn.x = i + CenterX ;
PointIn.y = Math.sqrt( Math.abs(R*R - i*i) );//这个公式ZTMD关键!
PointIn.y = CenterY - PointIn.y ;
PointIn.z = 1;
CirclePoints.add(PointIn);
} //2.获取Z值//画在右方如何?//固定缩放系数//保证不要跑出边界!
int CenterZ = (int) Center.z;
int Zl = CenterZ;//Zl直接作为长度被使用! //2.2 。画出一条线来!
Point ttt0 = new Point();
Point ttt1 = new Point();
ttt0.x = CenterX;
ttt0.y = CenterY;
ttt1.x = CenterX + Zl;//ttt1.x = CenterX + 20;//
ttt1.y = CenterY;
lineMyMat(Show, ttt0, ttt1, COLOR ,Width); //3.画出圈来!//在此调整粗细!
double[] P;
int Idx =0;
for( Idx=0; Idx< CirclePoints.size(); ++Idx)
{
P= C;
X= (int )CirclePoints.get(Idx).x;
Y= (int )CirclePoints.get(Idx).y;
Show.put(Y,X, P);//frameRf.put(Y, X, P);
++X;++Y;
Show.put( Y, X, C);
++X;++Y;
Show.put( Y, X, C);
} return 1;
}

出现了无法画图的问题,总是找不到原因。

最后,把

Show = Mat.zeros(Show.size(), CvType.CV_8UC3);

注销掉,程序可以运行了。

原因到底是什么,一时难以理解......................

关于OpenCV的Mat画图问题的更多相关文章

  1. OpenCV4Android——No implementation found for native Lorg/opencv/core/Mat;.n_Mat ()J

    ok 12-17 08:13:10.461: W/dalvikvm(540): No implementation found for native Lorg/opencv/core/Mat;.n_M ...

  2. opencv数据结构-MAT结构详解

    1.定义 OpenCV中的C结构体有 CvMat 和 CvMatND,但后续的应用中指出 CvMat 和 CvMatND 弃用了,在C++封装中用 Mat 代替,另外旧版还有一个 IplImage,同 ...

  3. OpenCV中Mat的列向量归一化

    OpenCV中Mat的列向量归一化 http://blog.csdn.net/shaoxiaohu1/article/details/8287528 OpenCV中Mat的列向量归一化 标签: Ope ...

  4. OpenCV中Mat总结

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

  5. OpenCV中Mat的使用

    一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...

  6. java.lang.UnsatisfiedLinkError: No implementation found for long org.opencv.core.Mat.n_Mat()

    Android调试openCV4Android的时候出现以下错误 java.lang.UnsatisfiedLinkError: No implementation found for long or ...

  7. Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

    Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...

  8. opencv中mat类介绍

    The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...

  9. opencv之Mat数据类型

    data:Mat对象中的一个指针,指向内存中存放矩阵数据的一块内存 (uchar* data) dims:Mat所代表的矩阵的维度,如 3 * 4 的矩阵为 2 维, 3 * 4 * 5 的为3维 c ...

随机推荐

  1. 【codeforces 508B】Anton and currency you all know

    [题目链接]:http://codeforces.com/contest/508/problem/B [题意] 给你一个奇数; 让你交换一次数字; 使得这个数字变成偶数; 要求偶数要最大; [题解] ...

  2. N天学习一个Linux命令之grep

    前言任何系统都会出问题,出了问题一般怎么排查BUG?这个时候程序中记录的异常日志以及关键节点的日志就非常重要了,面对一大堆的日志文件,怎么找出我们需要的有用信息呢?linux中可以使用grep命令查找 ...

  3. 一键免费升级Windows 10

    2015年3月18日,在深圳召开的微软Windows硬件project产业创新峰会(WinHEC)发布了一些震撼消息. 微软计划于今年夏天正式推出Windows 10操作系统.将在190个国家发布,总 ...

  4. 依据矩阵的二维相关系数进行OCR识别

    我想通过简单的模板匹配来进行图像识别. 把预处理好的字符图片,分别与A到Z的样本图片进行模板匹配. 结果最大的表明相关性最大,就能够识别字符图片了. 在实际应用中.我用了openCV的matchTem ...

  5. Criteria——Hibernate的面向对象查询

    提到Hibernate的查询.我们往往会想到HQL,他使我们的SQL语句面向对象话. 事实上细看,差点儿相同就是把SQL语句中的表和字段用所相应的实体和属性给取代了.事实上.Hibernate中还有还 ...

  6. mongoDB学习笔记——安装及启动

    WINDOWS环境下: 一.安装 步骤一:  下载MongoDB  url下载地址:  http://downloads.mongodb.org/win32/ 步骤二:  设置MongoDB程序存放目 ...

  7. HDU - 3622 Bomb Game(二分+2-SAT)

    题目大意:玩一个放炸弹游戏,有N次放炸弹的机会,每次放炸弹时,你都有两个位置能够选择.问怎样放炸弹,能使爆炸的炸弹的半径的最小值最大(炸弹爆炸半径能够控制,可是爆炸形成的圈不能有重叠部分) 解题思路: ...

  8. luogu2152 [SDOI2009]SuperGCD

    要你求两个非常大的数字的GCD. 不要想复杂,用高精度整更相减损术即可. #include <cstdio> #include <cstring> #include <a ...

  9. 交叉熵代价函数——当我们用sigmoid函数作为神经元的激活函数时,最好使用交叉熵代价函数来替代方差代价函数,以避免训练过程太慢

    交叉熵代价函数 machine learning算法中用得很多的交叉熵代价函数. 1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigm ...

  10. bzoj 4709 [ Jsoi2011 ] 柠檬 —— 斜率优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4709 课上讲的题,还是参考了博客...:https://www.cnblogs.com/GX ...