Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python代码(opencv)到java(android)的端口_Java_Android_Python_Opencv_Image Processing - Fatal编程技术网

从python代码(opencv)到java(android)的端口

从python代码(opencv)到java(android)的端口,java,android,python,opencv,image-processing,Java,Android,Python,Opencv,Image Processing,我正在尝试将我的python代码(用于opencv图像处理)翻译成android 这是我的python代码 image=cv2.imread(“x.jpg”) 灰色=cv2.CVT颜色(图像,cv2.COLOR\u BGR2GRAY) 模糊=cv2.高斯模糊(灰色,(5,5,0) 边缘=cv2.Canny(模糊,200,50) cv2.imwrite(“eded.jpg”,带边框) cnts=cv2.findContentours(edge.copy(),cv2.RETR_EXTERNAL, c

我正在尝试将我的python代码(用于opencv图像处理)翻译成android

这是我的python代码

image=cv2.imread(“x.jpg”)
灰色=cv2.CVT颜色(图像,cv2.COLOR\u BGR2GRAY)
模糊=cv2.高斯模糊(灰色,(5,5,0)
边缘=cv2.Canny(模糊,200,50)
cv2.imwrite(“eded.jpg”,带边框)
cnts=cv2.findContentours(edge.copy(),cv2.RETR_EXTERNAL,
cv2.链条(近似简单)
cnts=imutils.GRAP_轮廓(cnts)
cnts=已排序(cnts,key=cv2.contourArea,reverse=True)
displayCnt=None
印刷品(透镜(碳纳米管))
#在轮廓上打圈
对于碳纳米管中的碳:
#近似轮廓
peri=cv2.弧长(c,真)
近似值=cv2.近似聚合度(c,0.02*peri,真)
#如果轮廓有四个顶点,那么我们发现
#恒温器显示器
如果len(近似值)=4:
displayCnt=近似值
打破
输出=四点变换(图像,显示,重塑(4,2))
这是我的java代码

Imgproc.cvtColor(src,src,Imgproc.COLOR\u BGRA2GRAY);
GaussianBlur(src,src,新尺寸(5,5),0);
Imgproc.Canny(src,src,50200);
列表等高线=新的ArrayList();
Mat层次结构=新Mat();
Imgproc.findContours(src、等高线、层次、Imgproc.RETR\u外部、Imgproc.CHAIN\u近似\u简单);
hierarchy.release();
sortContoursByArea(等高线);
对于(int c=0;c
这是我经过一些处理后的图像

边缘图像:

(看起来不错)

这是我在python中得到的(这是必需的输出)和在java中得到的

结果

如何在java中获得相同的结果

编辑

matofpoints中=新的MatOfPoint(approxCurve.toArray())
我使用了
points.dump()
,我发现这4个点位于正确的位置

我的问题在这里

Rect Rect=Imgproc.boundingRect(点);
src=新材料(src2,rect);
我觉得它试图用x,y,宽度,高度来创建一个正方形,但事实并非如此!
如何使用四个MatOfPoint点坐标裁剪图像?

能否确认您是否使用相同的OpenCV版本用于Python和Android?如果是,则尝试
Imgproc.cvtColor(src,src,Imgproc.COLOR\u RGBA2GRAY)在Android的情况下。对于
BGR
RGB
image,灰色输出是不同的。python中的opencv是v4(我编写代码所遵循的教程是关于v3的)和android 3.4.3(更高的可用i thing)!更改cvtColor没有任何作用,我认为问题出在内部!然后你需要在每一步调试输出。我调试过了,请参阅我文章中的编辑