public static Matrix ConvertToMultiChannelMatrix(Vector3[] points3d) { Matrix mat = new Matrix(1, points3d.Length, MatrixType.cv32FC3); for (int i = 0; i < points3d.Length; i++) { mat[0, i, true] = new cvScalar(points3d[i].x, points3d[i].y, points3d[i].z); } return(mat); }
//byte Median(int i, int j, int k) { // return (byte)Mathf.Min(Mathf.Max(i, j), Mathf.Max(j, k), Mathf.Max(i, k)); //} IEnumerator BlurImage() { Color32[] pixels = m_pixels[0]; Matrix src = new Matrix(imageHeight, imageWidth, MatrixType.cv32FC3); Matrix dest = new Matrix(imageHeight, imageWidth, MatrixType.cv32FC3); for (int row = 0, i = 0; row < imageHeight; ++row) { for (int col = 0; col < imageWidth; ++col, ++i) { Color32 c = pixels[i]; src[row, col, true] = new cvScalar(c.b, c.g, c.r); } yield return(null); } for (int i = 0; i < 2; ++i) { OpenCV.cvSmooth(src.matPtr, dest.matPtr, OpenCV.CV_BILATERAL, 5, 5, 250.0, 250.0); yield return(null); OpenCV.cvSmooth(dest.matPtr, src.matPtr, OpenCV.CV_BILATERAL, 5, 5, 250.0, 250.0); yield return(null); } for (int row = 0, i = 0; row < imageHeight; ++row) { for (int col = 0; col < imageWidth; ++col, ++i) { cvScalar c = src[row, col, true]; pixels[i].r = (byte)c.d2; pixels[i].g = (byte)c.d1; pixels[i].b = (byte)c.d0; } yield return(null); } }
public static extern void cvSet2D(IntPtr mat, int y, int x, cvScalar scalar);