Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

How to detect(Count) Hair inside rectangle Hair images?

$
0
0
I have write one code to detect hairs from head and get count. But not able to get exact result as per the image exist ![image description](/upfiles/14761016252390203.jpg) ![image description](/upfiles/14761016505013192.jpg) private boolean opencvProcessCount(Uri picFileUri) { hairCount = 0; totalC = 0; //Log.e(">>>>>>>>","count " + picFileUri); try { InputStream iStream = getContentResolver().openInputStream(picFileUri); byte[] im = getBytes(iStream); BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inDither = true; opt.inPreferredConfig = Bitmap.Config.ARGB_8888; Bitmap image = BitmapFactory.decodeByteArray(im, 0, im.length); Mat mYuv = new Mat(); Utils.bitmapToMat(image, mYuv); Mat mRgba = new Mat(); Imgproc.cvtColor(mYuv, mRgba, Imgproc.COLOR_RGB2GRAY, 4); Imgproc.Canny(mRgba, mRgba, 80, 90); Mat lines = new Mat(); int threshold = 80; int minLineSize = 30; int lineGap = 100; Imgproc.HoughLinesP(mRgba, lines, 1, Math.PI/180, threshold, minLineSize, lineGap); for (int x = 0; x < lines.rows(); x++) { double[] vec = lines.get(x, 0); double x1 = vec[0], y1 = vec[1], x2 = vec[2], y2 = vec[3]; Point start = new Point(x1, y1); Point end = new Point(x2, y2); double dx = x1 - x2; double dy = y1 - y2; double dist = Math.sqrt (dx*dx + dy*dy); totalC ++; Log.e(">>>>>>>>","dist " + dist); if(dist>300.d) { hairCount ++; // Log.e(">>>>>>>>","count " + x); Imgproc.line(mRgba, start, end, new Scalar(0,255, 0, 255),5);// here initimg is the original image. }// show those lines that have length greater than 300 } Log.e(">>>>>>>>",totalC+" out hairCount " + hairCount); // Imgproc. } catch (Throwable e) { // Log.e(">>>>>>>>","count " + e.getMessage()); e.printStackTrace(); } return false; }

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>