![](https://img-blog.csdnimg.cn/20190912165219969.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
图像识别与处理
文章平均质量分 55
翟羽嚄
这个作者很懒,什么都没留下…
展开
-
python opencv去除简易水印——去除红色效果最好
去水印是个麻烦事,水印的方式千奇百怪,下面的方法并不一定适用你。opencv去图片中红色部分,保留其他这个方式需要你的图像水印比较简单,且为纯色的红色。效果图原图处理结果图代码import cv2import numpy as npimgs = cv2.imread("4.jpg")image = imgs.copy()images = imgs.copy()print(image.shape)rows, cols = image.shape[:2]print(rows,原创 2021-05-28 10:51:25 · 2753 阅读 · 0 评论 -
python opencv 实现透视变换——将侧视图进行正投影
python opencv 实现透视变换——将侧视图进行正投影这个方法可以将倾斜拍摄的四边形图片投影成矩形,在图像处理工程里经常要用,之前写过一个C语言版本的,可以搜我博客:透视变换但是python语言版本的比较少,根据网上一些资料总结了一下。废话不多说,直接上效果图。效果图原图运行demo用,加深理解代码代码1——自动找四边形角点,然后透视变化思路:二值化——滤波——膨胀——腐蚀——找最外边轮廓——拟合四边形——四个顶点映射——透视变换#(基于透视的图像矫正)import原创 2021-03-23 17:32:09 · 5303 阅读 · 16 评论 -
YOLOV4训练自己数据集过程
训练步骤1、本文使用VOC格式进行训练。2、训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。3、在训练前利用test.py文件生成对应的txt。4、再运行根目录下的voc_annotation.py,运行前需要将classes改成你自己的classes。注意不要使用中文标签,文件夹中不要有空格!classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat原创 2021-02-24 01:07:53 · 1058 阅读 · 0 评论 -
找挡板最终程序
/******************************************************************程序说明放置挡板,为了保证挡板不超过误差,更新时间:8月19日18点更新时间:8月20日16点*******************************************************************/#include "Dangban.h"extern VideoCapture cap_up;extern VideoCapture原创 2021-01-30 16:30:39 · 512 阅读 · 0 评论 -
深度学习OCR识别源码
https://blog.csdn.net/lovebyz/article/details/84959818原创 2021-01-03 19:22:29 · 3799 阅读 · 1 评论 -
C++ opencv计算图像的水平投影,并返回一幅图像
效果图输入图像输出图像代码//计算图像的水平投影,并返回一幅图像cv::Mat getVerProjImage(const cv::Mat &image){ cv::Mat matTmp = image.clone(); int maxCol = 0, maxNum = 0;//重置255最大数目和最大行 int minCol = 0, minNum = matTmp.rows;//重置255最小数目和最小行 int height = matTmp.rows, width =原创 2020-10-29 00:49:14 · 2525 阅读 · 2 评论 -
C++ opencv的圆转矩形,极坐标转笛卡尔坐标系
原图。原创 2020-10-29 00:46:10 · 1806 阅读 · 0 评论 -
python opencv写视频——cv2.VideoWriter()
python opencv写视频——cv2.VideoWriter()函数原型 cv2.VideoWriter()VideoWriter(filename, fourcc, fps, frameSize[, isColor]) -> <VideoWriter object>参数说明:第一个参数是要保存的文件的路径fourcc 指定编码器fps 要保存的视频的帧率frameSize 要保存的文件的画面尺寸isColor 指示是黑白画面还是彩色的画面示例代码1impo原创 2020-07-25 04:09:29 · 54708 阅读 · 9 评论 -
盲道检测代码暂存
def thresholding(img): # setting all sorts of thresholds # 计算x轴方向或y轴方向的颜色变化梯度导数,并以此进行阈值过滤(thresholding),得到二进制图(binary image): # x_thresh = utils.abs_sobel_thresh(img, orient='x', thresh_min=10 ,thresh_max=230)#通过调整阈值,获取清晰的车道线 x_thresh = ...原创 2020-07-25 00:43:19 · 1706 阅读 · 0 评论 -
10行代码实现opencv svm+hog行人检测
加载opencv自带的行人检测器,进行识别代码import osimport sysimport cv2import loggingimport numpy as nphog = cv2.HOGDescriptor()hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())pwd = os.getcwd()test_dir = os.path.join(pwd, 'TestData')cv2.namedWindo原创 2020-05-28 02:38:20 · 668 阅读 · 0 评论 -
基于yolo v3的交通灯识别系统
德国交通灯数据集视频:图片:标注好的VOC2007格式的xml文件:标注示意图原创 2020-05-22 23:55:01 · 2773 阅读 · 4 评论 -
批量截取视频里的图片并保存——opencv实现
主要功能:截取视频里图片,并保存,可以设置截取的帧间隔使用方法:修改视频路径及名称,以及保存图片位置,Frame_jiange控制每几帧保存一张图片我的使用环境: win10+vs2015+opencv3,需要在VS里面配置opencv。/*******************************************工程说明:截取视频里图片,并保存,可以设置截取的帧间隔时间:2...原创 2020-03-11 12:26:38 · 1232 阅读 · 0 评论 -
PNG图片如何批量转换成JPG图片——python源码实现
在进行图像识别时,我们经常要将图片进行统一,这里的代码实现了将PNG图片批量转换成JPG图片。源码import osfrom PIL import Imagedirname_read="E:/python_project/jiao_tong_biao_zhi/VOC2007/JPEGImages/" # 注意后面的斜杠dirname_write="E:/python_project/...原创 2020-02-24 17:30:07 · 2267 阅读 · 0 评论 -
教你如何从零做一个智能象棋机器人——基于机器视觉与dobot的象棋机器人
不多说,先上图片再上视频视频地址:智能象棋机器人:https://www.bilibili.com/video/av24602515期待大家的鼓励,让我继续更新,看看到底有没有用。原创 2020-02-22 22:25:34 · 7544 阅读 · 17 评论 -
Arnold映射(猫映射)原理及 matlab源码
猫映射(Cat映射),也称为Arnold映射,由俄国数学家弗拉基米尔·阿诺德(Vladimir Igorevich Arnold)提出,在Arnold授课的时候经常使用猫的图像作为例子,故称为“猫映射”。这是一种在有限区域内进行反复折叠、拉伸变换的混沌映射方法,一般应用于多媒体混沌加密中。Arnold也算一种比较主要的置乱算法,算法由以下变换公式产生:其中xn,yn表示变换前灰度图中像素的位...原创 2020-02-21 00:46:58 · 9230 阅读 · 5 评论 -
图像的上采样、下采样
一、欠采样与过采样过采样和欠采样是针对一组图像数据集来说的,而上采样和下采样是对与单张图片来说的。欠采样(undersampling):当数据不平衡的时,比如样本标签1有10000个数据,样本标签0有6000个数据时,为了保持样本数目的平衡,可以选择减少标签1的数据量,这个过程就叫做欠采样。过采样(oversampling):减少数据量固然可以达到以上效果,并且在一定程度上防止过拟合,但...原创 2020-02-01 22:41:26 · 8500 阅读 · 0 评论 -
人脸识别1——一个简单的人脸识别例子
人脸识别1——一个简单的人脸识别例子参考文章:参考文章https://blog.csdn.net/AI_girl/article/details/861659601、dlib库的安装和shape_predictor_68_face_landmarks.dat的下载。参考:Python库之dlib库的简介、安装、使用方法详细攻略我用的第三个方法:下载如下图这个文件然后在这个文件目录...原创 2019-11-26 09:34:55 · 3002 阅读 · 0 评论 -
图像识别与处理笔记——字符识别、邮政编码识别(10月8日暂存)
今天学习到了邮政编码识别,找到了相关理论与实际的代码,分析了一下,有些地方还不是很懂。 理论是看的杨淑莹的《图像识别与项目实践——VC++、matlab计术实现》 第四章–邮政编码识别。下面是网上找到的字符识别相关程序#include <cv.h>#include <highgui.h>#include <math.h>#include <stdio.h>#include <iostre原创 2017-10-08 21:00:32 · 2093 阅读 · 0 评论 -
图像识别——象棋识别相关论文资料算法暂存
1.基于图像处理的象棋棋盘识别 https://wenku.baidu.com/view/2fada74fc850ad02de804114.html原创 2017-10-05 00:26:02 · 1010 阅读 · 0 评论 -
图像识别与处理——象棋识别相关论文
1、基于图像处理的象棋棋盘识别 https://wenku.baidu.com/view/2fada74fc850ad02de804114.html 2、开题报告-基于模板匹配的中国象棋棋子识别与定位 http://www.docin.com/p-1851507991.html原创 2017-10-05 00:30:21 · 2657 阅读 · 0 评论 -
图像识别与处理——图像的表示与通道数问题
图像的表示与通道数问题数字图像的基本概念 对于一幅的数字图像,我们看到的是 肉眼可见的一幅真正的图片,但是计算机看来,这副图像只是一堆亮度各异的点。一副尺寸为 M × N 的图像可以用一个 M × N 的矩阵来表示,矩阵元素的值表示这个位置上的像素的亮度,一般来说像素值越大表示该点越亮。一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维矩阵(M× N × 3)表示。下面说说什么是通道原创 2017-10-12 17:01:29 · 40435 阅读 · 5 评论 -
智能象棋机器人设计之机械臂——相关设计参考
设计一个三自由度平面机器人,相关设计参考1、 可以参考这个底座,材料是6061铝合金https://item.taobao.com/item.htm?id=554373491051&ali_refid=a3_430582_1006:1105725820:N:%E5%B7%A5%E4%B8%9A%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%9C%BA%E6%A2%B0%E6%89%8原创 2017-11-07 12:27:12 · 1697 阅读 · 0 评论 -
图像识别与处理之Opencv——像素值的读写
像素值的读写 很多时候,我们需要读取某个像素值,或者设置某个像素值;在更多的时候,我们需要对整个图像里的所有像素进行遍历。 OpenCV 提供了多种方法来实现图像的遍历。 1 at()函数 函数 at()来实现读去矩阵中的某个像素,或者对某个像素进行赋值操作。 下面两行代码演示了 at()函数的使用方法。uchar value = grayim.at<uchar>(i,j);//读出第 i原创 2017-10-31 23:42:37 · 14376 阅读 · 0 评论 -
图像识别与处理之Opencv——选取图像局部区域
选取图像局部区域 Mat 类提供了多种方便的方法来选择图像的局部区域。 使用这些方法时需要注意,这些方法并不进行内存的复制操作。如果将局部区域赋值给新的 Mat 对象,新对象与原始对象共用相同的数据区域,不新申请内存,因此这些方法的执行速度都比较快。1 单行或单列选择 提取矩阵的一行或者一列可以使用函数 row()或 col()。函数的声明如下:Mat Mat::row(int i) const原创 2017-11-01 01:05:36 · 25681 阅读 · 0 评论 -
图像识别与处理之Opencv——Mat类
Mat 类早期的 OpenCV 中,使用 IplImage 和 CvMat 数据结构来表示图像。 IplImage和 CvMat 都是 C 语言的结构。 使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何时需要申请内存,何时需要释放内存。这个开发者带来了一定的负担,开发者应该将更多精力用于算法设计,因此在新版本的 OpenCV 中引入了 Mat 类。新加入的 Mat 类能够自动管理内存。原创 2017-10-15 00:51:38 · 1050 阅读 · 0 评论 -
图像识别与处理之Opencv——Mat表达式的运算(矩阵的一些运算)
利用 C++中的运算符重载, OpenCV 2 中引入了 Mat 运算表达式。这一新特点使得使用 C++进行编程时,就如同写 Matlab 脚本,代码变得简洁易懂,也便于维护。如果矩阵 A 和 B 大小相同,则可以使用如下表达式:C = A + B + 1; 其执行结果是 A 和 B 的对应元素相加,然后再加 1,并将生成的矩阵赋给 C变量。下面给出 Mat 表达式所支持的运算。下面的列表中原创 2017-11-01 11:16:24 · 1437 阅读 · 0 评论 -
图像识别与处理之Opencv——Mat_类与Mat 类的内存管理
Mat_类 Mat_类是对 Mat 类的一个包装,其定义如下:template<typename _Tp> class Mat_ : public Mat{public://只定义了几个方法//没有定义新的属性};这是一个非常轻量级的包装,既然已经有 Mat 类,为何还要定义一个 Mat_类? 下面我们看这段代码:Mat M(600, 800, CV_8UC1);for( int原创 2017-11-01 11:34:16 · 6266 阅读 · 0 评论 -
图像识别与处理之Opencv——图像数据获取与存储(imread()和imwrite()函数)
一、 读写图像文件将图像文件读入内存,可以使用 imread()函数; 将 Mat 对象以图像文件格式写入内存,可以使用imwrite()函数。1.1 读图像文件——imread() imread()函数返回的是 Mat 对象,如果读取文件失败,则会返回一个空矩阵,即 Mat::data 的值是 NULL。执行 imread()之后,需要检查文件是否成功读入,你可以使用 Mat::empty()原创 2017-11-01 13:46:34 · 15933 阅读 · 0 评论 -
图像识别与处理之Opencv——基本数据结构及示例
OpenCV中强大的Mat类型大家已经比较熟悉了。这里梳理一些在工程中其他经常用到的几种基本数据类型。包括: Vec Scalar:颜色的表示 Point:点的表示 Size:尺寸的表示 Rect:矩形的表示 RotatedRect:这个类通过中心点,宽度和高度和旋转角度来表示一个原创 2017-11-01 18:33:59 · 2274 阅读 · 0 评论 -
图像识别与处理之Opencv——常用的OpenCV2函数速查
常用的OpenCV函数速查:1、cvLoadImage:将图像文件加载至内存;2、cvNamedWindow:在屏幕上创建一个窗口;3、cvShowImage:在一个已创建好的窗口中显示图像;4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;5、cvReleaseImage:释放图像文件所分配的内存;6、cvDestroyWindow:销毁显示图像文件的窗口;7、cvCreateFile转载 2017-11-01 18:39:09 · 1567 阅读 · 0 评论 -
图像识别与处理之Opencv——识别直线与圆形(对应棋盘棋子)11月1日暂存
昨天的思路霍夫变换http://blog.csdn.net/tiemaxiaosu/article/details/50982893利用霍夫变换做直线检测的原理及OpenCV代码实现http://blog.csdn.net/wenhao_ir/article/details/51774444利用霍夫梯度法进行圆检测的原理概要及OpenCV代码实现 http://blog.csdn.net/wenh原创 2017-11-02 01:23:55 · 4519 阅读 · 0 评论 -
图像识别与处理之Opencv——高斯滤波及GaussianBlur()函数
高斯滤波是一种线性平滑滤波,对于除去高斯噪声有很好的效果。在其官方文档中形容高斯滤波为”Probably the most useful filter”,同时也指出高斯滤波并不是效率最高的滤波算法。高斯算法在官方文档给出的解释是高斯滤波是通过对输入数组的每个点与输入的高斯滤波模板执行卷积计算然后将这些结果一块组成了滤波后的输出数组,通俗的讲就是高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值原创 2017-11-02 20:27:44 · 12851 阅读 · 4 评论 -
图像识别与处理之Opencv——霍夫变换编程思路(11月2日暂存)
三、编程思路 1. 读取一幅带处理二值图像,最好背景为黑色; 2. 取得源像素数据; 3. 根据直线的霍夫变换公式完成霍夫变换,预览霍夫空间结果; 4. 寻找最大霍夫值,设置阈值,反变换到图像RGB值空间(程序难点之一); 5. 越界处理,显示霍夫变换处理以后的图像;原创 2017-11-02 19:33:12 · 563 阅读 · 0 评论 -
图像识别与处理之Opencv——高斯滤波GaussianBlur() 11月2日暂存
高斯滤波是一种线性平滑滤波,对于除去高斯噪声有很好的效果。在其官方文档中形容高斯滤波为”Probably the most useful filter”,同时也指出高斯滤波并不是效率最高的滤波算法。高斯算法在官方文档给出的解释是高斯滤波是通过对输入数组的每个点与输入的高斯滤波模板执行卷积计算然后将这些结果一块组成了滤波后的输出数组,通俗的讲就是高斯滤波是对整幅图像进行加权平均的过程,每一个像素点的值原创 2017-11-03 01:08:05 · 1946 阅读 · 1 评论 -
创意思路
两篇极好的文章:1、 SSD: Signle Shot Detector 用于自然场景文字检测https://blog.csdn.net/u010167269/article/details/528516672、论文阅读:SSD: Single Shot MultiBox Detector https://blog.csdn.net/u010167269/article/details/...原创 2018-04-15 01:13:44 · 663 阅读 · 0 评论 -
opencv学习笔记——【OpenCV3】图像的读取、显示与保存
OpenCV3和OpenCV2大同小异,图片的读取,通过函数cv::imread()来实现的;显示通过函数cv::imshow()来实现;而保存则通过cv::imwrite()来实现。1、图片的读取,通过函数cv::imread()读取。第一个参数为图片文件的相对路径或绝对路径(注意:路径一定要正确,同时也要确保文件的格式正确);第二个参数为flag,cv::imread()支持的fl...原创 2018-04-15 03:31:52 · 958 阅读 · 1 评论 -
opencv中threshold函数详解——基本的阈值操作(4月15未完成)
OpenCV中的阈值(threshold)函数: threshold 的运用。什么是阈值?最简单的图像分割的方法。应用举例:从一副图像中利用阈值分割出我们需要的物体部分(当然这里的物体可以是一部分或者整体)。这样的图像分割方法是基于图像中物体与背景之间的灰度差异,而且此分割属于像素级的分割。为了从一副图像中提取出我们需要的部分,应该用图像中的每一个像素点的灰度值与选取的阈值进行比较...原创 2018-04-15 03:39:19 · 8321 阅读 · 1 评论 -
opencv学习笔记—— findContours函数参数详解(检测出物体的轮廓)
Opencv中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?contours里边的数据结构是怎样的?hierarchy到底是什么鬼?Point()有什么用?先从findContours函数原型看起:findContours( InputOut...原创 2018-04-15 04:16:17 · 9355 阅读 · 0 评论 -
opencv学习笔记—— opencv3 源码文件夹内容
OpenCV 3 的源代码文件夹:3rdparty/: 包含第三方库,如用视频解码用的 ffmpeg、jpg、png、tiff 等图片的解码库。 apps/: 包含进行 Haar 分类器训练的工具,OpenCV 进行人脸检测便是基于 Haar 分类器。如果你想检测人脸以外的图片,千万不要错过这几个工具。 cmake/: 包含生成工程项目时 cmake 的依赖文件,用于只能搜索第三方库,普通...原创 2018-04-15 04:18:11 · 1635 阅读 · 0 评论 -
图像识别——对于倾斜拍摄的数字校正—透视变换后识别
参考博文:https://blog.csdn.net/dcrmg/article/details/52475777透视变换通过投影的方式,把当前图像映射到另外一个平面,就像电影院里的交代放映机,如果幕布或者胶带其中任意一个与放映机发出的光纤不是垂直90度角的,那么投影到幕布上的图像就会发生畸变。这种畸变就是透视畸变的一种。透视变换对畸变图像的校正需要取得畸变图像的一组4个点的坐标,和目标图...原创 2018-03-28 16:40:05 · 8529 阅读 · 2 评论