opencv库类在flutter中不工作

3htmauhk  于 2022-12-30  发布在  Flutter
关注(0)|答案(1)|浏览(280)

我正在尝试使用opencv创建一个检测对象移动的应用程序,但是opencv类不起作用
example =没有为类型“_MyAppState”定义方法“CvCameraPreview”。请尝试使用现有方法的名称修复该名称,或定义名为“CvCameraPreview”的方法,
未定义类“CvMat”。请尝试将名称更改为现有类的名称,或创建一个名为“CvMat”的类。
未定义的名称“COLOR_RGBA2GRAY”。请尝试将该名称更正为已定义的名称,或定义该名称。
未定义的名称“THRESH_BINARY”。请尝试将该名称更正为已定义的名称,或定义该名称。

import 'dart:math';
 import 'package:flutter/material.dart';
 import 'package:opencv/opencv.dart';

void main() => runApp(MyApp());

 class MyApp extends StatefulWidget {
  @override
 _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
   CvCameraController? _camera;
   CvMat? _previousFrame;
   bool _motionDetected = false;

 @override
 void initState() {
 super.initState();
_camera = CvCameraController(
   camera: 0,
   width: 1280,
   height: 720,
 );
 _camera.initialize().then(() {
    if (!mounted) {
   return;
  }
   setState(() {});
    _camera.startImageStream((image) {
       final currentFrame = image.clone();
     if (_previousFrame == null) {
       _previousFrame = currentFrame;
    return;
   }
   final diff = currentFrame.absdiff(_previousFrame);
   final gray = diff.cvtColor(COLOR_RGBA2GRAY);
   final blur = gray.gaussianBlur(Size(5, 5), 0);
   final thresh = blur.threshold(20, 255, THRESH_BINARY);
   final dilated = thresh.dilate(null, 3);
   final contours = dilated.findContours();
   for (final contour in contours) {
     final (x, y, w, h) = contour.boundingRect;
    if (contour.contourArea < 900) {
           continue;
    }
       currentFrame.rectangle(Point(x, y), Point(x + w, y + h), Scalar(0, 255, 0), 2);
   }
   if (contours.isNotEmpty) {
        _motionDetected = true;
  } else {
     _motionDetected = false;

   }
   _previousFrame = currentFrame;

    if (_motionDetected) {

      print('Hareket tespit edildi!');

    }
   });
  });
  }

 @override
 void dispose() {
    _camera?.dispose();
    super.dispose();
 }

  Widget build(BuildContext context) {
  if (_camera == null || !_camera.value.isInitialized) {
     return Container();
  }
  return Scaffold(
    body: CvCameraPreview(_camera),
    );
   }
  }

这是我pubspec.yaml文件

name: proje_nesne_takip
    description: A new Flutter project.

    # The following line prevents the package from being accidentally published to
    # pub.dev using `flutter pub publish`. This is preferred for private packages.
    publish_to: 'none' # Remove this line if you wish to publish to pub.dev

    # The following defines the version and build number for your application.
    # A version number is three numbers separated by dots, like 1.2.43
    # followed by an optional build number separated by a +.
    # Both the version and the builder number may be overridden in flutter
    # build by specifying --build-name and --build-number, respectively.
    # In Android, build-name is used as versionName while 
    build-number used as versionCode.
    # Read more about Android versioning at 
    https://developer.android.com/studio/publish/versioning
    # In iOS, build-name is used as CFBundleShortVersionString 
    while build-number is used as 
    CFBundleVersion.
    # Read more about iOS versioning at
    # 
    https://developer.apple.com/library/archive/documentation/General/Reference
    /InfoPlistKeyReference/Articles/CoreFoundationKeys.html
    # In Windows, build-name is used as the major, minor, and patch parts
    # of the product and file versions while build-number is used as the build suffix.
    version: 1.0.0+1

   environment:
     sdk: '>=2.18.2 <3.0.0'

   # Dependencies specify other packages that your package needs in order to work.
   # To automatically upgrade your package dependencies to the latest versions
   # consider running `flutter pub upgrade --major-versions`. Alternatively,
   # dependencies can be manually updated by changing the version numbers below to
   # the latest version available on pub.dev. To see which dependencies have newer
   # versions available, run `flutter pub outdated`.
  dependencies:
    camera_camera: ^2.0.2

  flutter:
    sdk: flutter
      opencv: ^1.0.4



   # The following adds the Cupertino Icons font to your application.
   # Use with the CupertinoIcons class for iOS style icons.


  dev_dependencies:
    flutter_test:
       sdk: flutter


  # The "flutter_lints" package below contains a set of recommended lints to
  # encourage good coding practices. The lint set provided by the package is
  # activated in the `analysis_options.yaml` file located at the root of your
  # package. See that file for information about deactivating specific lint
  # rules and activating additional ones.

  # For information on the generic Dart part of this file, see the
  # following page: https://dart.dev/tools/pub/pubspec

  # The following section is specific to Flutter packages.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  # assets:
  #   - images/a_dot_burr.jpeg
  #   - images/a_dot_ham.jpeg

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages
tv6aics1

tv6aics11#

在您的pubspec.yaml中,'opencv'应该位于依赖项下:

dependencies:
  camera_camera: ^2.0.2
  opencv: ^1.0.4

flutter:
  sdk: flutter

边注:opencv包已经过时,不支持可靠的空安全。如果编译时使用空安全,则应使用opencv_4

相关问题