使用OpenCV从IP摄像机检测面部

时间:2019-06-20 07:03:35

标签: python opencv dlib

我正在尝试使用IP摄像机通过192.168.1.36:8080 url通过opencv(python)检测面部。我可以完美地连接到移动摄像机(Ip摄像机),但是openCV无法检测到面部。 当我使用便携式相机时,除了使用Ip相机外,其他一切都很好,我无法检测到脸部。 这是我的代码:

import dlib
import cv2

detector = dlib.get_frontal_face_detector()
cam = cv2.VideoCapture("http://192.168.1.40:8080")
color_green = (0,255,0)
line_width = 3
while True:
    ret_val, img = cam.read()
    # rgb_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    dets = detector(img)
    for det in dets:
        cv2.rectangle(img,(det.left(), det.top()), (det.right(), det.bottom()), color_green, line_width)
    cv2.imshow('my webcam', img)
    if cv2.waitKey(1) == 27:
        break  # esc to quit
cv2.destroyAllWindows()

我收到此错误:

  

回溯(最近通话最近):文件   “ /home/nima-s-h/PycharmProjects/FaceRecoUsingDlib/FaceDetector.py”,   第14行       cv2.imshow('frame',frame)cv2.error:OpenCV(4.1.0)/io/opencv/modules/highgui/src/window.cpp:352:错误:(-215:断言   失败)函数'imshow'中的size.width> 0 && size.height> 0

1 个答案:

答案 0 :(得分:0)

尝试此地址:

package com.example.munaseribrahimewallet;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import org.w3c.dom.Text;

public class PaypalDB extends AppCompatActivity {

    private Button btnPaypalLogin;
    private EditText editPaypalLogin;
    private TextView temail, thomeAddress, tcountry, tcompanyName, tcompanyAddress, tzipcode, tdate, tname, tpaypalEmail;
    Member member;
    DatabaseReference reff;
    String memail, mhomeAddress, mcountry, mcompanyName, mcompanyAddress, mzipcode, mdate, mname, mpaypalEmail, mid;
    long maxid = 0;



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

        reff = FirebaseDatabase.getInstance().getReference("Members");

        editPaypalLogin = (EditText) findViewById(R.id.editPaypalLogin);
        btnPaypalLogin = (Button) findViewById(R.id.btnPaypalLogin);

        temail= (TextView) findViewById(R.id.txtemail);
        thomeAddress= (TextView) findViewById(R.id.txthomeaddress);
        tcountry= (TextView) findViewById(R.id.txtcountry);
        tcompanyName= (TextView) findViewById(R.id.txtcompanyname);
        tzipcode= (TextView) findViewById(R.id.txtzipcode);
        tdate= (TextView) findViewById(R.id.txtdate);
        tname= (TextView) findViewById(R.id.txtname);
        tcompanyAddress = (TextView) findViewById(R.id.txtcompany);


        reff = FirebaseDatabase.getInstance().getReference().child("Member");
        reff.addValueEventListener(
                new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists())
                            maxid = (dataSnapshot.getChildrenCount());
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }



                });
        btnPaypalLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Bundle extras = getIntent().getExtras();
                memail = extras.getString("EXTRA_EMAIL");


                mhomeAddress = extras.getString("EXTRA_HOMEADDRESS");
                mcountry = extras.getString("EXTRA_SPINNERCOUNTRYTEXT");
                mcompanyName = extras.getString("EXTRA_COMPANYNAME");
                mcompanyAddress = extras.getString("EXTRA_COMPANYADDRESS");
                mzipcode = extras.getString("EXTRA_ZIPCODE");
                mdate = extras.getString("EXTRA_DATE");
                mname = extras.getString("EXTRA_NAME");


                mpaypalEmail = editPaypalLogin.getText().toString();

                tcompanyAddress.setText(mcompanyAddress);
                tname.setText(mname);

                mid = reff.push().getKey();

                DatabaseReference dR = FirebaseDatabase.getInstance().getReference("Member").child(mid);

                reff.child(mid).setValue(member);
                member = new Member(mid, memail, mdate, mhomeAddress, mcountry, mcompanyName, mcompanyAddress, mzipcode, mpaypalEmail, mname);
                dR.setValue(member);
            }

        });
    }
}

代替

http://192.168.1.40:8080/abc.mjpg