Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 1117

Detect laser light dot of any colour using OpenCV in Android

$
0
0
I am trying to detect laser light dot of any colour of laser. i have tried some code and it is running perfectly for Only RED colour detection and i want any colour of laser dot detection. I am new in OpenCV. Here's what i have done till now : Mat originalFrame= new Mat(); Mat frame = new Mat(); cvf.rgba().copyTo(originalFrame); cvf.rgba().copyTo(frame); Mat frameH; Mat frameV; Mat frameS; mRgba = cvf.rgba(); List contours = new ArrayList(); Mat hierarchy = new Mat(); // Mat frameS; // Convert it to HSV Imgproc.cvtColor(frame, frame, Imgproc.COLOR_RGB2HSV); // Split the frame into individual components (separate images for H, S, // and V) mChannels.clear(); Core.split(frame, mChannels); // Split channels: 0-H, 1-S, 2-V frameH = mChannels.get(0); frameS = mChannels.get(1); frameV = mChannels.get(2); // Apply a threshold to each component Imgproc.threshold(frameH, frameH, 155, 160, Imgproc.THRESH_BINARY); // Imgproc.threshold(frameS, frameS, 0, 100, Imgproc.THRESH_BINARY); Imgproc.threshold(frameV, frameV, 250, 256, Imgproc.THRESH_BINARY); // Perform an AND operation Core.bitwise_and(frameH, frameV, frame); // // Core.bitwise_and(frame,frameS,frame); Imgproc.findContours(frame, contours, hierarchy, Imgproc.RETR_CCOMP, Imgproc.CHAIN_APPROX_SIMPLE, new Point(0, 0)); hierarchy.release(); for ( int contourIdx=0; contourIdx < contours.size(); contourIdx++ ) { // Minimum size allowed for consideration MatOfPoint2f approxCurve = new MatOfPoint2f(); MatOfPoint2f contour2f = new MatOfPoint2f( contours.get(contourIdx).toArray() ); //Processing on mMOP2f1 which is in type MatOfPoint2f double approxDistance = Imgproc.arcLength(contour2f, true)*0.02; Imgproc.approxPolyDP(contour2f, approxCurve, approxDistance, true); //Convert back to MatOfPoint MatOfPoint points = new MatOfPoint( approxCurve.toArray() ); // Get bounding rect of contour Rect rect = Imgproc.boundingRect(points); Imgproc.rectangle(originalFrame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 0, 255), 3); }

Viewing all articles
Browse latest Browse all 1117

Trending Articles