使用OpenFrameworks,OpenCV和Box2D,我能够以良好的帧速率实现它.使用Android似乎是一项更复杂的任务(部分原因是因为我是JAVA新手).
这就是我的开始:
使用"OpenCV样本 - 图像处理"并删除除"canny"效果之外的所有内容,这样可以生成漂亮的黑白图像,非常适合查找轮廓.
public Mat onCameraFrame(CvCameraViewFrame inputFrame)
{
mRgba = inputFrame.rgba();
Imgproc.Canny(mRgbaInnerWindow, mIntermediateMat, 50, 100);
Imgproc.cvtColor(mIntermediateMat, mRgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA, 4);
return mRgba;
}
Run Code Online (Sandbox Code Playgroud)从"OpenCV Sample - color-blob-detection"中我抓住了在Mat中找到轮廓的逻辑:
// These two lines are actually in the function onCameraViewStarted
mHierarchy = new Mat();
CONTOUR_COLOR = new Scalar(255,0,0,255);
// These lines are in function onCameraFrame
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
Imgproc.findContours(mRgbaInnerWindow, contours, mHierarchy, Imgproc.RETR_EXTERNAL,
Imgproc.CHAIN_APPROX_SIMPLE);
Imgproc.drawContours(mIntermediateMat, contours, -1, CONTOUR_COLOR);
Run Code Online (Sandbox Code Playgroud)
所以,我当前的函数看起来像这样,它不起作用:
public Mat onCameraFrame(CvCameraViewFrame inputFrame)
{
mRgba = inputFrame.rgba();
if ((mRgbaInnerWindow == null) …Run Code Online (Sandbox Code Playgroud)我拒绝立即加载所有语言环境(在我的例子中为 18、70+KB),我想知道动态加载它们的最佳方法是什么。
这是我到目前为止所得到的,但有一些注意事项:
node_modules该环境中没有文件夹。我想我们必须将当前语言环境 JS 文件放入public文件夹中才能在生产中加载它们const [, { languages }] = useTranslation();
useEffect(() => {
async function loadMomentLocale() {
// Requires switch because dynamic imports don't support string interpolation
switch (languages[0]) {
case 'es':
await import('moment/locale/es');
break;
case 'fr':
await import('moment/locale/fr');
break;
}
}
if (languages) {
loadMomentLocale().then(() => moment.locale(languages[0]));
}
}, [languages]);
Run Code Online (Sandbox Code Playgroud)