Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.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 如何使用Chaquopy和openCV打开android摄像头?_Python_Android_Opencv_Camera_Chaquopy - Fatal编程技术网

Python 如何使用Chaquopy和openCV打开android摄像头?

Python 如何使用Chaquopy和openCV打开android摄像头?,python,android,opencv,camera,chaquopy,Python,Android,Opencv,Camera,Chaquopy,我为一个图像识别任务执行python代码,它工作得很好,但当我使用Chaquopy将其实现到android应用程序中时,它就不工作了。这是因为python代码中的第一个指令旨在使用此指令cap=cv2打开相机。videoCapture(0)和此指令在android设备上不起作用。 我还在androidManifest.xml中添加了相机和存储权限 这是我的Java代码: public class MainActivity extends AppCompatActivity { @Overri

我为一个图像识别任务执行python代码,它工作得很好,但当我使用Chaquopy将其实现到android应用程序中时,它就不工作了。这是因为python代码中的第一个指令旨在使用此指令cap=cv2打开相机。videoCapture(0)和此指令在android设备上不起作用。 我还在androidManifest.xml中添加了相机和存储权限 这是我的Java代码:

public class MainActivity extends AppCompatActivity  {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (! Python.isStarted()) {
        Python.start(new AndroidPlatform(this));
    }

    Python py = Python.getInstance();
    PyObject pym =py.getModule("MyPythonClass");

}
这是python代码(类的名称是MyPythonClass.py):

将numpy导入为np
从skimage.transform导入金字塔
从imutils.object\u detection导入非最大值抑制
导入imutils
从skimage.feature导入
从sklearn.externals导入作业库
从脱脂进口颜色
将matplotlib.pyplot作为plt导入
导入操作系统
导入glob
从imutils.video导入视频流
从imutils.video导入FPS
将numpy作为np导入
导入argparse
导入时间
进口cv2
min_wdw_sz=[68124]
步长=[10,10]
方向=9
每单元像素数=[6,6]
每个块的单元数=[2,2]
可视化=错误
正常化=真
阈值=.3
clf=joblib.load(os.path.join('/storage/emulated/0/Download/','svm.model'))
def滑动窗口(图像、窗口大小、步长大小):
对于范围内的y(0,image.shape[0],步长[1]):
对于范围内的x(0,image.shape[1],步长[0]):
产量(x,y,图像[y:y+窗口大小[1],x:x+窗口大小[0]]
网络摄像头=cv2.VideoCapture(0)
#循环播放视频流中的帧
尽管如此:
ret,frame=webcam.read()
im=imutils.resize(frame,width=min(300,frame.shape[1]))
orig=im.copy()
min_wdw_sz=(64128)
步长=(10,10)
缩尺=1.25
#用于存储检测结果的列表
检测=[]
#图像的当前比例
比例=0
对于以金字塔为单位缩放的im(im,缩尺=缩尺):
#该列表包含当前比例下的检测
如果im_scaled.shape[0]1:
检测。附加((int(x*(缩尺**比例)),int(y*(缩尺**比例)),clf.决策函数(fd),
int(最小wdw_sz[0]*(缩尺**比例)),
int(min_wdw_sz[1]*(缩尺**比例)))
比例+=1
clone=im.copy()
#循环检测
对于检测中的(x_tl,y_tl,u,w,h):
cv2.矩形(im,(x_tl,y_tl),(x_tl+w,y_tl+h),(0,255,0),厚度=2)
rects=np.数组([[x,y,x+w,y+h]用于检测中的(x,y,w,h)])
sc=[检测中(x,y,score,w,h)的分数[0]
sc=np.数组(sc)
拾取=非最大抑制(矩形、probs=sc、重叠阈值=0.3)
#打印“形状”,拾取.shape
对于pick中的(xA,yA,xB,yB):
矩形(克隆,(xA,yA),(xB,yB),(0,45,255),2)
#显示输出帧
cv2.imshow(“帧”,克隆)
这就是日志显示的错误:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{com........MainActivity}: com.chaquo.python.PyException: AttributeError: 'NoneType' object has no attribute 'shape'
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
        at android.app.ActivityThread.access$1100(ActivityThread.java:229)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7325)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: com.chaquo.python.PyException: AttributeError: 'NoneType' object has no attribute 'shape'
        at <python>.<module>(/android_asset/chaquopy/app.zip/MyPythonClass.py:44)
java.lang.RuntimeException:无法启动activity ComponentInfo{com…….MainActivity}:com.chaquo.python.PyException:AttributeError:'NoneType'对象没有属性'shape'
位于android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)上
在android.app.ActivityThread.access$1100(ActivityThread.java:229)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:7325)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
原因:com.chaquo.python.PyException:AttributeError:“非类型”对象没有属性“形状”
位于。(/android_asset/chaquopy/app.zip/MyPythonClass.py:44)
编辑:

在手机中授予权限(存储和摄像头)。 以及:第19版 targetSdkVersion 28
compilesdkversion28

我认为OpenCV对原生Android摄像头API有一定的支持,但在当前的Chaquopy版本中显然不起作用。正如您在中所发现的,最简单的解决方法是用Java捕获图像,然后将其作为字节数组传输到Python。

您所说的“不工作”是什么意思?您在logcat中是否收到任何异常或错误消息?如果是这样,请将其添加到问题中。@mhsmith上述代码没有显示任何内容(没有打开摄像头,也没有要检测的帧),我将列出python类的全部代码以及logcat的内容shows@mhsmith我已经将所有python代码添加到logcat错误中
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com........MainActivity}: com.chaquo.python.PyException: AttributeError: 'NoneType' object has no attribute 'shape'
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
        at android.app.ActivityThread.access$1100(ActivityThread.java:229)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7325)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: com.chaquo.python.PyException: AttributeError: 'NoneType' object has no attribute 'shape'
        at <python>.<module>(/android_asset/chaquopy/app.zip/MyPythonClass.py:44)