|
3 lat temu | |
---|---|---|
.idea | 3 lat temu | |
java | 3 lat temu | |
jni | 3 lat temu | |
output | 3 lat temu | |
src | 3 lat temu | |
.gitignore | 3 lat temu | |
CMakeLists.txt | 3 lat temu | |
README.md | 3 lat temu | |
build.sh | 3 lat temu | |
json.json | 3 lat temu | |
main.cpp | 3 lat temu | |
md5_main.cpp | 3 lat temu | |
scp.sh | 3 lat temu |
整个算法的原理和拉普拉斯算子本身的定义有关,该算子主要用来测量图像的二阶导数。它强调了包含快速强度变化的图像区域。拉普拉斯算子经常被用来做边缘检测。这里存在着一个假设,即如果一个图像中包含着高方差,那么在图像中会有较大范围的响应,包括边缘和非边缘,这代表着一张正常图像。但是如果该图像的方差很低,那么响应的范围很小,这表明图像中的边缘很小。众所周知的是当图像越模糊时,包含的边缘信息就会越少
实现步骤:
必须安装的环境
JAVA_HOME
环境变量编译 PQCVMedia Java JNI API 调用动态库
git clone https://git.yishihui.com/VideoProcessing/PQCVMedia.git
cd PQCVMedia
./build.sh
echo "安装成功,在当前 output/lib 下"
配置 JAVA_HOME 环境变量
export JAVA_HOME=xxx
命令安装 必须 4.5.5 版本(不推荐)
sudo yum install src src-devel
#检查版本
pkg-config --modversion src
源码安装 4.5.5(推荐)
#src 环境 4.5.5
#安装依赖包
sudo yum install freeglut-devel mesa-libGL mesa-libGL-devel boost boost-thread boost-devel libv4l-devel libjpeg-turbo-devel libtiff-devel libdc1394-devel tbb-devel eigen3-devel gstreamer-plugins-base-devel python-devel numpy python34-numpy gtk2-devel libpng-devel jasper-devel openexr-devel libwebp-devel python3 python3-devel python3-pip python3-devel python3-numpy
#下载 OpenCV 源码
wget -O src-4.5.5.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.5.zip
wget -O opencv_contrib-4.5.5.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.5.zip
unzip src-4.5.5.zip
unzip opencv_contrib-4.5.5.zip
cd src-4.5.5
mkdir build && cd build
OPENCV_CONTRIB_DIR=/root/src/opencv_contrib-4.5.5/modules
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH="${OPENCV_CONTRIB_DIR}" \
-D BUILD_EXAMPLES=ON ..
#使用 8cpu 编译并安装
make -j8 && make install
命令安装
brew install src
如果安装慢可以换一个源:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
source ~/.bash_profile
将 SDK copy 至你的项目
cp PQCVMedia/output/jar/libpq-cv-media.jar 你的项目目录
cp PQCVMedia/output/lib/libpiaoquan_java_opencv.so 你的项目目录
1、初始化 SDK
PQCVMediaProcessor.initSDK("/root/libpiaoquan_java_opencv.so");
2、以 bytes 流形式传递
PQCVMediaProcessor.blurDetectionFromImageBytes(byte[] data)
2、以 path 绝对路径形式传递
PQCVMediaProcessor.blurDetectionFromImagePath(String path);
yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo
yum-config-manager --disable epel-multimedia
yum install --enablerepo=epel-multimedia ffmpeg ffmpeg-devel
2. OpenCV 安装 (参考上面)
3. JAVA 安装 (参考上面)
4. 代码地址
```shell
git clone https://git.yishihui.com/VideoProcessing/PQCVMedia.git
cd PQCVMedia
git checkout ffmpeg-opencv
./build.sh
echo "安装成功,在当前 output/lib 下"
inputjson:
strartTimeMs,endTimeMs 时间建议传递 8 段,每段为 1s,比如视频时长 100min,去掉前面 10%,尾部 10%,然后需要中间的 80% 做检查,每隔 10 分钟截取 1s 即可。
{
"videoPath": "\"xxx.mp4\"",
"clips": [
{
"strartTimeMs": 10*60*1000,//10 分钟
"endTimeMs": 10*60*1000 + 1000,//10分1秒
"hashs": [ //结果返回 start -> end 每张图片 标识用于比较
{
"imageHash": "\"000010000101010010101010\"",
"hashSize": 64,
"pts": 0
},
{
"imageHash": "\"000010000101010010101010\"",
"hashSize": 64,
"pts": 40
}
]
}
]
}
PQCVMediaProcessor.java
static String getVideoSimilarityLists(String inputjson)
相似比较 API
imageHash 每个字符串中的字符比较,如果对应位置上一样,即为相似, 如果有 10 帧图像,其中经过比较有 5 张图片相似,那么他们的相似值为 50%
//检测
String src = PQCVMediaProcessor.getVideoSimilarityLists(sVIS[0]);
String src2 = PQCVMediaProcessor.getVideoSimilarityLists(sVIS[1]);
//识别 返回 0.0~1.0
float v = PQCVMediaProcessor.getVideoSimilarityValue(src, src2);