无参考图像的清晰度评价方法(代码实现Python)/版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。/https://blog.csdn.net/gaoyi221119/article/details/103782288

试了试前三种方法,一个一秒一帧一个5秒一帧,只有cv2.Laplacian能跟得上摄像头的连续出图,后面的看了下似乎也都是需要各种高强度计算,懒得测试了

主要:

while (cv2.waitKey(1) != 27):print(cv2.Laplacian(mat,cv2.CV_64F).var())#mat:灰度图,返回的值越大图像越清晰对焦越准确cv2.imshow(u"Camera", mat)#显示图像数据

完整:

用的摄像头用OpenCV打不开,只能用厂家提供的SDK,代码肯定不能和其他摄像头通用,用的黑白摄像头,彩色的话要先把图像转换成灰度图

import numpy as np
import cv2
import mathfrom dvp import *def frame2mat(frameBuffer):frame, buffer = frameBufferbits = np.uint8 if(frame.bits == Bits.BITS_8) else np.uint16shape = NoneconvertType = Noneif(frame.format >= ImageFormat.FORMAT_MONO and frame.format <= ImageFormat.FORMAT_BAYER_RG):shape = 1elif(frame.format == ImageFormat.FORMAT_BGR24 or frame.format == ImageFormat.FORMAT_RGB24):shape = 3elif(frame.format == ImageFormat.FORMAT_BGR32 or frame.format == ImageFormat.FORMAT_RGB32):shape = 4else:return Nonemat = np.frombuffer(buffer, bits)mat = mat.reshape(frame.iHeight, frame.iWidth, shape)   #转换维度return matdef brenner(img):'''Brenner 梯度函数:param img:narray 二维灰度图像:return: float 图像约清晰越大1FPS'''shape = np.shape(img)out = 0for x in range(0, shape[0]-2):for y in range(0, shape[1]):out+=(int(img[x+2,y])-int(img[x,y]))**2return outdef Laplacian(img):'''Laplacian梯度函数:param img:narray 二维灰度图像:return: float 图像约清晰越大30FPS'''return cv2.Laplacian(img,cv2.CV_64F).var()def SMD(img):'''SMD(灰度方差):param img:narray 二维灰度图像:return: float 图像约清晰越大0.2FPS'''shape = np.shape(img)out = 0for x in range(0, shape[0]-1):for y in range(1, shape[1]):out+=math.fabs(int(img[x,y])-int(img[x,y-1]))out+=math.fabs(int(img[x,y]-int(img[x+1,y])))return outcamera = Camera(0)#以索引号的方式打开相机
camera.Start()#启动视频流cv2.namedWindow(u"Camera",0)#可以拖动窗口大小
cv2.resizeWindow(u"Camera", 640, 480)#设置窗口大小
cv2.moveWindow(u"Camera",1200,500)#设置窗口位置while (cv2.waitKey(1) != 27):frame = camera.GetFrame(3000)#从相机采集图像数据,超时时间为3000毫秒mat = frame2mat(frame)#转换为标准数据格式print(Laplacian(mat))cv2.imshow(u"Camera", mat)#显示图像数据

试了下效果,Laplacian对常规场景的判断对焦和失焦的值差距不是很大,对上焦是80左右的数值,失焦也就60左右

但对电子屏幕似乎有奇效,朝着电脑屏幕对上焦后数值能飙到800多

对准焦距:

焦距过长:

焦距过短:

Python_OpenCV对摄像头图像进行对焦判断相关推荐

  1. Unity开发《一起来捉妖》教程 | 2.用摄像头图像做背景

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复捉妖,可以获取本教程的源码工程. 小新:"我们接下来是不是需要将显示融合到屏幕上,才能称得上是AR呢?" 大智:&qu ...

  2. 树莓派4B (Raspberry pi 32 bit)安装uv4l驱动,解决opencv无法获取CSI摄像头图像问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 环境描述:        问题描述:我希望用opencv调用csi摄像头(最开始我只有USB摄像头,可是我无论怎么调用都无法出图像,就 ...

  3. orangepi-zero2使用tft-lcd实时显示USB摄像头图像-2

    目录 一.USB摄像头驱动 二.上代码 本文使用环境: 电脑:Ubuntu 18.04.5 LTS 开发板:orangepi-zero2 交叉编译器:aarch64-none-linux-gnu- 摄 ...

  4. USB摄像头驱动--LCD显示摄像头图像(附Makefile分析)

    对于一个应用程序,最重要的是明白目的是什么:将摄像头的数据解析出来,按一帧一个图片的方式将数据传到LCD的Framebuffer中去(如果LCD没有自动将Framebuffer中的数据刷到LCD上还需 ...

  5. Qt 中获取摄像头图像数据的方法

    Qt 中获取摄像头图像数据的方法 在 Qt 中提供了 QCamera 类用来操作摄像头.(这里的摄像头指的是电脑上常用的那种 USB 摄像头或网络摄像头,暂时还不支持工业相机.)摄像头获取的实时图像可 ...

  6. ADAS摄像头图像环视拼接算法

    ADAS摄像头图像环视拼接算法 输入输出接口 Input: (1)4个摄像头采集的图像视频分辨率 (整型int) (2)4个摄像头采集的图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定参数 ...

  7. 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )

    文章目录 安卓直播推流专栏博客总结 一. 编写快速搭建 RTMP 服务器 Shell 脚本 二. RTMP 快速搭建方法 三.创建阿里云 RTMP 服务器镜像 四.浏览器查看直播内容 五.前置 / 后 ...

  8. html 输入框并行,Python:输入文本框并行捕获userinput到OpenCV Live网络摄像头图像...

    我有一个简单的脚本运行流式传输我的网络摄像头的图像,我想做一些像canny-filter和hough转换一样的操作来检测liveimage中的行:Python:输入文本框并行捕获userinput到O ...

  9. linux图形图像驱动,Linux_Linux操作系统下USB图像采集驱动的安装,ARMlinux下USB摄像头图像的采集 - phpStudy...

    Linux操作系统下USB图像采集驱动的安装 ARMlinux下USB摄像头图像的采集很难,往往望而却步.相比较LINUX系统下的摄像头驱动的安装简单的多,下面就介绍我的安装过程. 我使用的linux ...

最新文章

  1. BFD与IGP快速收敛应用测试
  2. GitHub 大热!也许会成为你心中的OCR开源工具NO1!
  3. 蓝牙 GameKit
  4. Hyperledger Fabric权限进阶篇
  5. @WebInitParam注解
  6. 《深入解析 MAC OS X iOS 操作系统》PDF 带书签
  7. Information Retrieval 倒排索引 学习笔记
  8. 前端学习(1860)vue之电商管理系统电商系统之渲染login组件并且实现路由重定向
  9. html5和flash播放器
  10. 结合Kubernetes解读微服务的12要素
  11. mysql的comment_mysql的comment怎么用
  12. Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for...
  13. ffmpeg 推流 在H264中插入SPS、PPS 头
  14. Linux分区的那些方案
  15. 转 matlab卷积函数介绍 conv filter conv2
  16. 瑞星linux病毒库位置,瑞星杀毒软件V16+怎样离线升级病毒库 病毒库离线升级办法...
  17. 各种排序是否稳定,不稳定是为什么
  18. msdn原版系统和原版office
  19. Web:仿苹果官网首页HTML和CSS
  20. python制作流动图_炫酷!用Python制作漂亮的流动桑基图

热门文章

  1. 有哪些支持C4D的渲染农场
  2. MongoDB查询集合中的文档
  3. java从零到项目实战(八)
  4. wordpress内容调用_WordPress网站的基本内容
  5. SQL Server数据库T-SQL学习
  6. 基于opencv实现透视变换(Python)
  7. Js 时间间隔计算(间隔天数)
  8. 【考研·计算机组成原理】校验码 小结
  9. 解决windows图标和程序真正图标不一致的问题。
  10. python提前查成绩_利用Python来查询自己的成绩!想改成绩吗?我教你啊!