BytesFlow OpenCV 相关项目

DevYK 93d6905cdd update README 3 years ago
.idea be727db067 模糊检测开发 90% 3 years ago
java 5ba1d53014 java 打包成功 3 years ago
jni be727db067 模糊检测开发 90% 3 years ago
opencv 95ca35fcde change build.sh 3 years ago
output 2615afec1c rm 无用资源 3 years ago
.gitignore 5ba1d53014 java 打包成功 3 years ago
CMakeLists.txt 95ca35fcde change build.sh 3 years ago
README.md 93d6905cdd update README 3 years ago
build.sh 95ca35fcde change build.sh 3 years ago
count_down_latch.h be727db067 模糊检测开发 90% 3 years ago
main.cpp 95ca35fcde change build.sh 3 years ago

README.md

OpenCV 项目

模糊检测原理

整个算法的原理和拉普拉斯算子本身的定义有关,该算子主要用来测量图像的二阶导数。它强调了包含快速强度变化的图像区域。拉普拉斯算子经常被用来做边缘检测。这里存在着一个假设,即如果一个图像中包含着高方差,那么在图像中会有较大范围的响应,包括边缘和非边缘,这代表着一张正常图像。但是如果该图像的方差很低,那么响应的范围很小,这表明图像中的边缘很小。众所周知的是当图像越模糊时,包含的边缘信息就会越少

实现步骤:

  • 步骤1-读取输入图片;
  • 步骤2-输入图片灰度化;
  • 步骤3-与特定的Laplacian核进行卷积;
  • 步骤4-计算响应的方差值;
  • 步骤5-如果当前的方差值<threshold,则该图片为模糊图片,否则不是模糊图片。

如何编译该项目

必须安装的环境

  1. 配置 JAVA_HOME 环境变量
  2. 安装 opencv 4.5.5
  3. 编译 PQCVMedia Java JNI API 调用动态库

    git clone https://git.yishihui.com/VideoProcessing/PQCVMedia.git
    
    cd PQCVMedia
    
    ./build.sh
    
    echo "安装成功,在当前 output/lib 下"
    
    

    Linux:

    配置 JAVA_HOME 环境变量

    export JAVA_HOME=xxx
    

命令安装 必须 4.5.5 版本(不推荐)

sudo yum install opencv opencv-devel

#检查版本
pkg-config --modversion opencv

源码安装 4.5.5(推荐)

#opencv 环境 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 opencv-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 opencv-4.5.5.zip
unzip opencv_contrib-4.5.5.zip

cd opencv-4.5.5
mkdir build && cd build

OPENCV_CONTRIB_DIR=/root/opencv/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    
 

MAC:

命令安装

brew install opencv

如果安装慢可以换一个源:

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

如何使用?

java

将 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);