OpenCV

Python check for corrupted video file (catch OpenCV error)

允我心安 提交于 2020-12-08 06:02:47
问题 I'm searching for a way to check if a video file is corrupted. I'm using cv2 (OpenCV for python) to load the video. If the video file is corrupt, I would like to skip the file and move on to the next one. I found this stackoverflow question and therefore tried this: try: vid = cv2.VideoCapture(corrupt_video_file) except cv2.error as e: print(e) except: print('error') but I still receive the following error: [mov,mp4,m4a,3gp,3g2,mj2 @ 0x1b2d000] moov atom not found Unable to stop the stream:

【计算机视觉处理三】图像基本处理

会有一股神秘感。 提交于 2020-12-08 05:08:28
图像基本处理 1、图像切片 在前面我们了解到opencv中的图像实际上就是一个ndarray数组,我们对ndarray数组进行操作就是对图像进行操作。我们先来看一下切片查找,这是我们非常常用的一个操作。 (1)一维数组的切片 我们来看看切片的语法,对于一维的数组我们可以通过下面的操作获取第0个到第4个元素: array[0:5] 从上面可以知道我们的切片操作是左闭右开的。上面的切片操作我们可以简写一下: array[:5] 如果我们没有设置第一个值,则表示从头开始切片。当然我们还可以省略第二个值,这时含义就是取到最后一个元素,比如下面的操作: array[3:] 我们用一个实际的例子来看看切片操作: import numpy as np # 创建一个一维的ndarray数组,数据为[0, 1, 2, 3, 4, 5, 6, 7] array = np.array([0, 1, 2, 3, 4, 5, 6, 7]) # 取0到4个元素 print(array[0:5]) print(array[:5]) # 取第3个到最后一个元素 print(array[3:]) 输出内容如下: [0 1 2 3 4] [0 1 2 3 4] [3 4 5 6 7] 我们可以把切片操作总结为: # 左闭右开 array[start: end-1] 当我们以第0个开始,获取以最后一个结尾的话

OpenCV视频检测人脸

折月煮酒 提交于 2020-12-06 15:54:50
用opencv自带xml。打开摄像头,实时视频检测人脸 可以直接运行在linux下或者Windows下的VS中 1 #include <iostream> 2 #include <stdio.h> 3 #include <ctime> 4 #include <opencv2/opencv.hpp> 5 #include <opencv2/highgui/highgui.hpp> 6 #include <opencv2/imgproc/imgproc.hpp> 7 #include " opencv2/core/core.hpp " 8 using namespace cv; 9 using namespace std; 10 11 #define W 1920 12 #define H 1080 13 14 string face_cascade_name = " E:/opencv_VS/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml " ; 15 CascadeClassifier face_cascade; 16 int facesnum = 0 ; 17 void DectectorAndDis(Mat frame) 18 { 19 Mat face_gray = Mat::zeros(H,

Improve contrast and quality of barely visible old text written with diluted ink using OpenCV

怎甘沉沦 提交于 2020-12-06 04:26:56
问题 Following is an image of page from old parish records. As you can see, the text is barely visible, this is due to use of ink diluted with little too much water... Still, if you try hard enough, you can actually see the letters. I would like to figure out a way to automatically fix such pages to make the text better visible/readable. Now I have tried manually in IrfanView some basic effects, the best I got was using edge detection, but still it was from from readable. Now I am trying opencv in

Improve contrast and quality of barely visible old text written with diluted ink using OpenCV

馋奶兔 提交于 2020-12-06 04:25:08
问题 Following is an image of page from old parish records. As you can see, the text is barely visible, this is due to use of ink diluted with little too much water... Still, if you try hard enough, you can actually see the letters. I would like to figure out a way to automatically fix such pages to make the text better visible/readable. Now I have tried manually in IrfanView some basic effects, the best I got was using edge detection, but still it was from from readable. Now I am trying opencv in

OpenCV-Python-图像梯度

限于喜欢 提交于 2020-12-05 19:25:09
图像梯度 我们知道一阶导数可以用来求极值。把图片想象成连续函数, 因为边缘部分的像素值与旁边的像素明显有区别 ,所以对图片局部求极值,就可以得到整幅图片的边缘信息。 不过图片是二维的离散函数,导数就变成了差分,这个查分就变成了图像梯度。 1. 垂直边缘提取 滤波是应用卷积来实现的,卷积的关键就是卷积核。我们来考察下面这个卷积核: 这个核是用来提取图片中的垂直边缘的,怎么做到的呢?看下图: 当前列左右两侧的元素进行差分,由于边缘的值明显小于(或大于)周边像素,所以边缘的差分结果会明显不同,这样就提取出垂直边缘。同理,把上面的那个矩阵转置一下,就是提取水平边缘。这种差分操作就成为图像的梯度计算: import cv2 import numpy as np img = cv2.imread( ' sudoku.jpg ' , 0) # 自己进行垂直边缘提取 kernel = np.array([[-1, 0, 1 ], [ -2, 0, 2 ], [ -1, 0, 1]], dtype= np.float32) dst_v = cv2.filter2D(img, -1 , kernel) # 自己进行水平边缘提取 dst_h = cv2.filter2D(img, -1 , kernel.T) # 横向并排对比显示 cv2.imshow( ' edge ' , np.hstack(

python opencv 图像缩放

帅比萌擦擦* 提交于 2020-12-05 16:50:15
宽固定,等比例缩放: # -*- coding: utf-8 -*- import cv2 import numpy as np img_raw=cv2.imread(file) if img_raw.shape[1] > 700: x_scale = 640 / img_raw.shape[1] img_raw = cv2.resize(img_raw, None, fx=x_scale, fy=x_scale, interpolation=cv2.INTER_AREA) cv2.imshow("sdf",img_raw) cv2.waitKey() 利用 Python OpenCV 中的 cv.Resize(源,目标,变换方法)就可以实现变换为想要的尺寸了 源文件:就不用说了 目标:你可以对图像进行倍数的放大和缩小 也可以直接的输入尺寸大小 变换的方法: CV_INTER_NN - 最近邻插值, CV_INTER_LINEAR - 双线性插值 (缺省使用) CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法.. CV_INTER_CUBIC - 立方插值. 如 我要将一个图片变为32*32大小的 image=cv2.imread('test.jpg') res=cv2.resize

linux中cmake语法的学习

守給你的承諾、 提交于 2020-12-05 12:08:20
在linux 下进行开发很多人选择编写makefile 文件进行项目环境搭建,而makefile 文件依赖关系复杂,工作量很大,搞的人头很大。常常,写代码,效率才是王道。这里还有自动化的项目构建工具Cmake。 cmake 可以将程序员从复杂的makefile 文件中解脱出来。cmake 根据内置的规则和语法来自动生成相关的makefile 文件进行编译,同时还支持静态库和动态库的构建。 具体cmake的介绍和详细语法可以参考: (1)官方资料 http://www.cmake.org/ cmake 要求工程主目录和所有存放源代码子目录下都要编写CMakeLists.txt 文件。使用cmake 很简单,只需要执行cmake, make 两个命令即可,这里只写了常用的简单操作。 1. 确定cmake 最低版本需求 cmake_minimum_required(VERSION 3.0.0) 2. 确定工程名 project(XXX) 这个不是必须,但是最好写一下,这一行会引入两个变量XXX_BINARY_DIR (二进制文件保存路径)和 XXX_SOURCE_DIR(源代码保存路径) 3. 添加需要的库 set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/usr/local/share/OpenCV") find_package(OpenCV 3

十大C++实战项目,你会几个?【高薪必备】

≯℡__Kan透↙ 提交于 2020-12-05 00:58:19
前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:实验楼 市面上有很多C++的实战项目,从简单到进阶,学习每个项目都可以掌握相应的知识点。 如果你还是C++新手的话,那么这个C++的项目列表你可以拿去练手实战开发,毕竟学编程动手实践是少不了的! 如果你不知道C++可以用来做哪些项目,可以应用在哪些地方,那么,可以去小编的C++交流.裙 :九起久伞吧起伞留伞(数字的谐音)转换下可以找到了,里面有最新C++教程项目 * C++项目列表:* 1、C++ 实现太阳系行星系统 项目使用 C++实现 OpenGL GLUT 实现一个简单的太阳系行星系统,将涉及一些三维图形技术的数学基础、OpenGL 里的三维坐标系、OpenGL 里的光照模型、GLUT 的键盘事件处理。 2、C++实现运动目标的追踪 这个项目是在前面一个项目的后续项目,利用 OpenCV 来实现对视频中动态物体的追踪。 3、C++ 实现银行排队服务模拟 项目使用 C++对银行排队服务进行模拟,以事件驱动为核心思想,手动实现模板链式队列、随机数产生器等内容,进而学习概率编程等知识。作为可选进阶,这个模型同时还能稍加修改的应用到 CPU 资源争夺模型中。 4、1小时入门增强现实技术 项目利用C++