关于OpenCV的Mat画图问题
生活随笔
收集整理的這篇文章主要介紹了
关于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画图问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票的委比是什么意思
- 下一篇: XCH是什么币