提交 347105ad 编写于 作者: F feilong

init opencv dir

上级 c33f30c9
...@@ -9,17 +9,17 @@ ...@@ -9,17 +9,17 @@
* 位置:`data/config.json` * 位置:`data/config.json`
* 说明:可编辑配置关键词等字段,其中 `node_id` 字段是生成的,请勿编辑 * 说明:可编辑配置关键词等字段,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`难度节点` * 技能树`难度节点`
* 位置:`data/xxx`,例如: `data/1.Java初阶` * 位置:`data/xxx`,例如: `data/1.OpenCV初阶`
* 说明: * 说明:
* 每个技能树有 3 个等级,目录前的序号是必要的,用来保持文件夹目录的顺序 * 每个技能树有 3 个等级,目录前的序号是必要的,用来保持文件夹目录的顺序
* 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑 * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`章节点` * 技能树`章节点`
* 位置:`data/xxx/xxx`,例如:`data/1.Java初阶/1.Java概述` * 位置:`data/xxx/xxx`,例如:`data/1.OpenCV初阶/1.OpenCV基础`
* 说明: * 说明:
* 每个技能树的每个难度等级有 n 个章节,目录前的序号是必要的,用来保持文件夹目录的顺序 * 每个技能树的每个难度等级有 n 个章节,目录前的序号是必要的,用来保持文件夹目录的顺序
* 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑 * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑
* 技能树`知识节点` * 技能树`知识节点`
* 位置:`data/xxx/xxx/xxx`,例如:`data/1.Java初阶/1.Java概述/1.什么是Java` * 位置:`data/xxx/xxx/xxx`,例如:`data/1.OpenCV初阶/1.OpenCV基础/1.OpenCV简介`
* 说明: * 说明:
* 每个技能树的每章有 `n` 个知识节点,目录前的序号是必要的,用来保持文件夹目录的顺序 * 每个技能树的每章有 `n` 个知识节点,目录前的序号是必要的,用来保持文件夹目录的顺序
* 每个目录下有一个 `config.json` * 每个目录下有一个 `config.json`
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
## `知识节点` 子树信息结构 ## `知识节点` 子树信息结构
例如 `data/1.Java初阶/1.Java概述/1.什么是Java/config.json` 里配置对该知识节点子树信息结构: 例如 `data/1.OpenCV初阶/1.OpenCV基础/1.OpenCV简介/config.json` 里配置对该知识节点子树信息结构:
```json ```json
{ {
// ... // ...
...@@ -46,13 +46,13 @@ ...@@ -46,13 +46,13 @@
## `知识节点` 的导出习题编辑 ## `知识节点` 的导出习题编辑
例如 `data/1.Java初阶/1.Java概述/1.什么是Java/config.json` 里配置对该知识节点导出的习题 例如 `data/1.OpenCV初阶/1.OpenCV基础/1.OpenCV简介/config.json` 里配置对该知识节点导出的习题
```json ```json
{ {
// ... // ...
"export": [ "export": [
"HellowWorld.json" "helloworld.json"
] ]
} }
``` ```
...@@ -63,73 +63,99 @@ ...@@ -63,73 +63,99 @@
目前我们支持使用 markdown 语法直接编辑习题和各选项。 目前我们支持使用 markdown 语法直接编辑习题和各选项。
如前文内容,我们在知识节点下增加习题 `HelloWord`的定义文件,即在`data/1.Java初阶/1.Java概述/1.什么是Java` 目录增加一个`HelloWorld.json`文件: 如前文内容,我们在知识节点下增加习题 `helloworld`的定义文件,即在`data/1.OpenCV初阶/1.OpenCV基础/1.OpenCV简介` 目录增加一个`helloworld.json`文件:
```json ```json
{ {
"type": "code_options", "type": "code_options",
"author": "刘鑫", "author": "幻灰龙",
"source": "HelloWorld.md", "source": "helloworld.md",
"notebook_enable": true "notebook_enable": true
} }
``` ```
其中 type 字段目前都固定是 `code_options`notebook_enable 字段决定这个习题是否生成对应的 notebook 。根据具体情况写好其它字段,注意这里 source 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 HelloWorld.md 并编辑为: 其中 type 字段目前都固定是 `code_options``notebook_enable` 字段决定这个习题是否生成对应的 `notebook` 。根据具体情况写好其它字段,注意这里 `source` 的文件名,我们指定了一个 markdwon 文件。现在我们新建一个 `helloworld.md` 并编辑为:
````markdown ````markdown
# Hello World # Hello World
以下 `Hello World` 程序中,能够正确输出内容的是: 以下 `Hello World` 程序中,能够正确执行下述操作的是?
1. 读取目录下`lena`图片
2. 显示`lena`图像窗口
3. 等待用户输入任意按键后关闭窗口
## 答案 ## 答案
```java ```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
public class App { int main() {
public static void main(String[] args){ Mat img = imread("lena.png");
System.out.println("Hello World"); imshow("lena", img);
} waitKey(0);
destroyAllWindows();
return 0;
} }
``` ```
## 选项 ## 选项
### 不必要的返回值 ### 没有显示图像
```java ```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
public class App { int main() {
public int main(){ Mat img = imread("lena.png");
System.out.printf("Hello World"); waitKey(0);
return 0; destroyAllWindows();
} return 0;
} }
``` ```
### 没有引用 System.out ### imshow参数顺序错误
```java ```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
public class App { int main() {
public static void main(String[] args){ Mat img = imread("lena.png");
println("Hello World"); imshow(img, "lena");
} waitKey(0);
destroyAllWindows();
return 0;
} }
``` ```
### 混合了 c 代码 ### 忘记销毁窗口
```java ```cpp
import stdout #include <opencv2/opencv.hpp>
using namespace cv;
public class App { int main() {
public int main(){ Mat img = imread("lena.png");
print("Hello World\n"); imshow("lena", img);
return 0; waitKey(0);
} return 0;
} }
``` ```
### 没有等待用户输入按键
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow("lena", img);
destroyAllWindows();
return 0;
}
```
```` ````
这是一个最基本的习题结构,它包含标题、答案、选项,注意这几个一级和二级标题必须填写正确,解释器会读取这几个标题。而选项的标题会被直接忽略掉,在 这是一个最基本的习题结构,它包含标题、答案、选项,注意这几个一级和二级标题必须填写正确,解释器会读取这几个标题。而选项的标题会被直接忽略掉,在
......
{
"keywords": [
"什么是OpenCV"
],
"children": [
{
"OpenCV的起源": {
"keywords": [
"OpenCV的起源"
],
"children": [],
"node_id": "opencv-626bf6e70ba04d18b1147571c08d85bc",
"title": "OpenCV的起源"
}
}
],
"export": [
"helloworld.json"
],
"node_id": "opencv-77f629e4593845b0bf97e74ca8ec95ae",
"title": "OpenCV简介"
}
\ No newline at end of file
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow("lena", img);
waitKey(0);
destroyAllWindows();
return 0;
}
\ No newline at end of file
{
"type": "code_options",
"author": "幻灰龙",
"source": "helloworld.md",
"notebook_enable": true,
"exercise_id": "23ad9cfa3e8847b6aedba72882b65a74"
}
\ No newline at end of file
# Hello World
以下 `Hello World` 程序中,能够正确执行下述操作的是?
1. 读取目录下`lena`图片
2. 显示`lena`图像窗口
3. 等待用户输入任意按键后关闭窗口
## 答案
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow("lena", img);
waitKey(0);
destroyAllWindows();
return 0;
}
```
## 选项
### 没有显示图像
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
waitKey(0);
destroyAllWindows();
return 0;
}
```
### imshow参数顺序错误
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow(img, "lena");
waitKey(0);
destroyAllWindows();
return 0;
}
```
### 忘记销毁窗口
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow("lena", img);
waitKey(0);
return 0;
}
```
### 没有等待用户输入按键
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat img = imread("lena.png");
imshow("lena", img);
destroyAllWindows();
return 0;
}
```
\ No newline at end of file
{
"keywords": [],
"children": [],
"export": [],
"node_id": "opencv-662dbd65c89d4ddb9e392f44ffe16e1a",
"title": "OpenCV安装"
}
\ No newline at end of file
{
"keywords": [],
"node_id": "opencv-f7ecf411195447b3897ff2324f7aa11b",
"title": "OpenCV基础"
}
\ No newline at end of file
{ {
"export": [],
"keywords": [], "keywords": [],
"node_id": "opencv-f27da6fd72924d1fbd05c6aff0fed4b7", "node_id": "opencv-f27da6fd72924d1fbd05c6aff0fed4b7",
"title": "OpenCV高阶" "title": "OpenCV高阶"
......
...@@ -7,7 +7,43 @@ ...@@ -7,7 +7,43 @@
"OpenCV初阶": { "OpenCV初阶": {
"node_id": "opencv-b943de85e3ad494885f0b4b529053c5a", "node_id": "opencv-b943de85e3ad494885f0b4b529053c5a",
"keywords": [], "keywords": [],
"children": [] "children": [
{
"OpenCV基础": {
"node_id": "opencv-f7ecf411195447b3897ff2324f7aa11b",
"keywords": [],
"children": [
{
"OpenCV简介": {
"node_id": "opencv-77f629e4593845b0bf97e74ca8ec95ae",
"keywords": [
"什么是OpenCV"
],
"children": [
{
"OpenCV的起源": {
"keywords": [
"OpenCV的起源"
],
"children": [],
"node_id": "opencv-626bf6e70ba04d18b1147571c08d85bc",
"title": "OpenCV的起源"
}
}
]
}
},
{
"OpenCV安装": {
"node_id": "opencv-662dbd65c89d4ddb9e392f44ffe16e1a",
"keywords": [],
"children": []
}
}
]
}
}
]
} }
}, },
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册