图像去黑边、白边

背景

视频特征提取过程发现出现很多检索不到的问题,且对于拼接视频的检索也有问题。分析了下视频,发现原始视频是分辨率不一的,使用软件拼接后导致某些片段视频出现黑边,从而统一resize及提取ROI后的图像不完整,以至于特征提取不全,最终导致检索失败。

所以需要对视频关键帧进行去边操作后再进行后续处理

方法

1、Opencv-Python

阈值筛选全局检测 去黑边
裁剪结果不完整 由于阈值函数的问题 不推荐
https://github.com/younkun/image_image-processing/blob/master/remove_BlackEdge.py
https://blog.csdn.net/qianqing13579/article/details/42323397

2、Opencv-Python

直方图标准差、转换二值图像、OTSU确定分割阈值、SOBEL算子边缘计算、NMS等算法实现
https://blog.csdn.net/u010333076/article/details/87900631

3、ffmpeg去黑边 自动裁剪

https://blog.csdn.net/rootusers/article/details/41674553
问题:自动滤镜怎么下载及编译ffmpeg?未研究

4、imagemagick 去黑边、白边

# 命令行方式
magick convert image-233.jpg -fuzz 10% -trim ../../test2.jpg
// C++代码实现
// @file: demo_trim.cpp
#include <Magick++.h>
#include <string>
#include <iostream>

using namespace std;
using namespace Magick;

int main(int argc, char**argv)
{
    if(argc != 3)
    {
        cout << "Usage: ./trim input.jpg out.jpg\n";
        return -1;
    }
    string srcpath((const char*)argv[1]);
    string dstpath((const char*)argv[2]);
    
    Image image;
    try{
        image.read(srcpath);
        image.colorFuzz(0.15*QuantumRange);
        image.trim();
        image.display();
        image.write(dstpath);
    }
    catch(Exception &error_)
    {
        cout << "Caught exception: " << error_.what() << endl; 
        return 1; 
    }
    return 0;
}
cat Makefile
CPP:=g++ -g `Magick++-config --cxxflags --cppflags --ldflags --libs`
trim:demo_trim.cpp
	${CPP} $< -o $@
clean:
	rm -rf trim

效果

原始图像去边后图像

参考

1、imagemagick处理命令
2、imagemagick官网去边使用说明
3、imagemagick官网地址
4、imagemagick trim

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值