《Tensorflow初级教程》
项目源码位置

效果展示

这是一个GIF图片,图片较大,请耐心等待。
黄色字体显示的是sexy类别的,蓝色、绿色代表视频没有问题,红色代表色情,表示视频有问题。

效果展示的完整MP4文件在项目的show目录中。可以下载查看更长时间的视频播放。

项目说明

项目的大部分内容在《Tensorflow图片鉴黄 完整项目》中进行了说明,这里就不重复说明了。视频鉴黄和图片鉴黄最大的区别就是数据源的不同,但原理还是相同的,就是在图片鉴黄的基础上添加一个对视频的抽帧处理,抽出的帧变成图片,然后再对图片鉴黄。简单吧。

项目搭建

由于要对视频流进行鉴黄,需要自行搭建一个视频服务器,《
利用nginx搭建RTMP视频点播、直播、HLS服务器》这篇博文,我对如何搭建直播服务器进行了说明,如何搭建测试服务器,只需要搭建到点播服务器那里就可以了。

项目使用说明

项目里的两个重要文件:
TFServer.py这个是Tensorflow服务,用于对图片打分。打的分数就是GIF文件上显示的百分数的分值。

CVMonitor.py 他的功能就是同时打开9路直播流,对这9路直播流进行抽帧,将帧转化成图片发给TFServer,并获取分值,并显示在视频上面。如图所示:

其实后台可以对成百上千个直播流进行分析,这里显示9个就是为了展示,并没有啥特别的。或者将可疑的跳到前台显示,没问题的依旧留着后台。

代码讲解

这是对程序员最感兴趣的地方了,TFServer.py在图片鉴黄里说过了,这里只讲解CVMonitor

import cv2
import time
import numpy as np
import os
import socketfrom threading import Thread#用于控制线程的停止
threadStop = False#我的屏幕分辨率,这里是写死的了,没有动态获取。
windowHigh = 1080
windowWidth = 1920#我用来测试的直播地址,都是localhost开头的,证明我在本地搭建的服务器。
videoList = ['rtmp://localhost/vod/sample1.mp4','rtmp://localhost/vod/sample2.mp4','rtmp://localhost/vod/sample3.mp4','rtmp://localhost/vod/sample4.mp4','rtmp://localhost/vod/sample5.mp4','rtmp://localhost/vod/sample9.mp4','rtmp://localhost/vod/sample6.mp4','rtmp://localhost/vod/sample7.mp4','rtmp://localhost/vod/sample8.mp4']def getVideoURL(num):return videoList[num]#同时监控显示9路视频流,每个视频流是一个线程。
class MonitorThread(Thread):def __init__(self, name, args):super().__init__()self.name = nameself.args = argsself.cameraCapture = cv2.VideoCapture(getVideoURL(self.args))print('Thread : ' + str(self.args) + ', ' + self.name + ' start')def run(self):while threadStop is not True:success, frame = self.cameraCapture.read()fileFullName = 'pic/' + str(self.args) + '.jpg'cv2.imwrite(fileFullName, frame)time.sleep(0.1)#创建sock链接,用于将抽帧的图片发给Tensorflow服务器。client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)client.connect("/tmp/tfserver.sock")client.send(bytes(fileFullName, 'utf-8'))#等待获取打分结果。resultbyte = client.recv(1024)resultStr = str(resultbyte, encoding="utf-8")splitString = resultStr.split('\n')#获得的打分,我只要第一个。因为第一个分值是最高的。print('aaaaaaaaaaaaaaaaaaaaaaaaa : ' + splitString[0])img = cv2.imread(fileFullName)img_w = (int)(windowWidth/3)img_h = (int)(windowHigh/3)print(img_w, img_h)#对抽出的帧,做缩放,适合同时在一个屏幕中显示这9路视频流。reSize = cv2.resize(img, (img_w, img_h), interpolation=cv2.INTER_CUBIC)#这里根据分值的不同,显示不同的颜色if(splitString[0].startswith('porn')):cv2.putText(reSize, splitString[0], (30, 60), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 0, 255), 1)elif(splitString[0].startswith('neutral')):cv2.putText(reSize, splitString[0], (30, 60), cv2.FONT_HERSHEY_TRIPLEX, 1, (255, 0, 0), 1)elif(splitString[0].startswith('sexy')):cv2.putText(reSize, splitString[0], (30, 60), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 255, 255), 1)else:cv2.putText(reSize, splitString[0], (30, 60), cv2.FONT_HERSHEY_TRIPLEX, 1, (0, 255, 0), 1)board_x = (int)(self.args/3)board_y = self.args%3start_x = board_x*img_hstart_y = board_y*img_wprint(self.args, board_x, board_y, start_x, start_y, img_w, img_h)#现在显示到屏幕上的不同区域上。bgrImage[start_x:start_x+img_h, start_y:start_y+img_w] = reSizeprint('Tread : ' + str(self.args) + ', ' + self.name + ' stop')#生成一个比较大的画板,用于绘制这9路视频。
randomByteArray = bytearray(os.urandom(windowWidth*windowHigh*3))
flatNumpyArray = np.array(randomByteArray)
bgrImage = flatNumpyArray.reshape(windowHigh, windowWidth, 3)#创建9个线性,每个线程去读取一个直播流。
for i in range(9):t = MonitorThread(name='monitor', args=(i))t.start()cv2.namedWindow('image', cv2.WINDOW_FULLSCREEN)
#cv2.setWindowProperty('image', cv2.)
while True:if cv2.waitKey(1) == 27:break#这里就是每隔0.1秒显示一次画板。time.sleep(0.1)cv2.imshow('image', bgrImage)#标注线程结束,线程停止循环读取数据。
threadStop = True
#销毁窗口。
cv2.destroyAllWindows()

代码量还是挺小的。我没有说清楚的,请给我留言。

Tensorflow直播视频流鉴黄 完整项目相关推荐

  1. Tensorflow图片鉴黄 完整项目

    <Tensorflow初级教程> 项目源码位置 效果展示 先看下效果: 这里通过网页上传图片,服务器接收到图片后保存到本地,再将图片路径传给Tensorflow服务,Tensorflow服 ...

  2. 接入腾讯云直播笔记--直播录制鉴黄配置篇

    接上一篇 直播推拉流 人脸核身 直播推拉流 开始直播后,业务需求需要直播可以录制,截图鉴黄,并且需要收到腾讯云回调到服务端做相对应的处理 经过一番折腾之后,终于明白直播录制,截图鉴黄等的模板需要在控制 ...

  3. 带你走进准确率高于 99.7% 的智能鉴黄功能

    2016年迎来直播和短视频大爆炸,直播类应用在中国区App Store上线已超500款,无数创业者奔赴直播和短视频浪潮. 视频.直播行业一片繁荣,涉黄却是行业心头大患,加上有关部门对传播淫秽信息的严格 ...

  4. 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底

    摘要: 想要快速实现直播能力,并对原有业务不产生任何影响,依托如阿里云一样的直播平台,来搭建移动直播系统,将技术难题交给阿里云,把更多的精力放在核心业务的本身,是最为稳妥和高效的选择.本文介绍阿里云直 ...

  5. iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版

    iOS开发-图片离线鉴黄 基于TensorFlow nsfw oc版 前言-基于TensorFlow鉴黄 效果 首先要引入Firebase 鉴黄类的封装 OC版本的鉴黄demo Swift版本的鉴黄 ...

  6. 直播鉴黄?直播商城开发是如何实现的

    截图鉴黄配置的方式有哪些? 直播商城开发最重要的一步,就是实现直播鉴黄的功能,那么接下来就和我一起看看直播鉴黄是如何实现的吧. 方式:1,通过API设置:2,在[控制台][功能模板]进行配置. 直播商 ...

  7. 直播app搭建教程之鉴黄sdk接入怎么做

    作为直播app搭建者,我们最怕的不是招聘不到好的主播,而是不听话的主播在网上搞黄色,随着国家对于直播平台的管控越来越严格,主播个人行为会被算在平台头上,因此,如何维护平台风气良好,就成了直播app搭建 ...

  8. 人脸检测和识别(中文标记)完整项目源代码(基于深度学习+python3.6+dlib+PIL+CNN+(tensorflow、keras)10分钟实现 区分欢乐颂中人物详细图文教程和完整项目代码)

    转载请注明:https://blog.csdn.net/wyx100/article/details/80428424 效果展示 未完待续... 环境配置 win7sp1 python         ...

  9. 人工智能写唐诗完整项目文档(含代码)tensorflow+keras实现

    转自:用Keras实现RNN+LSTM的模型自动编写古诗 链接:https://www.ioiogoo.cn/2018/02/01/用keras实现rnnlstm的模型自动编写古诗/ 完整项目下载 简 ...

最新文章

  1. iOS支付宝(Alipay)接入详细流程,比微信支付更简单,项目实战中的问题分析
  2. r语言 林元震_科学网—ASReml-R之简介 - 林元震的博文
  3. 如何自制你自己的二极管
  4. 小米 一亿像素传感器 笔记
  5. mysql两种索引结构_19.Mysql索引结构及常见索引的区别
  6. huggingface实操_Transformers 简介(上)
  7. 用上Linux后收集变得山穷水尽
  8. 爬取常用的网站,整理成API:中国联通,大众点评,IT桔子,拉勾网,猫眼电影,人人贷......
  9. SqlDbx 个人版本使用指定的instant client
  10. 算法与数据结构之单链表
  11. keybert:基于bert模型的关键词抽取工具
  12. tracert 原理
  13. 计算机技术在生物学中的应用鲁东大学,项目学习在高中生物学教学中的应用研究...
  14. 电动自行车CE认证、电动滑板车CE认证审核新标准解析
  15. 关于Excel操作编写的一个软件设计构思案例[连载]
  16. java1.8新特性之stream流式算法
  17. 半小时漫画中国史 -- 读书摘记
  18. Linux Shell中判断进程是否存在的代码
  19. 如何调整PDF的页面布局
  20. 开源在线评测/考试系统 xzs

热门文章

  1. spark学习笔记:弹性分布式数据集RDD(Resilient Distributed Dataset)
  2. 如何成为软件高手系列之一
  3. 《软件质量保证与测试》课程的学习
  4. 揭秘阿里巴巴数据治理平台建设经验
  5. TP5 使用GD库将一个头像缩略并处理成圆形png
  6. R语言U统计量检验样本对称性
  7. Python中的 // 和 / 和 % 的用法区别
  8. 案例分享:QinQ基本组网配置
  9. python如何将日期字符串格式化年月日
  10. Bazel构建系统的使用以及go项目实践案例