Commit 53f3c5e8 authored by 林生雨's avatar 林生雨

提交

parent a680c565
No preview for this file type
...@@ -4,8 +4,12 @@ ...@@ -4,8 +4,12 @@
**/ **/
import 'dart:ui' as ui; import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
import 'package:flutter/src/gestures/drag_details.dart';
class PointItem { class PointItem {
List<ui.Offset> list = new List(); List<ui.Offset> list = new List();
List<ui.Offset> tempList = new List();
ui.Image image; ui.Image image;
double x = -1; double x = -1;
double y = -1; double y = -1;
...@@ -13,6 +17,11 @@ class PointItem { ...@@ -13,6 +17,11 @@ class PointItem {
double tranX = 0; double tranX = 0;
double tranY = 0; double tranY = 0;
bool drawPath = false; bool drawPath = false;
bool rectModel = false;
bool isDown = false;
ui.Rect rect = new Rect.fromLTRB(100, 100, 200, 200);
ui.Rect rectTemp = new Rect.fromLTRB(100, 100, 200, 200);
double downX, downY;
void reset() { void reset() {
list.clear(); list.clear();
...@@ -22,6 +31,7 @@ class PointItem { ...@@ -22,6 +31,7 @@ class PointItem {
tranY = 0; tranY = 0;
tranX = 0; tranX = 0;
drawPath = false; drawPath = false;
rect = new Rect.fromLTRB(100, 100, 200, 200);
} }
PointItem(); PointItem();
...@@ -64,12 +74,18 @@ class PointItem { ...@@ -64,12 +74,18 @@ class PointItem {
} }
addPoint(double x, double y) { addPoint(double x, double y) {
double realX = (x + getTranX()) / scareSize; if (rectModel) {
double realY = (y + getTranY()) / scareSize; return;
}
double realX = (x / scareSize + getTranX());
double realY = (y / scareSize + getTranY());
list.add(new ui.Offset(realX, realY)); list.add(new ui.Offset(realX, realY));
} }
removePoint() { removePoint() {
if (rectModel) {
return;
}
if (list.isNotEmpty) { if (list.isNotEmpty) {
list.removeAt(list.length - 1); list.removeAt(list.length - 1);
drawPath = false; drawPath = false;
...@@ -101,9 +117,113 @@ class PointItem { ...@@ -101,9 +117,113 @@ class PointItem {
} }
void close() { void close() {
if (rectModel) {
return;
}
if (list.isNotEmpty && list.length > 2) { if (list.isNotEmpty && list.length > 2) {
list.add(list[0]); list.add(list[0]);
drawPath = true; drawPath = true;
} }
} }
void drag(DragUpdateDetails details, double startTranX, double dragStartX,
double startTranY, double dragStartY, bool dragMark) {
double diffX = (details.localPosition.dx - dragStartX) / scareSize;
double diffY = (details.localPosition.dy - dragStartY) / scareSize;
bool pkWin = true;
if (drawPath && dragMark && isDown) {
pkWin = false;
list.clear();
for (int i = 0; i < tempList.length; i++) {
list.add(Offset(tempList[i].dx + diffX, tempList[i].dy + diffY));
}
print(
"TRAN ${(details.localPosition.dx - dragStartX)} ${(details.localPosition.dy - dragStartY)}");
}
//rectModel && scareSize == 1 ||
//&& scareSize != 1
if (rectModel && isDown) {
print(" ${downX} ${downY} ${rectTemp.left} ${rectTemp.top}");
//drag item
if (downX > rectTemp.left + 5 &&
downX < rectTemp.right - 5 &&
downY > rectTemp.top + 5 &&
downY < rectTemp.bottom - 5) {
pkWin = false;
rect = new Rect.fromLTRB(rectTemp.left + diffX, rectTemp.top + diffY,
rectTemp.right + diffX, rectTemp.bottom + diffY);
}
//left TOP
if (downX > rectTemp.left - 5 &&
downX < rectTemp.left + 5 &&
downY > rectTemp.top - 5 &&
downY < rectTemp.top + 5) {
pkWin = false;
double left = rectTemp.left + diffX;
double right = rectTemp.right;
double top = rectTemp.top + diffY;
double bottom = rectTemp.bottom;
if (rectTemp.left + diffX + 10 >= rectTemp.right) {
right = rectTemp.left + diffX + 10;
}
if (rectTemp.top + diffY + 10 >= rectTemp.bottom) {
bottom = rectTemp.top + diffY + 10;
}
rect = new Rect.fromLTRB(left, top, right, bottom);
}
if ((downX) > (rectTemp.right - 5) &&
(downX) < (rectTemp.right + 5) &&
(downY) > (rectTemp.bottom - 5) &&
(downY) < (rectTemp.bottom + 5)) {
pkWin = false;
//right bottom
double left = (rectTemp.left);
double right = (rectTemp.right + diffX);
double top = (rectTemp.top);
double bottom = (rectTemp.bottom + diffY);
if ((rectTemp.right + diffX - 10) <= (rectTemp.left)) {
left = (right - 10);
}
if ((rectTemp.bottom + diffY - 10) <= (rectTemp.top)) {
top = (bottom - 10);
}
rect = new Rect.fromLTRB(left, top, right, bottom);
}
}
if (pkWin && scareSize != 1) {
setTranX(
startTranX - (details.localPosition.dx - dragStartX) / scareSize);
setTranY(
startTranY - (details.localPosition.dy - dragStartY) / scareSize);
}
}
double getRealPosX(double pos) {
return (pos / scareSize + getTranX());
}
double getRealPosY(double pos) {
return pos / scareSize + getTranY();
}
void down(double tapStartX, double tapStartY, bool dragMask) {
isDown = true;
if (rectModel) {
downX = getRealPosX(tapStartX);
downY = getRealPosY(tapStartY);
rectTemp = new Rect.fromLTRB(
(rect.left), (rect.top), (rect.right), (rect.bottom));
}
if (drawPath) {
tempList = [];
tempList.addAll(list);
}
}
void dragEnd(DragEndDetails details) {
isDown = false;
}
} }
...@@ -9,52 +9,14 @@ import 'package:example_flutter/HomeModel/base/bean/PointItem.dart'; ...@@ -9,52 +9,14 @@ import 'package:example_flutter/HomeModel/base/bean/PointItem.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'dart:ui' as ui; import 'dart:ui' as ui;
// import 'package:flutter_animation_set/animator.dart';
//class WorkViewController extends StatefulWidget {
// @override
// State<StatefulWidget> createState() => WorkViewState();
//}
//
//class WorkViewState extends State<WorkViewController> {
// ui.Image img;
//
// @override
// void initState() {
// super.initState();
// String testImg =
// "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1574413347096&di=44b91b322281ad449b4d93cf79df3d0c&imgtype=0&src=http%3A%2F%2Fpic27.nipic.com%2F20130324%2F9252150_152129329000_2.jpg";
// loadImage(testImg).then((value) {
// setState(() {
// img = value;
// });
// });
// }
//
// @override
// Widget build(BuildContext context) {
// return CustomPaint(painter: WorkView(img));
// }
//
// Future<ui.Image> loadImage(var path) async {
// ImageStream stream = NetworkImage(
// path,
// ).resolve(ImageConfiguration.empty);
// Completer<ui.Image> completer = Completer<ui.Image>();
// void listener(ImageInfo frame, bool synchronousCall) {
// final ui.Image image = frame.image as ui.Image;
// completer.complete(image);
// stream.removeListener(ImageStreamListener(listener));
// }
//
// stream.addListener(ImageStreamListener(listener));
// return completer.future;
// }
//}
class WorkView extends CustomPainter { class WorkView extends CustomPainter {
PointItem item; PointItem item;
Function(double value, double topBuf, double topAdd) call;
Path path;
WorkView(this.item) {} WorkView(this.item, this.call) {}
Paint ImagePaint = new Paint()..isAntiAlias = true; Paint ImagePaint = new Paint()..isAntiAlias = true;
Paint linePaint = new Paint() Paint linePaint = new Paint()
..isAntiAlias = true ..isAntiAlias = true
...@@ -71,28 +33,43 @@ class WorkView extends CustomPainter { ...@@ -71,28 +33,43 @@ class WorkView extends CustomPainter {
..color = Colors.black38 ..color = Colors.black38
..style = PaintingStyle.fill; ..style = PaintingStyle.fill;
Paint circlePaint = new Paint()
..isAntiAlias = true
..color = Colors.redAccent
..style = PaintingStyle.fill;
Paint rectPaint = new Paint()
..isAntiAlias = true
..color = Colors.blue
..style = PaintingStyle.stroke
..strokeWidth = 2;
@override @override
void paint(Canvas canvas, Size size) { void paint(Canvas canvas, Size size) {
if (item.scareSize != 1) {
canvas.scale(item.scareSize, item.scareSize);
}
if (item.tranX != 0 || item.tranY != 0) { if (item.tranX != 0 || item.tranY != 0) {
if (item.tranX / item.scareSize > size.width) { if (item.tranX + size.width / item.scareSize > size.width) {
item.tranX = size.width * item.scareSize; item.tranX = size.width - size.width / item.scareSize;
} }
if (item.tranY / item.scareSize > size.height) { if (item.tranY + size.height / item.scareSize > size.height) {
item.tranY = size.height * item.scareSize; item.tranY = size.height - size.height / item.scareSize;
} }
canvas.translate(-item.tranX, -item.tranY); canvas.translate(-item.tranX, -item.tranY);
} }
if (item.scareSize != 1) {
canvas.scale(item.scareSize, item.scareSize);
}
if (item.getImage() != null) { if (item.getImage() != null) {
double scareSize = item.getImage().width / size.width; double scareSize = item.getImage().width / size.width;
double showWidth = size.width; double showWidth = size.width;
double showheight = item.getImage().height / scareSize; double showheight = item.getImage().height / scareSize;
double top;
if (showheight > size.height) { if (showheight > size.height) {
showheight = size.height; // showheight = size.height;
} // top=(showheight-size.height)/2;
double top = (size.height - showheight) / 2; } else {}
top = (size.height - showheight) / 2;
call(scareSize, top, (size.height - showheight) / 2);
canvas.drawImageRect( canvas.drawImageRect(
item.getImage(), item.getImage(),
Rect.fromLTWH(0.0, 0.0, item.getImage().width.toDouble(), Rect.fromLTWH(0.0, 0.0, item.getImage().width.toDouble(),
...@@ -100,8 +77,11 @@ class WorkView extends CustomPainter { ...@@ -100,8 +77,11 @@ class WorkView extends CustomPainter {
Rect.fromLTWH(0, top, showWidth, showheight), Rect.fromLTWH(0, top, showWidth, showheight),
ImagePaint); ImagePaint);
} }
double newX = (item.getX() + item.getTranX()) / item.scareSize; // double newX = (item.getX() + item.getTranX()) / item.scareSize;
double newY = (item.getY() + item.getTranY()) / item.scareSize; double newX = (item.getX() / item.scareSize + item.getTranX());
// double newY = (item.getY() + item.getTranY()) / item.scareSize;
double newY = (item.getY() / item.scareSize + item.getTranY());
if (item.getX() != null && if (item.getX() != null &&
item.getY() != null && item.getY() != null &&
item.getX() >= 0 && item.getX() >= 0 &&
...@@ -120,37 +100,38 @@ class WorkView extends CustomPainter { ...@@ -120,37 +100,38 @@ class WorkView extends CustomPainter {
..layout(maxWidth: 150, minWidth: 30) ..layout(maxWidth: 150, minWidth: 30)
..paint(canvas, Offset(newX + 5, newY - 20)); ..paint(canvas, Offset(newX + 5, newY - 20));
} }
if (item.getPoints().isNotEmpty) { if (item.rectModel) {
// if(item.getPoints().length==1){ canvas.drawRect(item.rect, rectPaint);
// canvas.drawPoints(pointMode, points, paint) canvas.drawRect(item.rect, pathPaint);
// }else if(item.getPoints().length==2){ canvas.drawCircle(Offset(item.rect.left, item.rect.top), 5, circlePaint);
// canvas.drawCircle(
// } else{ Offset(item.rect.right, item.rect.bottom), 5, circlePaint);
// for(int i=0;i<item.getPoints().length;i++){ } else {
// if(i==item.getPoints().length-1){ if (item.getPoints().isNotEmpty) {
// canvas.drawPoints(PointMode.polygon, item.getPoints(), pointPaint);
// }else{
//
// }
// }
// }
canvas.drawPoints(PointMode.polygon, item.getPoints(), pointPaint);
}
print("OK?? ${item.drawPath}");
if (item.drawPath) {
if (item.getPoints().length < 2) {
return;
} }
Path path = new Path(); if (item.drawPath) {
path.moveTo(item.getPoints()[0].dx, item.getPoints()[0].dy); if (item.getPoints().length < 2) {
for (int i = 0; i < item.getPoints().length; i++) { return;
path.lineTo(item.getPoints()[i].dx, item.getPoints()[i].dy); }
path = new Path();
path.moveTo(item.getPoints()[0].dx, item.getPoints()[0].dy);
for (int i = 0; i < item.getPoints().length; i++) {
path.lineTo(item.getPoints()[i].dx, item.getPoints()[i].dy);
}
path.close();
canvas.drawPath(path, pathPaint);
} }
path.close();
canvas.drawPath(path, pathPaint);
} }
} }
bool calutePath(Offset offset) {
if (path != null) {
return path.contains(offset);
}
return false;
}
@override @override
bool shouldRepaint(CustomPainter oldDelegate) { bool shouldRepaint(CustomPainter oldDelegate) {
return true; return true;
......
...@@ -21,6 +21,8 @@ import 'package:flutter/material.dart'; ...@@ -21,6 +21,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_animation_set/animator.dart'; import 'package:flutter_animation_set/animator.dart';
class WorkModel extends BaseModel { class WorkModel extends BaseModel {
LiveData<bool> rectMaskLive = new LiveData();
LiveData<String> maskTabLive = new LiveData();
LiveData<PointItem> pointLive = new LiveData(); LiveData<PointItem> pointLive = new LiveData();
LiveData<List<int>> nowIndexLive = new LiveData(); LiveData<List<int>> nowIndexLive = new LiveData();
LiveData<Map<String, List<List<String>>>> selectLive = new LiveData(); LiveData<Map<String, List<List<String>>>> selectLive = new LiveData();
...@@ -403,6 +405,8 @@ class WorkModel extends BaseModel { ...@@ -403,6 +405,8 @@ class WorkModel extends BaseModel {
@override @override
void dispose() { void dispose() {
rectMaskLive.dispost();
maskTabLive.dispost();
pointLive.dispost(); pointLive.dispost();
nowIndexLive.dispost(); nowIndexLive.dispost();
tabLive.dispost(); tabLive.dispost();
...@@ -565,20 +569,89 @@ class WorkModel extends BaseModel { ...@@ -565,20 +569,89 @@ class WorkModel extends BaseModel {
}); });
} }
void saveDrawImage(
BuildContext context, double picScare, double topBuf, double topAdd) {
if (maskTabLive.data == null) {
Toast.show(context, "得选着一个标签哦");
return;
}
print("SCARE ===== >>>>> $picScare");
if (pointItem.list.isEmpty) {
Toast.show(context, "还没有标记数据哦~");
return;
}
BaseCenterPicker()
..setPicker(BaseLoadingItem("保存中..."))
..show(context);
List<int> uploadList = [];
pointItem.list.forEach((off) {
uploadList.add((off.dx * picScare).toInt());
if (topAdd > 0) {
uploadList.add(((off.dy + topAdd) * picScare).toInt());
} else {
uploadList.add(((off.dy - topBuf) * picScare).toInt());
}
});
if (uploadList.isNotEmpty) {
getTempDirX(context, (dir) {
var savePath = "${dir}/${DateTime.now().millisecondsSinceEpoch}.jpeg";
DioUtil()
.getDio()
.download(_repo.getCurrentPageList()[currentIndex].picurl, savePath)
.whenComplete(() {
String uploadPath =
"${dir}/sign${DateTime.now().millisecondsSinceEpoch}.jpeg";
toImage(uploadList, uploadPath, savePath).whenComplete(() {
File(savePath).delete();
HomeRepo.getInstance()
.maskImage(uploadPath, imageId, maskExplain[maskTabLive.data],
listToUi(pointItem.list))
.listen((value) {
if (value != null) {
Toast.show(context, "保存成功");
Navigator.pop(context);
File(uploadPath).delete();
Navigator.pop(context);
}
}).onError((error) {
Toast.show(context, error.toString());
print(error.toString());
Navigator.pop(context);
});
// String realUploadPath =
// "${dir}/mask${DateTime.now().millisecondsSinceEpoch}.png";
// opencvMethod(uploadPath, realUploadPath).whenComplete(() {
// print("!!!!!!!! ${uploadPath} ${realUploadPath}");
// Navigator.pop(context);
// }).catchError((error) {
// print(error.toString());
// });
}).catchError((error) {
Navigator.pop(context);
Toast.show(context, "保存失败");
print(error.toString());
});
});
});
}
}
void saveImage(BuildContext context) { void saveImage(BuildContext context) {
Toast.show(context, "开始保存图片"); Toast.show(context, "开始保存");
getTempDir().then((value) { getTempDir().then((value) {
if (value != null) { if (value != null) {
print(value); print(value);
DioUtil().getDio().download(_repo.getCurrentPageList()[currentIndex].picurl, var savePath = "${value}/${DateTime.now().millisecondsSinceEpoch}.jpeg";
"${value}/${DateTime.now().millisecondsSinceEpoch}.jpeg", DioUtil()
onReceiveProgress: (int count, int total) { .getDio()
.download(_repo.getCurrentPageList()[currentIndex].picurl, savePath,
onReceiveProgress: (int count, int total) {
//进度 //进度
// Toast.show(context, "进度!! $count $total"); // Toast.show(context, "进度!! $count $total");
print("进度!! $count $total"); print("进度!! $count $total");
}).then((value) { }).then((value) {
Toast.show(context, "下载完成"); Toast.show(context, "下载完成");
print("OKKK "); print("OKKK " + savePath);
openCachce(); openCachce();
}).catchError((error) { }).catchError((error) {
Toast.show(context, error.toString()); Toast.show(context, error.toString());
...@@ -595,7 +668,9 @@ class WorkModel extends BaseModel { ...@@ -595,7 +668,9 @@ class WorkModel extends BaseModel {
} }
void getNetWorkImg(BuildContext context) { void getNetWorkImg(BuildContext context) {
loadNetWorkImage(_repo.getCurrentPageList()[currentIndex].picurl).then((value) { rectMaskLive.notifyView(pointItem.rectModel);
loadNetWorkImage(_repo.getCurrentPageList()[currentIndex].picurl)
.then((value) {
pointItem.reset(); pointItem.reset();
pointItem.setImage(value); pointItem.setImage(value);
pointLive.notifyView(pointItem); pointLive.notifyView(pointItem);
...@@ -608,6 +683,49 @@ class WorkModel extends BaseModel { ...@@ -608,6 +683,49 @@ class WorkModel extends BaseModel {
void syncPoint() { void syncPoint() {
pointLive.notifyView(pointItem); pointLive.notifyView(pointItem);
} }
void showMaskTabSelect(BuildContext context) {
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
List<Widget> list = new List();
maskTabList.forEach((value) {
list.add(new ListTile(
leading: new Icon(Icons.select_all),
title: new Text(value),
onTap: () async {
Navigator.pop(context);
maskTabLive.notifyView(value);
},
));
});
return new Column(mainAxisSize: MainAxisSize.min, children: list);
});
}
void getMaskedImage(BuildContext context) {
if (maskTabLive.data == null) {
Toast.show(context, "还没有选中标签哦~");
return;
}
BaseCenterPicker()
..setPicker(BaseLoadingItem("加载中..."))
..show(context);
HomeRepo.getInstance()
.getMaskInfo(imageId, maskExplain[maskTabLive.data])
.listen((value) {
if (value != null && value.ui != null && value.ui.isNotEmpty) {
pointItem.list = uiToList(value.ui);
pointItem.drawPath = true;
syncPoint();
}
Navigator.pop(context);
}).onError((error) {
Toast.show(context, error.toString());
print(error.toString());
Navigator.pop(context);
});
}
} }
class SurePicker implements ICenterPicker { class SurePicker implements ICenterPicker {
......
...@@ -39,9 +39,14 @@ class WorkState extends State<WorkPage> { ...@@ -39,9 +39,14 @@ class WorkState extends State<WorkPage> {
double tabHeadHeight; double tabHeadHeight;
double rightAllWidth; double rightAllWidth;
double rightTitleHeight; double rightTitleHeight;
double picScareSize;
double topBuf;
double topAdd;
final String url; final String url;
double dragStartX, dragStartY, startTranX, startTranY; double dragStartX, dragStartY, startTranX, startTranY;
double tapStartX, tapStartY; double tapStartX, tapStartY;
bool dragMask;
WorkView workItem;
WorkState(this.url, int id, int currentIndex) { WorkState(this.url, int id, int currentIndex) {
_model = new WorkModel(id, currentIndex); _model = new WorkModel(id, currentIndex);
...@@ -145,21 +150,28 @@ class WorkState extends State<WorkPage> { ...@@ -145,21 +150,28 @@ class WorkState extends State<WorkPage> {
if (data.data == null) { if (data.data == null) {
return Container(); return Container();
} }
workItem = WorkView(_model.pointItem, (scareSize, top, topA) {
picScareSize = scareSize;
topBuf = top;
topAdd = topA;
});
return GestureDetector( return GestureDetector(
onVerticalDragDown: (details) { onVerticalDragDown: (details) {
// print(
// "DOWN ${details.localPosition.dx} ${details.localPosition.dy}"
// " ${_model.pointItem.getX()} ${_model.pointItem.getY()}"
// " ${tapStartX} ${tapStartY}");
startTranX = _model.pointItem.tranX; startTranX = _model.pointItem.tranX;
startTranY = _model.pointItem.tranY; startTranY = _model.pointItem.tranY;
dragStartX = details.localPosition.dx; dragStartX = details.localPosition.dx;
dragStartY = details.localPosition.dy; dragStartY = details.localPosition.dy;
}, },
onVerticalDragEnd: (details) {
_model.pointItem.dragEnd(details);
},
onVerticalDragUpdate: (details) { onVerticalDragUpdate: (details) {
if (_model.pointItem.scareSize == 1) { _model.pointItem.drag(details, startTranX, dragStartX,
return; startTranY, dragStartY, dragMask);
}
_model.pointItem.setTranX(startTranX -
(details.localPosition.dx - dragStartX));
_model.pointItem.setTranY(startTranY -
(details.localPosition.dy - dragStartY));
_model.syncPoint(); _model.syncPoint();
}, },
onTap: () { onTap: () {
...@@ -169,6 +181,9 @@ class WorkState extends State<WorkPage> { ...@@ -169,6 +181,9 @@ class WorkState extends State<WorkPage> {
onTapDown: (details) { onTapDown: (details) {
tapStartX = details.localPosition.dx; tapStartX = details.localPosition.dx;
tapStartY = details.localPosition.dy; tapStartY = details.localPosition.dy;
dragMask =
workItem.calutePath(Offset(tapStartX, tapStartY));
_model.pointItem.down(tapStartX, tapStartY, dragMask);
print("gesture onTap down"); print("gesture onTap down");
}, },
// onDoubleTap: () { // onDoubleTap: () {
...@@ -188,17 +203,92 @@ class WorkState extends State<WorkPage> { ...@@ -188,17 +203,92 @@ class WorkState extends State<WorkPage> {
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: double.maxFinite, height: double.maxFinite,
child: CustomPaint(painter: WorkView(_model.pointItem)), child: CustomPaint(painter: workItem),
))); )));
}, },
), ),
Positioned(
left: 0,
top: 50,
child: Container(
width: double.maxFinite,
height: 30,
color: Colors.blueGrey,
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
StreamBuilder<bool>(
stream: _model.rectMaskLive.stream,
initialData: _model.rectMaskLive.data,
builder: (con, data) {
if (data.data == null) {
return Container();
}
return Row(
children: <Widget>[
Container(
margin: EdgeInsets.only(left: 16),
child: baseText("点标记", 15, Colors.white),
),
Switch(
value: _model.pointItem.rectModel,
activeColor: Colors.blue,
onChanged: (value) {
_model.pointItem.rectModel = value;
_model.syncPoint();
_model.rectMaskLive.notifyView(value);
},
),
Container(
child: baseText("拉框标记", 15, Colors.white),
),
],
);
},
),
Container(
margin: EdgeInsets.only(left: 16),
child: FlatButton(
onPressed: () {
_model.showMaskTabSelect(context);
},
child: Container(
height: double.maxFinite,
alignment: Alignment.center,
color: Colors.amberAccent,
child: baseText("选取标签", 15, Colors.white),
),
),
),
Expanded(
child: Container(
alignment: Alignment.centerLeft,
width: double.maxFinite,
height: double.maxFinite,
child: StreamBuilder(
stream: _model.maskTabLive.stream,
initialData: _model.maskTabLive.data,
builder: (con, data) {
if (data.data == null) {
return baseText("还没有选着标签哦", 15, Colors.white);
}
return baseText(
"选着的标签:${data.data}", 15, Colors.white);
},
),
),
),
],
),
),
),
Container( Container(
width: double.maxFinite, width: double.maxFinite,
height: double.maxFinite, height: double.maxFinite,
alignment: Alignment.topCenter, alignment: Alignment.topCenter,
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: 80, height: 50,
color: Colors.black54, color: Colors.black54,
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
...@@ -229,6 +319,21 @@ class WorkState extends State<WorkPage> { ...@@ -229,6 +319,21 @@ class WorkState extends State<WorkPage> {
), ),
), ),
), ),
Expanded(
child: FlatButton(
onPressed: () {
_model.pointItem.reset();
_model.syncPoint();
},
child: Container(
color: Colors.green,
width: double.maxFinite,
height: double.maxFinite,
alignment: Alignment.center,
child: baseText("清除所有", 15, Colors.white),
),
),
),
Expanded( Expanded(
child: FlatButton( child: FlatButton(
onPressed: () { onPressed: () {
...@@ -240,12 +345,12 @@ class WorkState extends State<WorkPage> { ...@@ -240,12 +345,12 @@ class WorkState extends State<WorkPage> {
width: double.maxFinite, width: double.maxFinite,
height: double.maxFinite, height: double.maxFinite,
alignment: Alignment.center, alignment: Alignment.center,
child: baseText("撤销标记", 15, Colors.white), child: baseText("撤销一步", 15, Colors.white),
), ),
), ),
), ),
Expanded( Expanded(
child: FlatButton( child: FlatButton(
onPressed: () { onPressed: () {
if (_model.pointItem.scareSize == 1) { if (_model.pointItem.scareSize == 1) {
_model.pointItem.setScareSize(3); _model.pointItem.setScareSize(3);
...@@ -263,7 +368,7 @@ class WorkState extends State<WorkPage> { ...@@ -263,7 +368,7 @@ class WorkState extends State<WorkPage> {
}, },
child: Container( child: Container(
width: double.maxFinite, width: double.maxFinite,
height: double.maxFinite, height: double.maxFinite,
color: Colors.yellow, color: Colors.yellow,
alignment: Alignment.center, alignment: Alignment.center,
child: baseText("放大&缩小", 15, Colors.white), child: baseText("放大&缩小", 15, Colors.white),
...@@ -273,7 +378,20 @@ class WorkState extends State<WorkPage> { ...@@ -273,7 +378,20 @@ class WorkState extends State<WorkPage> {
Expanded( Expanded(
child: FlatButton( child: FlatButton(
onPressed: () { onPressed: () {
_model.saveImage(context); _model.getMaskedImage(context);
},
child: Container(
color: Colors.purple,
alignment: Alignment.center,
child: baseText("获取历史标记结果", 15, Colors.white),
),
),
),
Expanded(
child: FlatButton(
onPressed: () {
_model.saveDrawImage(
context, picScareSize, topBuf, topAdd);
}, },
child: Container( child: Container(
color: Colors.pink, color: Colors.pink,
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
* @date 2019-11-14 * @date 2019-11-14
**/ **/
import 'package:flutter/cupertino.dart';
const String TEST_IMAGES = """ const String TEST_IMAGES = """
{ {
"pic_list": [ "pic_list": [
...@@ -265,3 +267,33 @@ const Map<String, String> EXPLAN = { ...@@ -265,3 +267,33 @@ const Map<String, String> EXPLAN = {
"brows_spacing": "两眉间距", "brows_spacing": "两眉间距",
"face": "脸型", "face": "脸型",
}; };
const List<String> maskTabList = ["左双眼皮", "右双眼皮"];
const Map<String, String> maskExplain = {
"左双眼皮": "left_eyelid",
"右双眼皮": "right_eyelid"
};
List<Offset> uiToList(String string) {
var split = string.split(":");
List<Offset> list = [];
for (int i = 0; i < split.length; i += 2) {
list.add(Offset(
int.parse(split[i]).toDouble(), int.parse(split[i + 1]).toDouble()));
}
return list;
}
String listToUi(List<Offset> list) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < list.length; i++) {
stringBuffer.write("${list[i].dx.toInt()}");
stringBuffer.write(":");
stringBuffer.write("${list[i].dy.toInt()}");
if (i != list.length - 1) {
stringBuffer.write(":");
}
}
return stringBuffer.toString();
}
...@@ -3,13 +3,16 @@ ...@@ -3,13 +3,16 @@
* @date 2019-11-07 * @date 2019-11-07
**/ **/
import 'dart:convert'; import 'dart:convert';
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:example_flutter/HomeModel/page/work/temp.dart'; import 'package:example_flutter/HomeModel/page/work/temp.dart';
import 'package:example_flutter/HomeModel/service/remote/api/HomeApi.serv.dart'; import 'package:example_flutter/HomeModel/service/remote/api/HomeApi.serv.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/AllTabBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/AllTabBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/DeleteResultBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/DeleteResultBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/ImageAiBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/ImageAiBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/ImageResultBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/ImageResultBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/MaskResultBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/PutImageDataBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/PutImageDataBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/TotalImageBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/TotalImageBean.dart';
import 'package:example_flutter/HomeModel/service/remote/entity/UploadResultBean.dart'; import 'package:example_flutter/HomeModel/service/remote/entity/UploadResultBean.dart';
...@@ -87,8 +90,45 @@ class HomeRepo { ...@@ -87,8 +90,45 @@ class HomeRepo {
.flatMap((value) { .flatMap((value) {
if (value != null && if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) { (value.statusCode >= 200 && value.statusCode < 300)) {
return Observable.fromFuture(compute(parsePutImageBean, value.toString())); return Observable.fromFuture(
compute(parsePutImageBean, value.toString()));
} else {
return Observable.fromFuture(null);
}
});
}
Observable<MaskResultBean> maskImage(
String path, int id, String tag, String ui) {
var name = path.substring(path.lastIndexOf("/") + 1, path.length);
FormData formData = new FormData.from({
"file": new UploadFileInfo(new File(path), name),
"tag": tag,
"ui": ui
});
return Observable.fromFuture(DioUtil.getInstance()
.getDio()
.post('maskimages/${id}/', data: formData))
.flatMap((value) {
if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) {
return Observable.fromFuture(
compute(parseMaskResult, value.toString()));
} else {
return Observable.fromFuture(null);
}
});
}
Observable<MaskResultBean> getMaskInfo(int id, String tag) {
return Observable.fromFuture(DioUtil.getInstance()
.getDio()
.get('maskimages/${id}/', queryParameters: {"tag": tag}))
.flatMap((value) {
if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) {
return Observable.fromFuture(
compute(parseMaskResult, value.toString()));
} else { } else {
return Observable.fromFuture(null); return Observable.fromFuture(null);
} }
...@@ -101,7 +141,8 @@ class HomeRepo { ...@@ -101,7 +141,8 @@ class HomeRepo {
.flatMap((value) { .flatMap((value) {
if (value != null && if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) { (value.statusCode >= 200 && value.statusCode < 300)) {
return Observable.fromFuture(compute(parseDeleteResult, value.toString())); return Observable.fromFuture(
compute(parseDeleteResult, value.toString()));
} else { } else {
return Observable.fromFuture(null); return Observable.fromFuture(null);
} }
...@@ -123,6 +164,10 @@ DeleteResultBean parseDeleteResult(String value) { ...@@ -123,6 +164,10 @@ DeleteResultBean parseDeleteResult(String value) {
return DeleteResultBean.fromJson(json.decode(value)); return DeleteResultBean.fromJson(json.decode(value));
} }
PutImageDataBean parsePutImageBean(String value){ PutImageDataBean parsePutImageBean(String value) {
return PutImageDataBean.fromJson(json.decode(value)); return PutImageDataBean.fromJson(json.decode(value));
} }
MaskResultBean parseMaskResult(String value) {
return MaskResultBean.fromJson(json.decode(value));
}
/*
* @author lsy
* @date 2019-11-27
**/
class MaskResultBean {
String picurl;
int otherid;
String tag;
String ui;
MaskResultBean({this.picurl, this.otherid, this.tag, this.ui});
MaskResultBean.fromJson(Map<String, dynamic> json) {
picurl = json['picurl'];
otherid = json['otherid'];
tag = json['tag'];
ui = json['ui'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['picurl'] = this.picurl;
data['otherid'] = this.otherid;
data['tag'] = this.tag;
data['ui'] = this.ui;
return data;
}
}
\ No newline at end of file
...@@ -46,6 +46,7 @@ class LoginState extends State<LoginPage> { ...@@ -46,6 +46,7 @@ class LoginState extends State<LoginPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Stack( body: Stack(
alignment : AlignmentDirectional.topCenter,
children: <Widget>[ children: <Widget>[
ConstrainedBox( ConstrainedBox(
constraints: BoxConstraints.expand(), constraints: BoxConstraints.expand(),
...@@ -56,7 +57,23 @@ class LoginState extends State<LoginPage> { ...@@ -56,7 +57,23 @@ class LoginState extends State<LoginPage> {
fit: BoxFit.cover, fit: BoxFit.cover,
)), )),
), ),
main() main(),
// Positioned(
// child: Container(
// height: 60,
// alignment: Alignment.center,
// child: FlatButton(
// onPressed: (){
// openCachce();
// },
// child: Container(
// padding: EdgeInsets.all(10),
// color: Colors.black,
// child: baseText("请把opencv.sh 和 opencv.py 移动到打开的目标文件夹下!! 点我打开目标文件夹", 15, Colors.redAccent),
// ),
// ),
// ),
// ),
], ],
)); ));
} }
......
...@@ -3,19 +3,44 @@ ...@@ -3,19 +3,44 @@
* @date 2019-10-13 * @date 2019-10-13
**/ **/
import 'package:example_flutter/commonModel/toast/toast.dart';
import 'package:example_flutter/res/value/ALColors.dart'; import 'package:example_flutter/res/value/ALColors.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
MethodChannel channel=new MethodChannel("plugins.flutter.io/path_provider"); MethodChannel channel = new MethodChannel("plugins.flutter.io/path_provider");
MethodChannel opencv = new MethodChannel("lsyyy");
Future getTempDir(){ Future getTempDir() {
return channel.invokeMethod("getTemporaryDirectory"); return channel.invokeMethod("getTemporaryDirectory");
} }
Future openCachce(){ void getTempDirX(BuildContext context, Function(String dir) f) {
getTempDir().then((value) {
f(value);
}).catchError((error) {
Toast.show(context, error.toString());
print(error.toString());
});
}
Future<String> toImage(List<int> arr, String path, String needPath) {
return channel.invokeMethod(
"toImage", {"path": path, "list": arr, "needPath": needPath});
}
Future<String> opencvMethod(String readPath, String writePath) {
return channel.invokeMethod("opencvImg", [readPath, writePath]);
}
Future<String> toImageTest(List<int> arr, String path, String needPath) {
return channel.invokeMethod(
"toImageTest", {"path": path, "list": arr, "needPath": needPath});
}
Future openCachce() {
return channel.invokeMethod("openCache"); return channel.invokeMethod("openCache");
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// limitations under the License. // limitations under the License.
import 'package:example_flutter/Annotations/RouterCenterRestore.mark.dart'; import 'package:example_flutter/Annotations/RouterCenterRestore.mark.dart';
import 'package:example_flutter/commonModel/base/BaseComponent.dart';
import 'package:flutter/foundation.dart' import 'package:flutter/foundation.dart'
show debugDefaultTargetPlatformOverride; show debugDefaultTargetPlatformOverride;
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -31,7 +32,7 @@ class MyApp extends StatelessWidget { ...@@ -31,7 +32,7 @@ class MyApp extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MaterialApp( return MaterialApp(
showSemanticsDebugger: false, showSemanticsDebugger: false,
title: 'Flutter Demo', title: 'Flutter Demo',
theme: ThemeData( theme: ThemeData(
primarySwatch: Colors.blue, primarySwatch: Colors.blue,
......
...@@ -21,6 +21,62 @@ ...@@ -21,6 +21,62 @@
/* End PBXAggregateTarget section */ /* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
183FB03A238D09880011D0AB /* MyPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 183FB039238D09880011D0AB /* MyPlugin.swift */; };
183FB042238D10EE0011D0AB /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 183FB041238D10EE0011D0AB /* AVFoundation.framework */; };
183FB044238D10F50011D0AB /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 183FB043238D10F50011D0AB /* CoreImage.framework */; };
183FB048238D11020011D0AB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 183FB047238D11020011D0AB /* CoreGraphics.framework */; };
183FB04A238D11090011D0AB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 183FB049238D11090011D0AB /* QuartzCore.framework */; };
183FB04C238D11100011D0AB /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 183FB04B238D11100011D0AB /* Accelerate.framework */; };
183FB04E238D207E0011D0AB /* Cv.mm in Sources */ = {isa = PBXBuildFile; fileRef = 183FB04D238D207E0011D0AB /* Cv.mm */; };
18C61B4F238E1E470098E1C1 /* libopencv_aruco.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B33238E1E300098E1C1 /* libopencv_aruco.4.1.2.dylib */; };
18C61B50238E1E550098E1C1 /* libopencv_bgsegm.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B45238E1E310098E1C1 /* libopencv_bgsegm.4.1.2.dylib */; };
18C61B51238E1E820098E1C1 /* libopencv_calib3d.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B46238E1E310098E1C1 /* libopencv_calib3d.4.1.2.dylib */; };
18C61B52238E1E820098E1C1 /* libopencv_bioinspired.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B14238E1E2F0098E1C1 /* libopencv_bioinspired.4.1.2.dylib */; };
18C61B53238E1E820098E1C1 /* libopencv_ccalib.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AF2238E1E2E0098E1C1 /* libopencv_ccalib.4.1.2.dylib */; };
18C61B54238E1E820098E1C1 /* libopencv_core.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B1E238E1E2F0098E1C1 /* libopencv_core.4.1.2.dylib */; };
18C61B55238E1E820098E1C1 /* libopencv_datasets.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AE9238E1E2E0098E1C1 /* libopencv_datasets.4.1.2.dylib */; };
18C61B56238E1E820098E1C1 /* libopencv_dnn_objdetect.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B4E238E1E310098E1C1 /* libopencv_dnn_objdetect.4.1.2.dylib */; };
18C61B57238E1E820098E1C1 /* libopencv_dnn_superres.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B2F238E1E300098E1C1 /* libopencv_dnn_superres.4.1.2.dylib */; };
18C61B58238E1E820098E1C1 /* libopencv_dnn.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B04238E1E2E0098E1C1 /* libopencv_dnn.4.1.2.dylib */; };
18C61B59238E1E820098E1C1 /* libopencv_dpm.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B15238E1E2F0098E1C1 /* libopencv_dpm.4.1.2.dylib */; };
18C61B5A238E1E820098E1C1 /* libopencv_face.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B3E238E1E300098E1C1 /* libopencv_face.4.1.2.dylib */; };
18C61B5B238E1E820098E1C1 /* libopencv_features2d.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B2E238E1E300098E1C1 /* libopencv_features2d.4.1.2.dylib */; };
18C61B5C238E1E820098E1C1 /* libopencv_flann.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B07238E1E2E0098E1C1 /* libopencv_flann.4.1.2.dylib */; };
18C61B5D238E1E820098E1C1 /* libopencv_freetype.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61ACD238E1E2D0098E1C1 /* libopencv_freetype.4.1.2.dylib */; };
18C61B5E238E1E820098E1C1 /* libopencv_fuzzy.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B03238E1E2E0098E1C1 /* libopencv_fuzzy.4.1.2.dylib */; };
18C61B5F238E1E820098E1C1 /* libopencv_hfs.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B2B238E1E2F0098E1C1 /* libopencv_hfs.4.1.2.dylib */; };
18C61B60238E1E820098E1C1 /* libopencv_gapi.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B13238E1E2F0098E1C1 /* libopencv_gapi.4.1.2.dylib */; };
18C61B61238E1E820098E1C1 /* libopencv_highgui.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B23238E1E2F0098E1C1 /* libopencv_highgui.4.1.2.dylib */; };
18C61B62238E1E820098E1C1 /* libopencv_img_hash.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B3F238E1E300098E1C1 /* libopencv_img_hash.4.1.2.dylib */; };
18C61B63238E1EDB0098E1C1 /* libopencv_xphoto.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AEA238E1E2E0098E1C1 /* libopencv_xphoto.4.1.2.dylib */; };
18C61B64238E1EDB0098E1C1 /* libopencv_ximgproc.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B35238E1E300098E1C1 /* libopencv_ximgproc.4.1.2.dylib */; };
18C61B65238E1EDB0098E1C1 /* libopencv_xobjdetect.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B1A238E1E2F0098E1C1 /* libopencv_xobjdetect.4.1.2.dylib */; };
18C61B66238E1EDB0098E1C1 /* libopencv_xfeatures2d.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AEE238E1E2E0098E1C1 /* libopencv_xfeatures2d.4.1.2.dylib */; };
18C61B67238E1EDB0098E1C1 /* libopencv_videostab.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B12238E1E2F0098E1C1 /* libopencv_videostab.4.1.2.dylib */; };
18C61B68238E1EDB0098E1C1 /* libopencv_videoio.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B34238E1E300098E1C1 /* libopencv_videoio.4.1.2.dylib */; };
18C61B69238E1EDB0098E1C1 /* libopencv_tracking.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AD9238E1E2D0098E1C1 /* libopencv_tracking.4.1.2.dylib */; };
18C61B6A238E1EDB0098E1C1 /* libopencv_video.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AF3238E1E2E0098E1C1 /* libopencv_video.4.1.2.dylib */; };
18C61B6B238E1EDB0098E1C1 /* libopencv_text.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AFE238E1E2E0098E1C1 /* libopencv_text.4.1.2.dylib */; };
18C61B6C238E1EDB0098E1C1 /* libopencv_surface_matching.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B48238E1E310098E1C1 /* libopencv_surface_matching.4.1.2.dylib */; };
18C61B6D238E1EDB0098E1C1 /* libopencv_superres.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B21238E1E2F0098E1C1 /* libopencv_superres.4.1.2.dylib */; };
18C61B6E238E1EDB0098E1C1 /* libopencv_structured_light.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B1F238E1E2F0098E1C1 /* libopencv_structured_light.4.1.2.dylib */; };
18C61B6F238E1EDB0098E1C1 /* libopencv_stitching.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B2D238E1E300098E1C1 /* libopencv_stitching.4.1.2.dylib */; };
18C61B70238E1EDB0098E1C1 /* libopencv_stereo.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B43238E1E310098E1C1 /* libopencv_stereo.4.1.2.dylib */; };
18C61B71238E1EDB0098E1C1 /* libopencv_shape.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61ADA238E1E2D0098E1C1 /* libopencv_shape.4.1.2.dylib */; };
18C61B72238E1EDB0098E1C1 /* libopencv_sfm.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B1C238E1E2F0098E1C1 /* libopencv_sfm.4.1.2.dylib */; };
18C61B73238E1EDB0098E1C1 /* libopencv_rgbd.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B2C238E1E300098E1C1 /* libopencv_rgbd.4.1.2.dylib */; };
18C61B74238E1EDB0098E1C1 /* libopencv_saliency.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AEC238E1E2E0098E1C1 /* libopencv_saliency.4.1.2.dylib */; };
18C61B75238E1EDB0098E1C1 /* libopencv_reg.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AD7238E1E2D0098E1C1 /* libopencv_reg.4.1.2.dylib */; };
18C61B76238E1EDB0098E1C1 /* libopencv_quality.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AFF238E1E2E0098E1C1 /* libopencv_quality.4.1.2.dylib */; };
18C61B77238E1EDB0098E1C1 /* libopencv_plot.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61ADE238E1E2E0098E1C1 /* libopencv_plot.4.1.2.dylib */; };
18C61B78238E1EDB0098E1C1 /* libopencv_photo.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AD5238E1E2D0098E1C1 /* libopencv_photo.4.1.2.dylib */; };
18C61B79238E1EDB0098E1C1 /* libopencv_phase_unwrapping.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61AF0238E1E2E0098E1C1 /* libopencv_phase_unwrapping.4.1.2.dylib */; };
18C61B7A238E1EDB0098E1C1 /* libopencv_optflow.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B42238E1E310098E1C1 /* libopencv_optflow.4.1.2.dylib */; };
18C61B7B238E1EDB0098E1C1 /* libopencv_objdetect.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B3D238E1E300098E1C1 /* libopencv_objdetect.4.1.2.dylib */; };
18C61B7C238E1EDB0098E1C1 /* libopencv_ml.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61ACC238E1E2D0098E1C1 /* libopencv_ml.4.1.2.dylib */; };
18C61B7D238E1EDB0098E1C1 /* libopencv_line_descriptor.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B1B238E1E2F0098E1C1 /* libopencv_line_descriptor.4.1.2.dylib */; };
18C61B7E238E1EDB0098E1C1 /* libopencv_imgproc.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B02238E1E2E0098E1C1 /* libopencv_imgproc.4.1.2.dylib */; };
18C61B7F238E1EDB0098E1C1 /* libopencv_imgcodecs.4.1.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 18C61B32238E1E300098E1C1 /* libopencv_imgcodecs.4.1.2.dylib */; };
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
...@@ -59,6 +115,141 @@ ...@@ -59,6 +115,141 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
183FB039238D09880011D0AB /* MyPlugin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyPlugin.swift; sourceTree = "<group>"; };
183FB03D238D0D180011D0AB /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
183FB041238D10EE0011D0AB /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
183FB043238D10F50011D0AB /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
183FB045238D10FC0011D0AB /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
183FB047238D11020011D0AB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
183FB049238D11090011D0AB /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
183FB04B238D11100011D0AB /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
183FB04D238D207E0011D0AB /* Cv.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Cv.mm; sourceTree = "<group>"; };
183FB04F238D20870011D0AB /* Cv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cv.h; sourceTree = "<group>"; };
18C61AC9238E1E2D0098E1C1 /* libopencv_highgui.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_highgui.a; path = ../../../aar/opencv/libopencv_highgui.a; sourceTree = "<group>"; };
18C61ACA238E1E2D0098E1C1 /* libopencv_img_hash.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_img_hash.a; path = ../../../aar/opencv/libopencv_img_hash.a; sourceTree = "<group>"; };
18C61ACB238E1E2D0098E1C1 /* liblibjpeg-turbo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "liblibjpeg-turbo.a"; path = "../../../aar/opencv/liblibjpeg-turbo.a"; sourceTree = "<group>"; };
18C61ACC238E1E2D0098E1C1 /* libopencv_ml.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_ml.4.1.2.dylib; path = ../../../aar/opencv/libopencv_ml.4.1.2.dylib; sourceTree = "<group>"; };
18C61ACD238E1E2D0098E1C1 /* libopencv_freetype.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_freetype.4.1.2.dylib; path = ../../../aar/opencv/libopencv_freetype.4.1.2.dylib; sourceTree = "<group>"; };
18C61ACE238E1E2D0098E1C1 /* libopencv_features2d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_features2d.a; path = ../../../aar/opencv/libopencv_features2d.a; sourceTree = "<group>"; };
18C61ACF238E1E2D0098E1C1 /* libopencv_objdetect.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_objdetect.a; path = ../../../aar/opencv/libopencv_objdetect.a; sourceTree = "<group>"; };
18C61AD0238E1E2D0098E1C1 /* libopencv_reg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_reg.a; path = ../../../aar/opencv/libopencv_reg.a; sourceTree = "<group>"; };
18C61AD1238E1E2D0098E1C1 /* libopencv_shape.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_shape.a; path = ../../../aar/opencv/libopencv_shape.a; sourceTree = "<group>"; };
18C61AD2238E1E2D0098E1C1 /* libopencv_freetype.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_freetype.a; path = ../../../aar/opencv/libopencv_freetype.a; sourceTree = "<group>"; };
18C61AD3238E1E2D0098E1C1 /* libopencv_dnn.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_dnn.a; path = ../../../aar/opencv/libopencv_dnn.a; sourceTree = "<group>"; };
18C61AD4238E1E2D0098E1C1 /* libopencv_surface_matching.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_surface_matching.a; path = ../../../aar/opencv/libopencv_surface_matching.a; sourceTree = "<group>"; };
18C61AD5238E1E2D0098E1C1 /* libopencv_photo.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_photo.4.1.2.dylib; path = ../../../aar/opencv/libopencv_photo.4.1.2.dylib; sourceTree = "<group>"; };
18C61AD6238E1E2D0098E1C1 /* libsimple_pipeline.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsimple_pipeline.a; path = ../../../aar/opencv/libsimple_pipeline.a; sourceTree = "<group>"; };
18C61AD7238E1E2D0098E1C1 /* libopencv_reg.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_reg.4.1.2.dylib; path = ../../../aar/opencv/libopencv_reg.4.1.2.dylib; sourceTree = "<group>"; };
18C61AD8238E1E2D0098E1C1 /* libopencv_tracking.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_tracking.a; path = ../../../aar/opencv/libopencv_tracking.a; sourceTree = "<group>"; };
18C61AD9238E1E2D0098E1C1 /* libopencv_tracking.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_tracking.4.1.2.dylib; path = ../../../aar/opencv/libopencv_tracking.4.1.2.dylib; sourceTree = "<group>"; };
18C61ADA238E1E2D0098E1C1 /* libopencv_shape.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_shape.4.1.2.dylib; path = ../../../aar/opencv/libopencv_shape.4.1.2.dylib; sourceTree = "<group>"; };
18C61ADB238E1E2D0098E1C1 /* libopencv_ccalib.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_ccalib.a; path = ../../../aar/opencv/libopencv_ccalib.a; sourceTree = "<group>"; };
18C61ADC238E1E2E0098E1C1 /* libopencv_core.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_core.a; path = ../../../aar/opencv/libopencv_core.a; sourceTree = "<group>"; };
18C61ADD238E1E2E0098E1C1 /* libmultiview.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmultiview.a; path = ../../../aar/opencv/libmultiview.a; sourceTree = "<group>"; };
18C61ADE238E1E2E0098E1C1 /* libopencv_plot.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_plot.4.1.2.dylib; path = ../../../aar/opencv/libopencv_plot.4.1.2.dylib; sourceTree = "<group>"; };
18C61AE3238E1E2E0098E1C1 /* cv2.cpython-37m-darwin.so */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.bundle"; path = "cv2.cpython-37m-darwin.so"; sourceTree = "<group>"; };
18C61AE4238E1E2E0098E1C1 /* config.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = config.py; sourceTree = "<group>"; };
18C61AE5238E1E2E0098E1C1 /* __init__.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = __init__.py; sourceTree = "<group>"; };
18C61AE6238E1E2E0098E1C1 /* load_config_py3.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = load_config_py3.py; sourceTree = "<group>"; };
18C61AE7238E1E2E0098E1C1 /* load_config_py2.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = load_config_py2.py; sourceTree = "<group>"; };
18C61AE8238E1E2E0098E1C1 /* config-3.7.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = "config-3.7.py"; sourceTree = "<group>"; };
18C61AE9238E1E2E0098E1C1 /* libopencv_datasets.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_datasets.4.1.2.dylib; path = ../../../aar/opencv/libopencv_datasets.4.1.2.dylib; sourceTree = "<group>"; };
18C61AEA238E1E2E0098E1C1 /* libopencv_xphoto.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_xphoto.4.1.2.dylib; path = ../../../aar/opencv/libopencv_xphoto.4.1.2.dylib; sourceTree = "<group>"; };
18C61AEB238E1E2E0098E1C1 /* libippicv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libippicv.a; path = ../../../aar/opencv/libippicv.a; sourceTree = "<group>"; };
18C61AEC238E1E2E0098E1C1 /* libopencv_saliency.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_saliency.4.1.2.dylib; path = ../../../aar/opencv/libopencv_saliency.4.1.2.dylib; sourceTree = "<group>"; };
18C61AED238E1E2E0098E1C1 /* libopencv_plot.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_plot.a; path = ../../../aar/opencv/libopencv_plot.a; sourceTree = "<group>"; };
18C61AEE238E1E2E0098E1C1 /* libopencv_xfeatures2d.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_xfeatures2d.4.1.2.dylib; path = ../../../aar/opencv/libopencv_xfeatures2d.4.1.2.dylib; sourceTree = "<group>"; };
18C61AEF238E1E2E0098E1C1 /* libopencv_bioinspired.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_bioinspired.a; path = ../../../aar/opencv/libopencv_bioinspired.a; sourceTree = "<group>"; };
18C61AF0238E1E2E0098E1C1 /* libopencv_phase_unwrapping.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_phase_unwrapping.4.1.2.dylib; path = ../../../aar/opencv/libopencv_phase_unwrapping.4.1.2.dylib; sourceTree = "<group>"; };
18C61AF1238E1E2E0098E1C1 /* libittnotify.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libittnotify.a; path = ../../../aar/opencv/libittnotify.a; sourceTree = "<group>"; };
18C61AF2238E1E2E0098E1C1 /* libopencv_ccalib.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_ccalib.4.1.2.dylib; path = ../../../aar/opencv/libopencv_ccalib.4.1.2.dylib; sourceTree = "<group>"; };
18C61AF3238E1E2E0098E1C1 /* libopencv_video.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_video.4.1.2.dylib; path = ../../../aar/opencv/libopencv_video.4.1.2.dylib; sourceTree = "<group>"; };
18C61AF4238E1E2E0098E1C1 /* libnumeric.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libnumeric.a; path = ../../../aar/opencv/libnumeric.a; sourceTree = "<group>"; };
18C61AF5238E1E2E0098E1C1 /* libopencv_fuzzy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_fuzzy.a; path = ../../../aar/opencv/libopencv_fuzzy.a; sourceTree = "<group>"; };
18C61AF6238E1E2E0098E1C1 /* libopencv_rgbd.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_rgbd.a; path = ../../../aar/opencv/libopencv_rgbd.a; sourceTree = "<group>"; };
18C61AF7238E1E2E0098E1C1 /* libopencv_superres.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_superres.a; path = ../../../aar/opencv/libopencv_superres.a; sourceTree = "<group>"; };
18C61AFA238E1E2E0098E1C1 /* OpenCVModules-release.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "OpenCVModules-release.cmake"; sourceTree = "<group>"; };
18C61AFB238E1E2E0098E1C1 /* OpenCVConfig-version.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = "OpenCVConfig-version.cmake"; sourceTree = "<group>"; };
18C61AFC238E1E2E0098E1C1 /* OpenCVConfig.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = OpenCVConfig.cmake; sourceTree = "<group>"; };
18C61AFD238E1E2E0098E1C1 /* OpenCVModules.cmake */ = {isa = PBXFileReference; lastKnownFileType = text; path = OpenCVModules.cmake; sourceTree = "<group>"; };
18C61AFE238E1E2E0098E1C1 /* libopencv_text.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_text.4.1.2.dylib; path = ../../../aar/opencv/libopencv_text.4.1.2.dylib; sourceTree = "<group>"; };
18C61AFF238E1E2E0098E1C1 /* libopencv_quality.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_quality.4.1.2.dylib; path = ../../../aar/opencv/libopencv_quality.4.1.2.dylib; sourceTree = "<group>"; };
18C61B00238E1E2E0098E1C1 /* libippiw.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libippiw.a; path = ../../../aar/opencv/libippiw.a; sourceTree = "<group>"; };
18C61B01238E1E2E0098E1C1 /* libopencv_line_descriptor.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_line_descriptor.a; path = ../../../aar/opencv/libopencv_line_descriptor.a; sourceTree = "<group>"; };
18C61B02238E1E2E0098E1C1 /* libopencv_imgproc.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_imgproc.4.1.2.dylib; path = ../../../aar/opencv/libopencv_imgproc.4.1.2.dylib; sourceTree = "<group>"; };
18C61B03238E1E2E0098E1C1 /* libopencv_fuzzy.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_fuzzy.4.1.2.dylib; path = ../../../aar/opencv/libopencv_fuzzy.4.1.2.dylib; sourceTree = "<group>"; };
18C61B04238E1E2E0098E1C1 /* libopencv_dnn.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_dnn.4.1.2.dylib; path = ../../../aar/opencv/libopencv_dnn.4.1.2.dylib; sourceTree = "<group>"; };
18C61B05238E1E2E0098E1C1 /* libade.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libade.a; path = ../../../aar/opencv/libade.a; sourceTree = "<group>"; };
18C61B06238E1E2E0098E1C1 /* libopencv_optflow.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_optflow.a; path = ../../../aar/opencv/libopencv_optflow.a; sourceTree = "<group>"; };
18C61B07238E1E2E0098E1C1 /* libopencv_flann.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_flann.4.1.2.dylib; path = ../../../aar/opencv/libopencv_flann.4.1.2.dylib; sourceTree = "<group>"; };
18C61B08238E1E2E0098E1C1 /* libopencv_aruco.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_aruco.a; path = ../../../aar/opencv/libopencv_aruco.a; sourceTree = "<group>"; };
18C61B09238E1E2F0098E1C1 /* libopencv_video.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_video.a; path = ../../../aar/opencv/libopencv_video.a; sourceTree = "<group>"; };
18C61B0B238E1E2F0098E1C1 /* opencv4.pc */ = {isa = PBXFileReference; lastKnownFileType = text; path = opencv4.pc; sourceTree = "<group>"; };
18C61B0C238E1E2F0098E1C1 /* libopencv_dnn_superres.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_dnn_superres.a; path = ../../../aar/opencv/libopencv_dnn_superres.a; sourceTree = "<group>"; };
18C61B0D238E1E2F0098E1C1 /* liblibwebp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblibwebp.a; path = ../../../aar/opencv/liblibwebp.a; sourceTree = "<group>"; };
18C61B0E238E1E2F0098E1C1 /* libopencv_text.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_text.a; path = ../../../aar/opencv/libopencv_text.a; sourceTree = "<group>"; };
18C61B0F238E1E2F0098E1C1 /* libopencv_imgproc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_imgproc.a; path = ../../../aar/opencv/libopencv_imgproc.a; sourceTree = "<group>"; };
18C61B10238E1E2F0098E1C1 /* libopencv_xfeatures2d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_xfeatures2d.a; path = ../../../aar/opencv/libopencv_xfeatures2d.a; sourceTree = "<group>"; };
18C61B11238E1E2F0098E1C1 /* libopencv_phase_unwrapping.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_phase_unwrapping.a; path = ../../../aar/opencv/libopencv_phase_unwrapping.a; sourceTree = "<group>"; };
18C61B12238E1E2F0098E1C1 /* libopencv_videostab.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_videostab.4.1.2.dylib; path = ../../../aar/opencv/libopencv_videostab.4.1.2.dylib; sourceTree = "<group>"; };
18C61B13238E1E2F0098E1C1 /* libopencv_gapi.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_gapi.4.1.2.dylib; path = ../../../aar/opencv/libopencv_gapi.4.1.2.dylib; sourceTree = "<group>"; };
18C61B14238E1E2F0098E1C1 /* libopencv_bioinspired.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_bioinspired.4.1.2.dylib; path = ../../../aar/opencv/libopencv_bioinspired.4.1.2.dylib; sourceTree = "<group>"; };
18C61B15238E1E2F0098E1C1 /* libopencv_dpm.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_dpm.4.1.2.dylib; path = ../../../aar/opencv/libopencv_dpm.4.1.2.dylib; sourceTree = "<group>"; };
18C61B16238E1E2F0098E1C1 /* libopencv_photo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_photo.a; path = ../../../aar/opencv/libopencv_photo.a; sourceTree = "<group>"; };
18C61B17238E1E2F0098E1C1 /* libopencv_structured_light.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_structured_light.a; path = ../../../aar/opencv/libopencv_structured_light.a; sourceTree = "<group>"; };
18C61B18238E1E2F0098E1C1 /* libopencv_calib3d.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_calib3d.a; path = ../../../aar/opencv/libopencv_calib3d.a; sourceTree = "<group>"; };
18C61B19238E1E2F0098E1C1 /* libopencv_stitching.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_stitching.a; path = ../../../aar/opencv/libopencv_stitching.a; sourceTree = "<group>"; };
18C61B1A238E1E2F0098E1C1 /* libopencv_xobjdetect.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_xobjdetect.4.1.2.dylib; path = ../../../aar/opencv/libopencv_xobjdetect.4.1.2.dylib; sourceTree = "<group>"; };
18C61B1B238E1E2F0098E1C1 /* libopencv_line_descriptor.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_line_descriptor.4.1.2.dylib; path = ../../../aar/opencv/libopencv_line_descriptor.4.1.2.dylib; sourceTree = "<group>"; };
18C61B1C238E1E2F0098E1C1 /* libopencv_sfm.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_sfm.4.1.2.dylib; path = ../../../aar/opencv/libopencv_sfm.4.1.2.dylib; sourceTree = "<group>"; };
18C61B1D238E1E2F0098E1C1 /* libcorrespondence.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcorrespondence.a; path = ../../../aar/opencv/libcorrespondence.a; sourceTree = "<group>"; };
18C61B1E238E1E2F0098E1C1 /* libopencv_core.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_core.4.1.2.dylib; path = ../../../aar/opencv/libopencv_core.4.1.2.dylib; sourceTree = "<group>"; };
18C61B1F238E1E2F0098E1C1 /* libopencv_structured_light.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_structured_light.4.1.2.dylib; path = ../../../aar/opencv/libopencv_structured_light.4.1.2.dylib; sourceTree = "<group>"; };
18C61B20238E1E2F0098E1C1 /* libopencv_ml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_ml.a; path = ../../../aar/opencv/libopencv_ml.a; sourceTree = "<group>"; };
18C61B21238E1E2F0098E1C1 /* libopencv_superres.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_superres.4.1.2.dylib; path = ../../../aar/opencv/libopencv_superres.4.1.2.dylib; sourceTree = "<group>"; };
18C61B22238E1E2F0098E1C1 /* libopencv_videoio.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_videoio.a; path = ../../../aar/opencv/libopencv_videoio.a; sourceTree = "<group>"; };
18C61B23238E1E2F0098E1C1 /* libopencv_highgui.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_highgui.4.1.2.dylib; path = ../../../aar/opencv/libopencv_highgui.4.1.2.dylib; sourceTree = "<group>"; };
18C61B24238E1E2F0098E1C1 /* libquirc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquirc.a; path = ../../../aar/opencv/libquirc.a; sourceTree = "<group>"; };
18C61B27238E1E2F0098E1C1 /* libcorrespondence.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libcorrespondence.a; sourceTree = "<group>"; };
18C61B28238E1E2F0098E1C1 /* libsimple_pipeline.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libsimple_pipeline.a; sourceTree = "<group>"; };
18C61B29238E1E2F0098E1C1 /* libnumeric.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libnumeric.a; sourceTree = "<group>"; };
18C61B2A238E1E2F0098E1C1 /* libmultiview.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libmultiview.a; sourceTree = "<group>"; };
18C61B2B238E1E2F0098E1C1 /* libopencv_hfs.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_hfs.4.1.2.dylib; path = ../../../aar/opencv/libopencv_hfs.4.1.2.dylib; sourceTree = "<group>"; };
18C61B2C238E1E300098E1C1 /* libopencv_rgbd.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_rgbd.4.1.2.dylib; path = ../../../aar/opencv/libopencv_rgbd.4.1.2.dylib; sourceTree = "<group>"; };
18C61B2D238E1E300098E1C1 /* libopencv_stitching.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_stitching.4.1.2.dylib; path = ../../../aar/opencv/libopencv_stitching.4.1.2.dylib; sourceTree = "<group>"; };
18C61B2E238E1E300098E1C1 /* libopencv_features2d.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_features2d.4.1.2.dylib; path = ../../../aar/opencv/libopencv_features2d.4.1.2.dylib; sourceTree = "<group>"; };
18C61B2F238E1E300098E1C1 /* libopencv_dnn_superres.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_dnn_superres.4.1.2.dylib; path = ../../../aar/opencv/libopencv_dnn_superres.4.1.2.dylib; sourceTree = "<group>"; };
18C61B30238E1E300098E1C1 /* libopencv_datasets.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_datasets.a; path = ../../../aar/opencv/libopencv_datasets.a; sourceTree = "<group>"; };
18C61B31238E1E300098E1C1 /* libopencv_gapi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_gapi.a; path = ../../../aar/opencv/libopencv_gapi.a; sourceTree = "<group>"; };
18C61B32238E1E300098E1C1 /* libopencv_imgcodecs.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_imgcodecs.4.1.2.dylib; path = ../../../aar/opencv/libopencv_imgcodecs.4.1.2.dylib; sourceTree = "<group>"; };
18C61B33238E1E300098E1C1 /* libopencv_aruco.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_aruco.4.1.2.dylib; path = ../../../aar/opencv/libopencv_aruco.4.1.2.dylib; sourceTree = "<group>"; };
18C61B34238E1E300098E1C1 /* libopencv_videoio.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_videoio.4.1.2.dylib; path = ../../../aar/opencv/libopencv_videoio.4.1.2.dylib; sourceTree = "<group>"; };
18C61B35238E1E300098E1C1 /* libopencv_ximgproc.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_ximgproc.4.1.2.dylib; path = ../../../aar/opencv/libopencv_ximgproc.4.1.2.dylib; sourceTree = "<group>"; };
18C61B36238E1E300098E1C1 /* libopencv_videostab.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_videostab.a; path = ../../../aar/opencv/libopencv_videostab.a; sourceTree = "<group>"; };
18C61B37238E1E300098E1C1 /* libopencv_hfs.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_hfs.a; path = ../../../aar/opencv/libopencv_hfs.a; sourceTree = "<group>"; };
18C61B38238E1E300098E1C1 /* libopencv_sfm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_sfm.a; path = ../../../aar/opencv/libopencv_sfm.a; sourceTree = "<group>"; };
18C61B39238E1E300098E1C1 /* libopencv_ximgproc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_ximgproc.a; path = ../../../aar/opencv/libopencv_ximgproc.a; sourceTree = "<group>"; };
18C61B3A238E1E300098E1C1 /* libopencv_xobjdetect.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_xobjdetect.a; path = ../../../aar/opencv/libopencv_xobjdetect.a; sourceTree = "<group>"; };
18C61B3B238E1E300098E1C1 /* libopencv_dnn_objdetect.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_dnn_objdetect.a; path = ../../../aar/opencv/libopencv_dnn_objdetect.a; sourceTree = "<group>"; };
18C61B3C238E1E300098E1C1 /* libopencv_face.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_face.a; path = ../../../aar/opencv/libopencv_face.a; sourceTree = "<group>"; };
18C61B3D238E1E300098E1C1 /* libopencv_objdetect.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_objdetect.4.1.2.dylib; path = ../../../aar/opencv/libopencv_objdetect.4.1.2.dylib; sourceTree = "<group>"; };
18C61B3E238E1E300098E1C1 /* libopencv_face.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_face.4.1.2.dylib; path = ../../../aar/opencv/libopencv_face.4.1.2.dylib; sourceTree = "<group>"; };
18C61B3F238E1E300098E1C1 /* libopencv_img_hash.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_img_hash.4.1.2.dylib; path = ../../../aar/opencv/libopencv_img_hash.4.1.2.dylib; sourceTree = "<group>"; };
18C61B40238E1E310098E1C1 /* libopencv_flann.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_flann.a; path = ../../../aar/opencv/libopencv_flann.a; sourceTree = "<group>"; };
18C61B41238E1E310098E1C1 /* libopencv_imgcodecs.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_imgcodecs.a; path = ../../../aar/opencv/libopencv_imgcodecs.a; sourceTree = "<group>"; };
18C61B42238E1E310098E1C1 /* libopencv_optflow.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_optflow.4.1.2.dylib; path = ../../../aar/opencv/libopencv_optflow.4.1.2.dylib; sourceTree = "<group>"; };
18C61B43238E1E310098E1C1 /* libopencv_stereo.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_stereo.4.1.2.dylib; path = ../../../aar/opencv/libopencv_stereo.4.1.2.dylib; sourceTree = "<group>"; };
18C61B44238E1E310098E1C1 /* liblibprotobuf.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblibprotobuf.a; path = ../../../aar/opencv/liblibprotobuf.a; sourceTree = "<group>"; };
18C61B45238E1E310098E1C1 /* libopencv_bgsegm.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_bgsegm.4.1.2.dylib; path = ../../../aar/opencv/libopencv_bgsegm.4.1.2.dylib; sourceTree = "<group>"; };
18C61B46238E1E310098E1C1 /* libopencv_calib3d.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_calib3d.4.1.2.dylib; path = ../../../aar/opencv/libopencv_calib3d.4.1.2.dylib; sourceTree = "<group>"; };
18C61B47238E1E310098E1C1 /* libopencv_dpm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_dpm.a; path = ../../../aar/opencv/libopencv_dpm.a; sourceTree = "<group>"; };
18C61B48238E1E310098E1C1 /* libopencv_surface_matching.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_surface_matching.4.1.2.dylib; path = ../../../aar/opencv/libopencv_surface_matching.4.1.2.dylib; sourceTree = "<group>"; };
18C61B49238E1E310098E1C1 /* libopencv_stereo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_stereo.a; path = ../../../aar/opencv/libopencv_stereo.a; sourceTree = "<group>"; };
18C61B4A238E1E310098E1C1 /* libopencv_saliency.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_saliency.a; path = ../../../aar/opencv/libopencv_saliency.a; sourceTree = "<group>"; };
18C61B4B238E1E310098E1C1 /* libopencv_quality.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_quality.a; path = ../../../aar/opencv/libopencv_quality.a; sourceTree = "<group>"; };
18C61B4C238E1E310098E1C1 /* libopencv_bgsegm.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_bgsegm.a; path = ../../../aar/opencv/libopencv_bgsegm.a; sourceTree = "<group>"; };
18C61B4D238E1E310098E1C1 /* libopencv_xphoto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libopencv_xphoto.a; path = ../../../aar/opencv/libopencv_xphoto.a; sourceTree = "<group>"; };
18C61B4E238E1E310098E1C1 /* libopencv_dnn_objdetect.4.1.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libopencv_dnn_objdetect.4.1.2.dylib; path = ../../../aar/opencv/libopencv_dnn_objdetect.4.1.2.dylib; sourceTree = "<group>"; };
333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
33CC10ED2044A3C60003C045 /* Flutter Desktop Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Flutter Desktop Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 33CC10ED2044A3C60003C045 /* Flutter Desktop Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Flutter Desktop Example.app"; sourceTree = BUILT_PRODUCTS_DIR; };
...@@ -88,6 +279,60 @@ ...@@ -88,6 +279,60 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
18C61B63238E1EDB0098E1C1 /* libopencv_xphoto.4.1.2.dylib in Frameworks */,
18C61B64238E1EDB0098E1C1 /* libopencv_ximgproc.4.1.2.dylib in Frameworks */,
18C61B65238E1EDB0098E1C1 /* libopencv_xobjdetect.4.1.2.dylib in Frameworks */,
18C61B66238E1EDB0098E1C1 /* libopencv_xfeatures2d.4.1.2.dylib in Frameworks */,
18C61B67238E1EDB0098E1C1 /* libopencv_videostab.4.1.2.dylib in Frameworks */,
18C61B68238E1EDB0098E1C1 /* libopencv_videoio.4.1.2.dylib in Frameworks */,
18C61B69238E1EDB0098E1C1 /* libopencv_tracking.4.1.2.dylib in Frameworks */,
18C61B6A238E1EDB0098E1C1 /* libopencv_video.4.1.2.dylib in Frameworks */,
18C61B6B238E1EDB0098E1C1 /* libopencv_text.4.1.2.dylib in Frameworks */,
18C61B6C238E1EDB0098E1C1 /* libopencv_surface_matching.4.1.2.dylib in Frameworks */,
18C61B6D238E1EDB0098E1C1 /* libopencv_superres.4.1.2.dylib in Frameworks */,
18C61B6E238E1EDB0098E1C1 /* libopencv_structured_light.4.1.2.dylib in Frameworks */,
18C61B6F238E1EDB0098E1C1 /* libopencv_stitching.4.1.2.dylib in Frameworks */,
18C61B70238E1EDB0098E1C1 /* libopencv_stereo.4.1.2.dylib in Frameworks */,
18C61B71238E1EDB0098E1C1 /* libopencv_shape.4.1.2.dylib in Frameworks */,
18C61B72238E1EDB0098E1C1 /* libopencv_sfm.4.1.2.dylib in Frameworks */,
18C61B73238E1EDB0098E1C1 /* libopencv_rgbd.4.1.2.dylib in Frameworks */,
18C61B74238E1EDB0098E1C1 /* libopencv_saliency.4.1.2.dylib in Frameworks */,
18C61B75238E1EDB0098E1C1 /* libopencv_reg.4.1.2.dylib in Frameworks */,
18C61B76238E1EDB0098E1C1 /* libopencv_quality.4.1.2.dylib in Frameworks */,
18C61B77238E1EDB0098E1C1 /* libopencv_plot.4.1.2.dylib in Frameworks */,
18C61B78238E1EDB0098E1C1 /* libopencv_photo.4.1.2.dylib in Frameworks */,
18C61B79238E1EDB0098E1C1 /* libopencv_phase_unwrapping.4.1.2.dylib in Frameworks */,
18C61B7A238E1EDB0098E1C1 /* libopencv_optflow.4.1.2.dylib in Frameworks */,
18C61B7B238E1EDB0098E1C1 /* libopencv_objdetect.4.1.2.dylib in Frameworks */,
18C61B7C238E1EDB0098E1C1 /* libopencv_ml.4.1.2.dylib in Frameworks */,
18C61B7D238E1EDB0098E1C1 /* libopencv_line_descriptor.4.1.2.dylib in Frameworks */,
18C61B7E238E1EDB0098E1C1 /* libopencv_imgproc.4.1.2.dylib in Frameworks */,
18C61B7F238E1EDB0098E1C1 /* libopencv_imgcodecs.4.1.2.dylib in Frameworks */,
18C61B62238E1E820098E1C1 /* libopencv_img_hash.4.1.2.dylib in Frameworks */,
18C61B61238E1E820098E1C1 /* libopencv_highgui.4.1.2.dylib in Frameworks */,
18C61B5F238E1E820098E1C1 /* libopencv_hfs.4.1.2.dylib in Frameworks */,
18C61B60238E1E820098E1C1 /* libopencv_gapi.4.1.2.dylib in Frameworks */,
18C61B5E238E1E820098E1C1 /* libopencv_fuzzy.4.1.2.dylib in Frameworks */,
18C61B5D238E1E820098E1C1 /* libopencv_freetype.4.1.2.dylib in Frameworks */,
18C61B5C238E1E820098E1C1 /* libopencv_flann.4.1.2.dylib in Frameworks */,
18C61B5B238E1E820098E1C1 /* libopencv_features2d.4.1.2.dylib in Frameworks */,
18C61B5A238E1E820098E1C1 /* libopencv_face.4.1.2.dylib in Frameworks */,
18C61B59238E1E820098E1C1 /* libopencv_dpm.4.1.2.dylib in Frameworks */,
18C61B58238E1E820098E1C1 /* libopencv_dnn.4.1.2.dylib in Frameworks */,
18C61B57238E1E820098E1C1 /* libopencv_dnn_superres.4.1.2.dylib in Frameworks */,
18C61B56238E1E820098E1C1 /* libopencv_dnn_objdetect.4.1.2.dylib in Frameworks */,
18C61B55238E1E820098E1C1 /* libopencv_datasets.4.1.2.dylib in Frameworks */,
18C61B54238E1E820098E1C1 /* libopencv_core.4.1.2.dylib in Frameworks */,
18C61B53238E1E820098E1C1 /* libopencv_ccalib.4.1.2.dylib in Frameworks */,
18C61B51238E1E820098E1C1 /* libopencv_calib3d.4.1.2.dylib in Frameworks */,
18C61B52238E1E820098E1C1 /* libopencv_bioinspired.4.1.2.dylib in Frameworks */,
18C61B50238E1E550098E1C1 /* libopencv_bgsegm.4.1.2.dylib in Frameworks */,
18C61B4F238E1E470098E1C1 /* libopencv_aruco.4.1.2.dylib in Frameworks */,
183FB04C238D11100011D0AB /* Accelerate.framework in Frameworks */,
183FB04A238D11090011D0AB /* QuartzCore.framework in Frameworks */,
183FB048238D11020011D0AB /* CoreGraphics.framework in Frameworks */,
183FB044238D10F50011D0AB /* CoreImage.framework in Frameworks */,
183FB042238D10EE0011D0AB /* AVFoundation.framework in Frameworks */,
D73912F022F37F9E000D13A0 /* App.framework in Frameworks */, D73912F022F37F9E000D13A0 /* App.framework in Frameworks */,
33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */, 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */,
AC484BA342B7F3D708348C24 /* Pods_Runner.framework in Frameworks */, AC484BA342B7F3D708348C24 /* Pods_Runner.framework in Frameworks */,
...@@ -97,6 +342,93 @@ ...@@ -97,6 +342,93 @@
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
18C61ADF238E1E2E0098E1C1 /* python3.7 */ = {
isa = PBXGroup;
children = (
18C61AE0238E1E2E0098E1C1 /* site-packages */,
);
name = python3.7;
path = ../../../aar/opencv/python3.7;
sourceTree = "<group>";
};
18C61AE0238E1E2E0098E1C1 /* site-packages */ = {
isa = PBXGroup;
children = (
18C61AE1238E1E2E0098E1C1 /* cv2 */,
);
path = "site-packages";
sourceTree = "<group>";
};
18C61AE1238E1E2E0098E1C1 /* cv2 */ = {
isa = PBXGroup;
children = (
18C61AE2238E1E2E0098E1C1 /* python-3.7 */,
18C61AE4238E1E2E0098E1C1 /* config.py */,
18C61AE5238E1E2E0098E1C1 /* __init__.py */,
18C61AE6238E1E2E0098E1C1 /* load_config_py3.py */,
18C61AE7238E1E2E0098E1C1 /* load_config_py2.py */,
18C61AE8238E1E2E0098E1C1 /* config-3.7.py */,
);
path = cv2;
sourceTree = "<group>";
};
18C61AE2238E1E2E0098E1C1 /* python-3.7 */ = {
isa = PBXGroup;
children = (
18C61AE3238E1E2E0098E1C1 /* cv2.cpython-37m-darwin.so */,
);
path = "python-3.7";
sourceTree = "<group>";
};
18C61AF8238E1E2E0098E1C1 /* cmake */ = {
isa = PBXGroup;
children = (
18C61AF9238E1E2E0098E1C1 /* opencv4 */,
);
name = cmake;
path = ../../../aar/opencv/cmake;
sourceTree = "<group>";
};
18C61AF9238E1E2E0098E1C1 /* opencv4 */ = {
isa = PBXGroup;
children = (
18C61AFA238E1E2E0098E1C1 /* OpenCVModules-release.cmake */,
18C61AFB238E1E2E0098E1C1 /* OpenCVConfig-version.cmake */,
18C61AFC238E1E2E0098E1C1 /* OpenCVConfig.cmake */,
18C61AFD238E1E2E0098E1C1 /* OpenCVModules.cmake */,
);
path = opencv4;
sourceTree = "<group>";
};
18C61B0A238E1E2F0098E1C1 /* pkgconfig */ = {
isa = PBXGroup;
children = (
18C61B0B238E1E2F0098E1C1 /* opencv4.pc */,
);
name = pkgconfig;
path = ../../../aar/opencv/pkgconfig;
sourceTree = "<group>";
};
18C61B25238E1E2F0098E1C1 /* opencv4 */ = {
isa = PBXGroup;
children = (
18C61B26238E1E2F0098E1C1 /* 3rdparty */,
);
name = opencv4;
path = ../../../aar/opencv/opencv4;
sourceTree = "<group>";
};
18C61B26238E1E2F0098E1C1 /* 3rdparty */ = {
isa = PBXGroup;
children = (
18C61B27238E1E2F0098E1C1 /* libcorrespondence.a */,
18C61B28238E1E2F0098E1C1 /* libsimple_pipeline.a */,
18C61B29238E1E2F0098E1C1 /* libnumeric.a */,
18C61B2A238E1E2F0098E1C1 /* libmultiview.a */,
);
path = 3rdparty;
sourceTree = "<group>";
};
33BA886A226E78AF003329D5 /* Configs */ = { 33BA886A226E78AF003329D5 /* Configs */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
...@@ -160,6 +492,10 @@ ...@@ -160,6 +492,10 @@
33E51914231749380026EE4D /* Release.entitlements */, 33E51914231749380026EE4D /* Release.entitlements */,
33CC11242044D66E0003C045 /* Resources */, 33CC11242044D66E0003C045 /* Resources */,
33BA886A226E78AF003329D5 /* Configs */, 33BA886A226E78AF003329D5 /* Configs */,
183FB039238D09880011D0AB /* MyPlugin.swift */,
183FB03D238D0D180011D0AB /* Runner-Bridging-Header.h */,
183FB04D238D207E0011D0AB /* Cv.mm */,
183FB04F238D20870011D0AB /* Cv.h */,
); );
path = Runner; path = Runner;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -171,13 +507,132 @@ ...@@ -171,13 +507,132 @@
5CCA470CB94BB4ED9CED90FD /* Pods-Runner.release.xcconfig */, 5CCA470CB94BB4ED9CED90FD /* Pods-Runner.release.xcconfig */,
99C221DD8322FAAED0195075 /* Pods-Runner.profile.xcconfig */, 99C221DD8322FAAED0195075 /* Pods-Runner.profile.xcconfig */,
); );
name = Pods;
path = Pods; path = Pods;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
D73912EC22F37F3D000D13A0 /* Frameworks */ = { D73912EC22F37F3D000D13A0 /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
18C61AF8238E1E2E0098E1C1 /* cmake */,
18C61B05238E1E2E0098E1C1 /* libade.a */,
18C61B1D238E1E2F0098E1C1 /* libcorrespondence.a */,
18C61AEB238E1E2E0098E1C1 /* libippicv.a */,
18C61B00238E1E2E0098E1C1 /* libippiw.a */,
18C61AF1238E1E2E0098E1C1 /* libittnotify.a */,
18C61ACB238E1E2D0098E1C1 /* liblibjpeg-turbo.a */,
18C61B44238E1E310098E1C1 /* liblibprotobuf.a */,
18C61B0D238E1E2F0098E1C1 /* liblibwebp.a */,
18C61ADD238E1E2E0098E1C1 /* libmultiview.a */,
18C61AF4238E1E2E0098E1C1 /* libnumeric.a */,
18C61B33238E1E300098E1C1 /* libopencv_aruco.4.1.2.dylib */,
18C61B08238E1E2E0098E1C1 /* libopencv_aruco.a */,
18C61B45238E1E310098E1C1 /* libopencv_bgsegm.4.1.2.dylib */,
18C61B4C238E1E310098E1C1 /* libopencv_bgsegm.a */,
18C61B14238E1E2F0098E1C1 /* libopencv_bioinspired.4.1.2.dylib */,
18C61AEF238E1E2E0098E1C1 /* libopencv_bioinspired.a */,
18C61B46238E1E310098E1C1 /* libopencv_calib3d.4.1.2.dylib */,
18C61B18238E1E2F0098E1C1 /* libopencv_calib3d.a */,
18C61AF2238E1E2E0098E1C1 /* libopencv_ccalib.4.1.2.dylib */,
18C61ADB238E1E2D0098E1C1 /* libopencv_ccalib.a */,
18C61B1E238E1E2F0098E1C1 /* libopencv_core.4.1.2.dylib */,
18C61ADC238E1E2E0098E1C1 /* libopencv_core.a */,
18C61AE9238E1E2E0098E1C1 /* libopencv_datasets.4.1.2.dylib */,
18C61B30238E1E300098E1C1 /* libopencv_datasets.a */,
18C61B4E238E1E310098E1C1 /* libopencv_dnn_objdetect.4.1.2.dylib */,
18C61B3B238E1E300098E1C1 /* libopencv_dnn_objdetect.a */,
18C61B2F238E1E300098E1C1 /* libopencv_dnn_superres.4.1.2.dylib */,
18C61B0C238E1E2F0098E1C1 /* libopencv_dnn_superres.a */,
18C61B04238E1E2E0098E1C1 /* libopencv_dnn.4.1.2.dylib */,
18C61AD3238E1E2D0098E1C1 /* libopencv_dnn.a */,
18C61B15238E1E2F0098E1C1 /* libopencv_dpm.4.1.2.dylib */,
18C61B47238E1E310098E1C1 /* libopencv_dpm.a */,
18C61B3E238E1E300098E1C1 /* libopencv_face.4.1.2.dylib */,
18C61B3C238E1E300098E1C1 /* libopencv_face.a */,
18C61B2E238E1E300098E1C1 /* libopencv_features2d.4.1.2.dylib */,
18C61ACE238E1E2D0098E1C1 /* libopencv_features2d.a */,
18C61B07238E1E2E0098E1C1 /* libopencv_flann.4.1.2.dylib */,
18C61B40238E1E310098E1C1 /* libopencv_flann.a */,
18C61ACD238E1E2D0098E1C1 /* libopencv_freetype.4.1.2.dylib */,
18C61AD2238E1E2D0098E1C1 /* libopencv_freetype.a */,
18C61B03238E1E2E0098E1C1 /* libopencv_fuzzy.4.1.2.dylib */,
18C61AF5238E1E2E0098E1C1 /* libopencv_fuzzy.a */,
18C61B13238E1E2F0098E1C1 /* libopencv_gapi.4.1.2.dylib */,
18C61B31238E1E300098E1C1 /* libopencv_gapi.a */,
18C61B2B238E1E2F0098E1C1 /* libopencv_hfs.4.1.2.dylib */,
18C61B37238E1E300098E1C1 /* libopencv_hfs.a */,
18C61B23238E1E2F0098E1C1 /* libopencv_highgui.4.1.2.dylib */,
18C61AC9238E1E2D0098E1C1 /* libopencv_highgui.a */,
18C61B3F238E1E300098E1C1 /* libopencv_img_hash.4.1.2.dylib */,
18C61ACA238E1E2D0098E1C1 /* libopencv_img_hash.a */,
18C61B32238E1E300098E1C1 /* libopencv_imgcodecs.4.1.2.dylib */,
18C61B41238E1E310098E1C1 /* libopencv_imgcodecs.a */,
18C61B02238E1E2E0098E1C1 /* libopencv_imgproc.4.1.2.dylib */,
18C61B0F238E1E2F0098E1C1 /* libopencv_imgproc.a */,
18C61B1B238E1E2F0098E1C1 /* libopencv_line_descriptor.4.1.2.dylib */,
18C61B01238E1E2E0098E1C1 /* libopencv_line_descriptor.a */,
18C61ACC238E1E2D0098E1C1 /* libopencv_ml.4.1.2.dylib */,
18C61B20238E1E2F0098E1C1 /* libopencv_ml.a */,
18C61B3D238E1E300098E1C1 /* libopencv_objdetect.4.1.2.dylib */,
18C61ACF238E1E2D0098E1C1 /* libopencv_objdetect.a */,
18C61B42238E1E310098E1C1 /* libopencv_optflow.4.1.2.dylib */,
18C61B06238E1E2E0098E1C1 /* libopencv_optflow.a */,
18C61AF0238E1E2E0098E1C1 /* libopencv_phase_unwrapping.4.1.2.dylib */,
18C61B11238E1E2F0098E1C1 /* libopencv_phase_unwrapping.a */,
18C61AD5238E1E2D0098E1C1 /* libopencv_photo.4.1.2.dylib */,
18C61B16238E1E2F0098E1C1 /* libopencv_photo.a */,
18C61ADE238E1E2E0098E1C1 /* libopencv_plot.4.1.2.dylib */,
18C61AED238E1E2E0098E1C1 /* libopencv_plot.a */,
18C61AFF238E1E2E0098E1C1 /* libopencv_quality.4.1.2.dylib */,
18C61B4B238E1E310098E1C1 /* libopencv_quality.a */,
18C61AD7238E1E2D0098E1C1 /* libopencv_reg.4.1.2.dylib */,
18C61AD0238E1E2D0098E1C1 /* libopencv_reg.a */,
18C61B2C238E1E300098E1C1 /* libopencv_rgbd.4.1.2.dylib */,
18C61AF6238E1E2E0098E1C1 /* libopencv_rgbd.a */,
18C61AEC238E1E2E0098E1C1 /* libopencv_saliency.4.1.2.dylib */,
18C61B4A238E1E310098E1C1 /* libopencv_saliency.a */,
18C61B1C238E1E2F0098E1C1 /* libopencv_sfm.4.1.2.dylib */,
18C61B38238E1E300098E1C1 /* libopencv_sfm.a */,
18C61ADA238E1E2D0098E1C1 /* libopencv_shape.4.1.2.dylib */,
18C61AD1238E1E2D0098E1C1 /* libopencv_shape.a */,
18C61B43238E1E310098E1C1 /* libopencv_stereo.4.1.2.dylib */,
18C61B49238E1E310098E1C1 /* libopencv_stereo.a */,
18C61B2D238E1E300098E1C1 /* libopencv_stitching.4.1.2.dylib */,
18C61B19238E1E2F0098E1C1 /* libopencv_stitching.a */,
18C61B1F238E1E2F0098E1C1 /* libopencv_structured_light.4.1.2.dylib */,
18C61B17238E1E2F0098E1C1 /* libopencv_structured_light.a */,
18C61B21238E1E2F0098E1C1 /* libopencv_superres.4.1.2.dylib */,
18C61AF7238E1E2E0098E1C1 /* libopencv_superres.a */,
18C61B48238E1E310098E1C1 /* libopencv_surface_matching.4.1.2.dylib */,
18C61AD4238E1E2D0098E1C1 /* libopencv_surface_matching.a */,
18C61AFE238E1E2E0098E1C1 /* libopencv_text.4.1.2.dylib */,
18C61B0E238E1E2F0098E1C1 /* libopencv_text.a */,
18C61AD9238E1E2D0098E1C1 /* libopencv_tracking.4.1.2.dylib */,
18C61AD8238E1E2D0098E1C1 /* libopencv_tracking.a */,
18C61AF3238E1E2E0098E1C1 /* libopencv_video.4.1.2.dylib */,
18C61B09238E1E2F0098E1C1 /* libopencv_video.a */,
18C61B34238E1E300098E1C1 /* libopencv_videoio.4.1.2.dylib */,
18C61B22238E1E2F0098E1C1 /* libopencv_videoio.a */,
18C61B12238E1E2F0098E1C1 /* libopencv_videostab.4.1.2.dylib */,
18C61B36238E1E300098E1C1 /* libopencv_videostab.a */,
18C61AEE238E1E2E0098E1C1 /* libopencv_xfeatures2d.4.1.2.dylib */,
18C61B10238E1E2F0098E1C1 /* libopencv_xfeatures2d.a */,
18C61B35238E1E300098E1C1 /* libopencv_ximgproc.4.1.2.dylib */,
18C61B39238E1E300098E1C1 /* libopencv_ximgproc.a */,
18C61B1A238E1E2F0098E1C1 /* libopencv_xobjdetect.4.1.2.dylib */,
18C61B3A238E1E300098E1C1 /* libopencv_xobjdetect.a */,
18C61AEA238E1E2E0098E1C1 /* libopencv_xphoto.4.1.2.dylib */,
18C61B4D238E1E310098E1C1 /* libopencv_xphoto.a */,
18C61B24238E1E2F0098E1C1 /* libquirc.a */,
18C61AD6238E1E2D0098E1C1 /* libsimple_pipeline.a */,
18C61B25238E1E2F0098E1C1 /* opencv4 */,
18C61B0A238E1E2F0098E1C1 /* pkgconfig */,
18C61ADF238E1E2E0098E1C1 /* python3.7 */,
183FB04B238D11100011D0AB /* Accelerate.framework */,
183FB049238D11090011D0AB /* QuartzCore.framework */,
183FB047238D11020011D0AB /* CoreGraphics.framework */,
183FB045238D10FC0011D0AB /* libc++.tbd */,
183FB043238D10F50011D0AB /* CoreImage.framework */,
183FB041238D10EE0011D0AB /* AVFoundation.framework */,
A60FEE9A14B6B89D3B4B69AB /* Pods_Runner.framework */, A60FEE9A14B6B89D3B4B69AB /* Pods_Runner.framework */,
); );
name = Frameworks; name = Frameworks;
...@@ -220,7 +675,7 @@ ...@@ -220,7 +675,7 @@
TargetAttributes = { TargetAttributes = {
33CC10EC2044A3C60003C045 = { 33CC10EC2044A3C60003C045 = {
CreatedOnToolsVersion = 9.2; CreatedOnToolsVersion = 9.2;
LastSwiftMigration = 0920; LastSwiftMigration = 1120;
ProvisioningStyle = Automatic; ProvisioningStyle = Automatic;
SystemCapabilities = { SystemCapabilities = {
com.apple.Sandbox = { com.apple.Sandbox = {
...@@ -349,6 +804,8 @@ ...@@ -349,6 +804,8 @@
files = ( files = (
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
183FB03A238D09880011D0AB /* MyPlugin.swift in Sources */,
183FB04E238D207E0011D0AB /* Cv.mm in Sources */,
335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
...@@ -427,21 +884,31 @@ ...@@ -427,21 +884,31 @@
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 86R4V3XFLU; DEVELOPMENT_TEAM = 86R4V3XFLU;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter/ephemeral", "$(PROJECT_DIR)/Flutter/ephemeral",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_CONFIGURATION_BUILD_DIR}/file_chooser/file_chooser.framework/Headers\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/path_provider_fde/path_provider_fde.framework/Headers\"",
/usr/local/Cellar/opencv/4.1.2/include/opencv4,
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = /usr/local/Cellar/opencv/4.1.2/lib;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;
}; };
name = Profile; name = Profile;
...@@ -558,21 +1025,31 @@ ...@@ -558,21 +1025,31 @@
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 86R4V3XFLU; DEVELOPMENT_TEAM = 86R4V3XFLU;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter/ephemeral", "$(PROJECT_DIR)/Flutter/ephemeral",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_CONFIGURATION_BUILD_DIR}/file_chooser/file_chooser.framework/Headers\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/path_provider_fde/path_provider_fde.framework/Headers\"",
/usr/local/Cellar/opencv/4.1.2/include/opencv4,
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = /usr/local/Cellar/opencv/4.1.2/lib;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;
}; };
...@@ -583,21 +1060,31 @@ ...@@ -583,21 +1060,31 @@
baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = 86R4V3XFLU; DEVELOPMENT_TEAM = 86R4V3XFLU;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/Flutter/ephemeral", "$(PROJECT_DIR)/Flutter/ephemeral",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_CONFIGURATION_BUILD_DIR}/file_chooser/file_chooser.framework/Headers\"",
"\"${PODS_CONFIGURATION_BUILD_DIR}/path_provider_fde/path_provider_fde.framework/Headers\"",
/usr/local/Cellar/opencv/4.1.2/include/opencv4,
); );
INFOPLIST_FILE = Runner/Info.plist; INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/../Frameworks", "@executable_path/../Frameworks",
); );
LIBRARY_SEARCH_PATHS = /usr/local/Cellar/opencv/4.1.2/lib;
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 4.0; SWIFT_VERSION = 4.0;
}; };
name = Release; name = Release;
......
////
//// Cv.h
//// Runner
////
//// Created by Apple on 2019/11/26.
//// Copyright © 2019 Google LLC. All rights reserved.
////
//
//#ifndef Cv_h
//#define Cv_h
//
//
//#endif /* Cv_h */
//
//
////
//// NSImage+OpenCV.h
////
//// Created by TangQiao on 12-10-26.
////
//
//#import <Foundation/Foundation.h>
//#import "opencv2/opencv.hpp"
//
//@interface CV (OpenCV)
//
//+(NSImage*)imageWithCVMat:(const cv::Mat&)cvMat;
//-(id)initWithCVMat:(const cv::Mat&)cvMat;
//
//@property(nonatomic, readonly) cv::Mat CVMat;
//@property(nonatomic, readonly) cv::Mat CVGrayscaleMat;
//
//@end
////
//// Cv.m
//// Runner
////
//// Created by Apple on 2019/11/26.
//// Copyright © 2019 Google LLC. All rights reserved.
////
//
//#import <Foundation/Foundation.h>
////
//// NSImage+OpenCV.mm
////
//// Created by TangQiao on 12-10-26.
////
//
//#import "Cv.h"
//
//static void ProviderReleaseDataNOP(void *info, const void *data, size_t size)
//{
// return;
//}
//
//
//@implementation Cv (OpenCV)
//
//-(CGImageRef)CGImage
//{
// CGContextRef bitmapCtx = CGBitmapContextCreate(NULL/*data - pass NULL to let CG allocate the memory*/,
// [self size].width,
// [self size].height,
// 8 /*bitsPerComponent*/,
// 0 /*bytesPerRow - CG will calculate it for you if it's allocating the data. This might get padded out a bit for better alignment*/,
// [[NSColorSpace genericRGBColorSpace] CGColorSpace],
// kCGBitmapByteOrder32Host|kCGImageAlphaPremultipliedFirst);
//
// [NSGraphicsContext saveGraphicsState];
// [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:bitmapCtx flipped:NO]];
// [self drawInRect:NSMakeRect(0,0, [self size].width, [self size].height) fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
// [NSGraphicsContext restoreGraphicsState];
//
// CGImageRef cgImage = CGBitmapContextCreateImage(bitmapCtx);
// CGContextRelease(bitmapCtx);
//
// return cgImage;
//}
//
//
//-(cv::Mat)CVMat
//{
// CGImageRef imageRef = [self CGImage];
// CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);
// CGFloat cols = self.size.width;
// CGFloat rows = self.size.height;
// cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels
//
// CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to backing data
// cols, // Width of bitmap
// rows, // Height of bitmap
// 8, // Bits per component
// cvMat.step[0], // Bytes per row
// colorSpace, // Colorspace
// kCGImageAlphaNoneSkipLast |
// kCGBitmapByteOrderDefault); // Bitmap info flags
//
// CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), imageRef);
// CGContextRelease(contextRef);
// CGImageRelease(imageRef);
// return cvMat;
//}
//
//-(cv::Mat)CVGrayscaleMat
//{
// CGImageRef imageRef = [self CGImage];
// CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray();
// CGFloat cols = self.size.width;
// CGFloat rows = self.size.height;
// cv::Mat cvMat = cv::Mat(rows, cols, CV_8UC1); // 8 bits per component, 1 channel
// CGContextRef contextRef = CGBitmapContextCreate(cvMat.data, // Pointer to backing data
// cols, // Width of bitmap
// rows, // Height of bitmap
// 8, // Bits per component
// cvMat.step[0], // Bytes per row
// colorSpace, // Colorspace
// kCGImageAlphaNone |
// kCGBitmapByteOrderDefault); // Bitmap info flags
//
// CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), imageRef);
// CGContextRelease(contextRef);
// CGColorSpaceRelease(colorSpace);
// CGImageRelease(imageRef);
// return cvMat;
//}
//
//+ (NSImage *)imageWithCVMat:(const cv::Mat&)cvMat
//{
// return [[[NSImage alloc] initWithCVMat:cvMat] autorelease];
//}
//
//- (id)initWithCVMat:(const cv::Mat&)cvMat
//{
// NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize() * cvMat.total()];
//
// CGColorSpaceRef colorSpace;
//
// if (cvMat.elemSize() == 1)
// {
// colorSpace = CGColorSpaceCreateDeviceGray();
// }
// else
// {
// colorSpace = CGColorSpaceCreateDeviceRGB();
// }
//
// CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
//
// CGImageRef imageRef = CGImageCreate(cvMat.cols, // Width
// cvMat.rows, // Height
// 8, // Bits per component
// 8 * cvMat.elemSize(), // Bits per pixel
// cvMat.step[0], // Bytes per row
// colorSpace, // Colorspace
// kCGImageAlphaNone | kCGBitmapByteOrderDefault, // Bitmap info flags
// provider, // CGDataProviderRef
// NULL, // Decode
// false, // Should interpolate
// kCGRenderingIntentDefault); // Intent
//
//
// NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:imageRef];
// NSImage *image = [[NSImage alloc] init];
// [image addRepresentation:bitmapRep];
//
// CGImageRelease(imageRef);
// CGDataProviderRelease(provider);
// CGColorSpaceRelease(colorSpace);
//
// return image;
//}
//
//@end
...@@ -2,31 +2,33 @@ import Cocoa ...@@ -2,31 +2,33 @@ import Cocoa
import FlutterMacOS import FlutterMacOS
class MainFlutterWindow: NSWindow { class MainFlutterWindow: NSWindow {
override func awakeFromNib() {
let flutterViewController = FlutterViewController.init()
let windowFrame = self.frame
self.contentViewController = flutterViewController
self.setFrame(windowFrame, display: true)
// guard let controller = flutterViewController as? FlutterPluginRegistrar else {
// fatalError("rootViewController is not type FlutterViewController")
// }
//
// let batteryChannel = FlutterMethodChannel(name:"GM_Desktop",
// binaryMessenger: controller.messenger)
//
// batteryChannel.setMethodCallHandler({
// [weak self] (call: FlutterMethodCall, result: FlutterResult) -> Void in
// guard call.method == "getBatteryLevel" else {
// result(FlutterMethodNotImplemented)
// return
// }
// self?.receiveBatteryLevel(result: result)
// })
RegisterGeneratedPlugins(registry: flutterViewController) override func awakeFromNib() {
let flutterViewController = FlutterViewController.init()
let windowFrame = self.frame
self.contentViewController = flutterViewController
self.setFrame(windowFrame, display: true)
// guard let controller = flutterViewController as? FlutterPluginRegistrar else {
// fatalError("rootViewController is not type FlutterViewController")
// }
//
// let batteryChannel = FlutterMethodChannel(name:"GM_Desktop",
// binaryMessenger: controller.messenger)
//
// batteryChannel.setMethodCallHandler({
// [weak self] (call: FlutterMethodCall, result: FlutterResult) -> Void in
// guard call.method == "getBatteryLevel" else {
// result(FlutterMethodNotImplemented)
// return
// }
// self?.receiveBatteryLevel(result: result)
// })
RegisterGeneratedPlugins(registry: flutterViewController)
super.awakeFromNib()
}
super.awakeFromNib()
}
} }
//
// MyPlugin.swift
// Runner
//
// Created by Apple on 2019/11/26.
// Copyright © 2019 Google LLC. All rights reserved.
//
import Foundation
import FlutterMacOS
import Foundation
import Cocoa
public class MyPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(
name: "lsyyy",
binaryMessenger: registrar.messenger)
let instance = MyPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
switch call.method {
case "opencv":
result("o98k")
default:
result("not impl")
}
}
}
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment