目录
对视频进行去水印的程序需要使用计算机视觉技术,需要结合图像处理和视频处理两个方面进行实现。
以下是简单的步骤:
读入视频文件并分离出每一帧图像。
对每一帧图像进行水印检测,找出水印所在的区域。
针对水印的特定位置,使用图像处理方法进行覆盖或删除。
对处理后的每一帧图像进行合并,重新生成视频文件。
这里提供一种简单的方法用于去除视频中的水印:
- #include <opencv2/opencv.hpp>
- using namespace cv;
-
- int main(int argc, char* argv[]) {
- VideoCapture cap(argv[1]); // 读入视频文件
- if(!cap.isOpened()){
- std::cout << "Cannot open the video file" << std::endl;
- return -1;
- }
- double fps = cap.get(CV_CAP_PROP_FPS); // 获取视频的帧率
- int width = cap.get(CV_CAP_PROP_FRAME_WIDTH); // 获取视频的宽度
- int height = cap.get(CV_CAP_PROP_FRAME_HEIGHT); // 获取视频的高度
- int num_frames = cap.get(CV_CAP_PROP_FRAME_COUNT); // 获取视频的总帧数
-
- // 初始化视频编码器
- VideoWriter writer("output.avi", CV_FOURCC('M','J','P','G'), fps,
- Size(width, height), true);
- if (!writer.isOpened()){
- std::cout << "Could not open output video file" << std::endl;
- return -1;
- }
- }
这里可以使用不同的算法进行水印检测,例如基于颜色、形状和大小等特征的检测方法。然后,确定水印的位置和大小。
- Mat frame, gray, thresh;
- while(cap.read(frame)){
- // 将原始图像转化为灰度图像
- cvtColor(frame, gray, CV_BGR2GRAY);
- // 对灰度图像进行阈值处理
- threshold(gray, thresh, 150, 255, THRESH_BINARY);
- // 对二值化图像进行形态学操作,如腐蚀、膨胀等
- // ...
-
- // 通过算法找到水印的位置和大小
- // ...
-
- // 在水印位置放置一个遮挡层,用于遮盖水印
- rectangle(frame, watermark_roi, Scalar(0, 0, 0), -1);
- }
writer.write(frame); // 将修改后的帧写回视频文件
- #include <iostream>
- #include <opencv2/opencv.hpp>
-
- using namespace cv;
-
- int main(int argc, char* argv[]) {
- VideoCapture cap(argv[1]); // 读入视频文件
- if(!cap.isOpened()){
- std::cout << "Cannot open the video file" << std::endl;
- return -1;
- }
- double fps = cap.get(CV_CAP_PROP_FPS); // 获取视频的帧率
- int width = cap.get(CV_CAP_PROP_FRAME_WIDTH); // 获取视频的宽度
- int height = cap.get(CV_CAP_PROP_FRAME_HEIGHT); // 获取视频的高度
- int num_frames = cap.get(CV_CAP_PROP_FRAME_COUNT); // 获取视频的总帧数
-
- // 初始化视频编码器
- VideoWriter writer("output.avi", CV_FOURCC('M','J','P','G'), fps,
- Size(width, height), true);
- if (!writer.isOpened()){
- std::cout << "Could not open output video file" << std::endl;
- return -1;
- }
-
- Mat frame, gray, thresh;
- while(cap.read(frame)){
- /**此处是逐帧处理,对每一帧进行去水印处理,参考本专栏第一课:使用C++实现图片去水印**/
- //转换为灰度图像
- Mat gray;
- cvtColor(frame, gray, COLOR_BGR2GRAY);
-
- //二值化处理
- Mat binary;
- threshold(gray, binary, 50, 255, THRESH_BINARY);
-
- //形态学操作,提取水印区域
- Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
- morphologyEx(binary, binary, MORPH_CLOSE, kernel);
-
- //显示水印区域
- //imshow("水印区域", binary);
- //waitKey(0);
-
- //创建空白图像
- Mat result = Mat::zeros(image.size(), image.type());
-
- //利用原始图像和水印区域进行重构
- for (int i = 0; i < image.rows; i++) {
- for (int j = 0; j < image.cols; j++) {
- if (binary.at<uchar>(i, j) == 0) {
- result.at<Vec3b>(i, j) = image.at<Vec3b>(i, j);
- }
- }
- }
-
- //显示去除水印后的图像
- //imshow("去除水印后的图像", result);
- //waitKey(0);
- /*****************************************************************************/
-
- writer.write(result); // 将修改后的帧写回视频文件
- }
-
- cap.release();
- writer.release();
- return 0;
- }
需要注意的是,这种简单的方法只适用于水印比较固定的场景。对于水印位置和大小变化较大的情况,需要使用更复杂的算法进行检测和处理。
第一课:使用C++实现图片去水印_smartvxworks的博客-CSDN博客
待更新。。。
如今,短视频的制作和分享已经成为一种日常的活动,许多短视频制作者和分享者都希望他们的视频能够被正确的认可。然而,有时候,短视频的创作者会在视频中添加一些水印图标,以此来确保短视频的版权保护。这种水印图标可能会影响视频的质量,并降低观看者的观赏体验。因此,去除短视频中的水印是很有必要的。

那么现在有什么比较好用的去除视频水印的方法呢?如今随着软件技术的不断发展,去除视频水印现在也不是很难的问题了,现在有很多去除视频水印的方法,这里我们就来说一说常见的比较好用的三种去除视频水印的方法。
详细操作步骤:
第一步:首先我们需要把视频的链接复制下来,如果我们是要去除某音或者某手的短视频水印,我们就可以在视频播放页面点击分享按钮,就可以把视频的链接复制下来了。

第二步:复制视频的链接后,我们要想有效地抹去视频中的水印,自然就需要一款高效的去水印工具。这些工具以一键方式去除视频水印,因此选择一款稳定可靠、操作简便的视频去水印工具显得尤为重要,只有这样,才能确保去水印后的视频质量。

第三步:找到你想要用来去除视频水印的工具后,访问它的去水印功能页面,将视频链接粘贴至该页面,然后按下去除水印的按钮。等待几秒钟后,视频的水印就成功的去除掉了。如果视频较短,只需几秒钟就可以完成去水印操作,若视频时长较长,就需要等待更长的时间。最后,点击保存视频,即可将去水印后的视频保存至个人相册中。

详细操作步骤:
第一步,打开AE,然后将需要处理的视频文件拖放到工程区中,然后将其添加到时间轴中。
第二步,点击AE界面上的“合成”菜单,找到“调整”选项,点击后会出现一个调整面板,在此面板中可以看到水印图像。
第三步,在此面板中,可以找到“模糊”选项,点击此选项,就可以给水印图像添加模糊效果,从而达到去除水印的效果。
第四步,调整模糊效果的程度,以达到最佳的去除水印效果。
第五步,点击合成菜单中的“输出”选项,设置输出的文件格式、路径等,然后点击“渲染”按钮,即可完成去除视频水印的操作。
详细操作步骤:
第一步:首先,打开美图秀秀,点击“文件”,在弹出的菜单中点击“打开”,然后选择要去除水印的视频文件。接着,点击工具栏上的“去除水印”图标,美图秀秀会自动识别视频中的水印,并去除视频中的水印。等待一段时间之后,视频中的水印就会被清除。
第二步:点击工具栏上的“保存”图标,美图秀秀会有提示框要求用户输入新的文件名,输入文件名后,点击“确定”,就可以保存去除水印后的视频文件了。