繁体   English   中英

使用画布正确绘制点

[英]Draw points correctly with Canvas

我有一个python脚本,它使用OpenCV从ckpts文件(模型)获得的图像输入在眼睛区域的轮廓上绘制界标。 我想在同一张图片中绘制这些点(地标)。 我从图片中获得了预测点,并尝试使用Canvas绘制这些点(x,y),但结果有所不同。 两张图片之间的区别:

使用python脚本(OpenCV)绘制地标

地标是使用Java代码绘制的(画布)

我已经尝试了很多方法,并且使用Canvas库在imageview上绘制点(我在资产文件夹中加载了相同的图像),但这不能解决我的问题。

这是显示如何在图像上绘制界标的python代码:

predictions = estimator.predict(input_fn=_predict_input_fn)
        for _, result in enumerate(predictions):
            img = cv2.imread(result['name'].decode('ASCII') + '.jpg')
            print(result['logits'])
            print(result['name'])
            marks = np.reshape(result['logits'], (-1, 2)) * IMG_WIDTH
            print("reshape values  "+str(np.reshape(result['logits'], (-1,2))))
            print("marks  "+str(marks))

            for mark in marks:
                cv2.circle(img, (int(mark[0]), int(
                    mark[1])), 1, (0, 255, 0), -1, cv2.LINE_AA)
            try:
                img = cv2.resize(img, (512, 512))
                cv2.imshow('result', img)
            except Exception as e:
                print(str(e))
           # output_node_names = [n.name for n in tf.get_default_graph().as_graph_def().node]
           # print(output_node_names)
            cv2.waitKey()

该文件显示了来自python代码的打印日志:


[0.33135968 0.19592011 0.34212315 0.17297666 0.36624995 0.16413747
 0.3894139  0.17440952 0.39828074 0.1978043  0.3891497  0.22268474
 0.36345637 0.22974193 0.3401759  0.2193309  0.30167252 0.20411113
 0.3167112  0.19134495 0.33793524 0.18388326 0.3642417  0.18049955
 0.3903508  0.18533507 0.40906873 0.1957745  0.42142123 0.21091096
 0.40550107 0.21829814 0.38345626 0.22071144 0.35900232 0.22142673
 0.3363348  0.21877256 0.3161971  0.2133534  0.62843406 0.21482795
 0.6389724  0.1914106  0.6628249  0.1835615  0.6858679  0.19583184
 0.6946868  0.22111627 0.6840309  0.24444285 0.66027373 0.25241333
 0.6351568  0.24192403 0.60499936 0.22642238 0.6210091  0.21289764
 0.6423563  0.2042976  0.6685919  0.20277795 0.69201195 0.20948553
 0.70882106 0.22015369 0.71931773 0.23518339 0.7076659  0.24166131
 0.69054717 0.24350837 0.6694564  0.24258481 0.64537776 0.23927754
 0.62199306 0.23511863]
b'C:\\Users\\*******\\cnn-facial-landmark\\targetiris\\irisdata-300VW_Dataset_2015_12_14-017-000880'
reshape values  [[0.33135968 0.19592011]
 [0.34212315 0.17297666]
 [0.36624995 0.16413747]
 [0.3894139  0.17440952]
 [0.39828074 0.1978043 ]
 [0.3891497  0.22268474]
 [0.36345637 0.22974193]
 [0.3401759  0.2193309 ]
 [0.30167252 0.20411113]
 [0.3167112  0.19134495]
 [0.33793524 0.18388326]
 [0.3642417  0.18049955]
 [0.3903508  0.18533507]
 [0.40906873 0.1957745 ]
 [0.42142123 0.21091096]
 [0.40550107 0.21829814]
 [0.38345626 0.22071144]
 [0.35900232 0.22142673]
 [0.3363348  0.21877256]
 [0.3161971  0.2133534 ]
 [0.62843406 0.21482795]
 [0.6389724  0.1914106 ]
 [0.6628249  0.1835615 ]
 [0.6858679  0.19583184]
 [0.6946868  0.22111627]
 [0.6840309  0.24444285]
 [0.66027373 0.25241333]
 [0.6351568  0.24192403]
 [0.60499936 0.22642238]
 [0.6210091  0.21289764]
 [0.6423563  0.2042976 ]
 [0.6685919  0.20277795]
 [0.69201195 0.20948553]
 [0.70882106 0.22015369]
 [0.71931773 0.23518339]
 [0.7076659  0.24166131]
 [0.69054717 0.24350837]
 [0.6694564  0.24258481]
 [0.64537776 0.23927754]
 [0.62199306 0.23511863]]
marks  [[37.112286 21.943052]
 [38.317795 19.373386]
 [41.019993 18.383396]
 [43.614357 19.533867]
 [44.607445 22.154081]
 [43.584766 24.940691]
 [40.707115 25.731096]
 [38.0997   24.565062]
 [33.787323 22.860447]
 [35.471653 21.430634]
 [37.848747 20.594925]
 [40.79507  20.21595 ]
 [43.719288 20.757528]
 [45.815697 21.926743]
 [47.199177 23.622028]
 [45.41612  24.44939 ]
 [42.9471   24.71968 ]
 [40.20826  24.799793]
 [37.6695   24.502527]
 [35.414074 23.89558 ]
 [70.38461  24.06073 ]
 [71.56491  21.437988]
 [74.23639  20.558887]
 [76.81721  21.933167]
 [77.80492  24.765022]
 [76.61146  27.3776  ]
 [73.95066  28.270294]
 [71.137566 27.095491]
 [67.759926 25.359306]
 [69.553024 23.844536]
 [71.9439   22.881332]
 [74.88229  22.71113 ]
 [77.50534  23.46238 ]
 [79.387955 24.657213]
 [80.56358  26.34054 ]
 [79.25858  27.066067]
 [77.341286 27.272938]
 [74.97912  27.169498]
 [72.28231  26.799084]
 [69.66322  26.333286]]

Java代码(Android)

  private void drawpoint(ImageView imageView,float x,float y, int raduis){
        myOptions.inDither = true;
        myOptions.inScaled = false;
        myOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;// important
        myOptions.inPurgeable = true;
        canvas.drawCircle(x,y, raduis, paint);
        imageView = (ImageView)findViewById(R.id.imageView);
        imageView.setAdjustViewBounds(true);
        imageView.setImageBitmap(mutableBitmap);
    }
         drawpoint(image2,  38,  19,1);
            drawpoint(image2,41,18,1);
            drawpoint(image2,43,19,1);
            drawpoint(image2,40,25,1);
            drawpoint(image2,38,24,1);

我怎么解决这个问题?

问题解决了。 我使用OpenCV库而不是Canvas库在Android中进行绘制。 我完全使用了此功能: Imgproc.circle()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM