关于OpenCV的Mat画图问题
由于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画图问题的更多相关文章
- 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 ...
- opencv数据结构-MAT结构详解
1.定义 OpenCV中的C结构体有 CvMat 和 CvMatND,但后续的应用中指出 CvMat 和 CvMatND 弃用了,在C++封装中用 Mat 代替,另外旧版还有一个 IplImage,同 ...
- OpenCV中Mat的列向量归一化
OpenCV中Mat的列向量归一化 http://blog.csdn.net/shaoxiaohu1/article/details/8287528 OpenCV中Mat的列向量归一化 标签: Ope ...
- OpenCV中Mat总结
一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...
- OpenCV中Mat的使用
一.数字图像存储概述 数字图像存储时,我们存储的是图像每个像素点的数值,对应的是一个数字矩阵. 二.Mat的存储 1.OpenCV1基于C接口定义的图像存储格式IplImage*,直接暴露内存,如果忘 ...
- 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 ...
- Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘.dot.mul运算详解 2016年09月02日 00:00:36 -牧野- 阅读数:59593 标签: Opencv矩阵相乘点乘dotmul 更多 个人分类: O ...
- opencv中mat类介绍
The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...
- opencv之Mat数据类型
data:Mat对象中的一个指针,指向内存中存放矩阵数据的一块内存 (uchar* data) dims:Mat所代表的矩阵的维度,如 3 * 4 的矩阵为 2 维, 3 * 4 * 5 的为3维 c ...
随机推荐
- 【codeforces 514C】Watto and Mechanism(字符串hash)
[题目链接]:http://codeforces.com/contest/514/problem/C [题意] 给你n个字符串; 然后给你m个询问;->m个字符串 对于每一个询问字符串 你需要在 ...
- python正则匹配——中文字符的匹配
# -*- coding:utf-8 -*- import re '''python 3.5版本 正则匹配中文,固定形式:\u4E00-\u9FA5 ''' words = 'study in 山海大 ...
- [bzoj3207]花神的嘲讽计划Ⅰ[可持久化线段树,hash]
将每k个数字求一个哈希值,存入可持久化线段树,直接查询即可 #include <iostream> #include <algorithm> #include <cstd ...
- nyoj_71_独木舟上的旅行_201312122051
独木舟上的旅行 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能 ...
- Linux排查java程序占用cpu过高的线程代码
分几步骤: 1.通过top,查出占用CPU过高的java进程 ,比如: pid :6666 2.通过ps -mp 6666 -o THREAD,tid,time| sort -n -k1 -r 查看此 ...
- [MongoDB]Python 操作 MongoDB
from pymongo import MongoClient mc = MongoClient('localhost',27017) db = mc.users db.users.save({'na ...
- 怎样用Android Studio打多包名APK
问题:项目中不同的分发渠道可能须要打包多种APK(相同的代码),包名可能是不一样的,假设一个一个改动包名又一次编apk是非常麻烦,能够參考下列步骤在Android Studio上操纵Gradle来打包 ...
- PHP array_intersect_ukey()
定义和用法 array_intersect_ukey() 函数用回调函数比较键名来计算数组的交集. array_intersect_ukey() 返回一个数组,该数组包含了所有出现在 array1 中 ...
- PHP array_combine()
定义和用法 array_combine() 函数通过合并两个数组来创建一个新数组,其中的第一个数组是键(索引),第二个数组为值. 如果其中一个数组为空,或者两个数组的长度不同,则该函数返回 false ...
- HIHO 16 C
树分治.对于一棵子树的根节点,至少有一条边与儿子相连的属于重边.对于一条轻边,它的贡献值是两端子树大小的乘积,所以,重边应该是贡献值最大的一边. 至于要求所有的点,进行深度优先搜索,因为移动一个点只会 ...