今天完成主要图片功能
图片功能主要包括以下几项:
获取图片
图片获取方式有4种:
1. 自视频预览拍照
2. 打开已有文件
3. 自剪贴板中复制图片
4. 屏幕截图
后续还可以加上第5种方式:
扫描仪扫描得到图片
除通过上面界面操作外,还可在图片编辑状态下,选择缩略图打开目标文件
拖动、缩放
这个简单
编辑
看代码就知道有哪些功能了
if (16 == tag) // 自动对比度
FQaImage->DoQaLight((128 - FQaImage->DoQaMean()) / 4, 120);
if (14 == tag) // 增加对比度
FQaImage->DoQaLight(0, 10);
if (15 == tag) // 减少对比度
FQaImage->DoQaLight(0, -10);
if (20 == tag) // 颜色取反
FQaImage->DoQaNegative();
if (21 == tag) // 灰度图转化
FQaImage->DoQaGrayScale();
if (22 == tag) // 羽化效果
FQaImage->DoQaDither();
if (23 == tag) { // 逆时针旋转
FQaImage->DoQaRotateLeft();
SwapWidthAndHeight();
}
if (24 == tag) { // 顺时针旋转
FQaImage->DoQaRotateRight();
SwapWidthAndHeight();
}
if (25 == tag) { // 旋转180度
FQaImage->DoQaRotateRight();
FQaImage->DoQaRotateRight();
}
if (26 == tag) // 水平翻转
FQaImage->DoQaMirror();
if (27 == tag) // 垂直翻转
FQaImage->DoQaFlip();
if (28 == tag) { // 旋转且镜像
FQaImage->DoQaFlip();
FQaImage->DoQaRotateLeft();
SwapWidthAndHeight();
}
if (29 == tag || // 普通阈值
30 == tag) { // 系统预留值
static UnicodeString threshold = "128";
if (InputQuery("输入阈值", "请输入二值化的阈值(0-255)", threshold)) {
try {
int value = threshold.ToInt();
if (29 == tag)
FQaImage->DoQaThreshold(value);
else {
RGBQUAD c = {
255, 255, 255, 0
};
FQaImage->DoQaThreshold2(value, true, c, true);
}
}
catch(...) {
threshold = "128";
}
}
}
if (31 == tag) { // 智能阈值
FQaImage->DoQaAdaptiveThreshold();
FQaImage->DoQaGrayScale();
}
剪裁、复制、刷新显示
参照视频方式实现。
高级编辑
主要有以下一些高级编辑功能
用户一般用不到这些,提供这些功能,聊胜于无。
优化
快速查看优化效果并可快速应用
反相效果:
选择及后续操作
今天主要精力在于可以选择图像的部分区域,然后删除或保留这一部分
暂时支持三种选择方式
以后再加入其它方式,包括魔术棒方式
点击后,可在工作区以图形化方式进行区域选择操作,如
矩形框选:
椭圆框选:
多边形框选:
上述选择操作可以反向选择,即选该区域外的部分,以下为上述对应的三个反向选择:
选择操作之后,可以进行删除操作,即当前被选择部分将被清空为纯白色:
有了选择及删除操作,将方便对图片的识别前预处理,即将效果不太好的地方选中删除,以提高后续识别准确率。
Undo/Redo
支持无限级的Undo/Redo操作。
图片编辑功能基本完成,明天开始完善OCR识别功能。