![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图像处理
狗庄欺人太甚
目前方向为文本处理,之前有过两年的目标检测实习经历
展开
-
从黑白mask图提取模板(np.where实现)
从黑白mask图提取模板(np.where实现)原创 2022-04-10 21:26:08 · 3696 阅读 · 2 评论 -
对超级大的图像做模板匹配
opencv对一张(1000000,10000000,3)的图片做模板匹配时,会出现segmention fault错误所以我设计了一种纵向切割图像并匹配的算法原创 2022-04-09 11:14:46 · 3004 阅读 · 0 评论 -
得到PCB板子的背景区域
得到预处理的区域原创 2022-04-06 15:53:34 · 2709 阅读 · 0 评论 -
opencv读取超大像素图片
problem:cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/loadsave.cpp:77: error: (-215:Assertion failed) pixels <= CV_IO_MAX_IMAGE_PIXELS in function 'validateInputImageSize'solution:在前面加一行代码os.environ["OPENCV_IO_MAX_IMAGE_PIXELS"] =.原创 2022-04-04 21:08:42 · 3172 阅读 · 0 评论 -
opencv模板匹配
程序有一个匹配的框框重叠的情况,未来可以使用iou做阈值优化一下""" -*- coding: utf-8 -*- author: Hao Hu @date 2022/3/17 3:43 PM"""import cv2import numpy as npdef template_match(ori_img_path): ori_img = cv2.imread(ori_img_path) img_gray = cv2.cvtColor(ori_img, c.原创 2022-03-19 22:15:57 · 5315 阅读 · 0 评论 -
slic去除识别效果图中的裂纹(修改opencv中的库函数)
识别出来的原图:识别后的效果图:slic_image = segmentation.mark_boundaries(image, m_slic,outline_color=(0,1,1))在这个函数里面修改,加上outline,同时膨胀boundaries将opencv中的boundaries.py改为如下代码:import numpy as npfrom scipy import ndimage as ndifrom .._shared.utils import _s原创 2022-03-05 21:40:04 · 3016 阅读 · 0 评论 -
floodfill算法
#在图像处理中就是给定一个种子点作为起始点,向附近相邻的像素点扩散,# 把颜色相同或者相近的所有点都找出来,并填充上新的颜色# 这些点形成一个连通的区域。 漫水填充算法可以用来标记或者分离图像的一部分#漫水填充算法实现最常见有四邻域像素填充法,# 八邻域像素填充法,基于扫描线的填充方法import cv2from matplotlib import imageimport numpy as npimport os.path as ospimport osimpo.原创 2022-03-02 16:30:31 · 1182 阅读 · 0 评论 -
AttributeError: module ‘labelme.utils‘ has no attribute ‘draw_label‘
AttributeError: module 'labelme.utils' has no attribute 'draw_label'安装指定版本labelmepip install labelme==3.16.5原创 2022-02-10 19:41:58 · 716 阅读 · 0 评论 -
用opencv cv2,numpy模块创建一个具有指定大小,深度,通道的任意像素的图像
效果图如下所示:我希望背景是黑色代码如下:(三通道) # 将img变为同样大小的黑色img img = np.zeros((image.shape[0], image.shape[1], 3), dtype = "uint8")原创 2022-02-08 13:44:14 · 3097 阅读 · 0 评论 -
cv2.drawContours()讲解
cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)第一个参数是指明在哪幅图像上绘制轮廓;image为三通道才能显示轮廓第二个参数是轮廓本身,在Python中是一个list;thickness参数指定绘制轮廓list中的哪条轮廓,如果是-1,则绘制其中的所有轮廓。其中thickness表明轮廓.原创 2022-02-04 23:43:03 · 11343 阅读 · 2 评论 -
snake算法
它以构成一定形状的一些控制点为模板(轮廓线),通过模板自身的弹性形变,与图像局部特征相匹配达到调和,即某种能量函数极小化,完成对图像的分割。再通过对模板的进一步分析而实现图像的理解和识别。SNAKE模型就是一条可变形的参数曲线及相应的能量函数,以最小化能量目标函数为目标,控制参数曲线变形,具有最小能量的闭合曲线就是目标轮廓。1.红色的线是我构造的初始轮廓线2.绿色的是用snake算法拟合出来的线""" -*- coding: utf-8 -*- author: Hao Hu.原创 2022-01-21 22:49:55 · 1152 阅读 · 0 评论 -
grabcut抠图
grab需要你画个框,然后你指定背景和物体像素点,然后生成切割#!/usr/bin/env python'''===============================================================================Interactive Image Segmentation using GrabCut algorithm.This sample shows interactive image segmentation using grabc原创 2022-01-21 11:39:12 · 715 阅读 · 0 评论 -
GraphCut算法介绍
Graph Cut(图形切割)应用于计算机视觉领域用来有效的解决各种低级计算机视觉问题,例如图像平滑(image smoothing)、立体应对问题(stereo correspondence problem)、图像分割(image segmentation)。GraphCut利用最小割最大流算法进行图像的分割,可以将图像分割为前景和背景。使用该算法时需要在前景和背景处各画几笔作为输入,算法将建立各个像素点与前景背景相似度的赋权图,并通过求解最小切割区分前景和背景。如果背景比较复杂或者背景和目标相似原创 2022-01-20 17:40:49 · 5318 阅读 · 1 评论 -
利用R,G,B三通道对图像分别生成mask并叠加,最终得到背景和书两种区域
利用R,G,B三通道对图像分别生成mask并叠加,最终得到背景和书两种区域原创 2022-01-13 19:07:21 · 2108 阅读 · 0 评论 -
将一个二值化的图片中的黑白区域反转(numpy快速完成)
将一个二值化的图片中的黑白区域反转(numpy快速完成)原创 2022-01-11 11:41:21 · 3759 阅读 · 0 评论 -
让书和背景分离/去除大区域中小的连通区域(python实现)
删除小块区域有些时候,我们只需要一些大块区域,那些零散的、小块的区域,我们就需要删除掉,则可以使用morphology子模块的remove_small_objects函数。让书和背景分离对图片做了二值化,腐蚀,膨胀操作使用remove_small_objects函数import numpyimport numpy as npimport scipy.ndimage as ndifrom skimage import morphologyimport matplo原创 2022-01-08 15:41:52 · 2071 阅读 · 4 评论 -
对多边形边缘检测并拟合线段长度和角度(matlab实现)
这是我家瑶瑶写的clear all;close all;clc;%边缘检测I = imread('5.jpg');figure;subplot(1,2,1);imshow(I);I1=im2bw(I,0.72);%二值化subplot(1,2,2);imshow(edge(I1, 'sobel'));I2=edge(I1, 'sobel');%边缘检测f1=imread('5.jpg'); %读入要提取的图片figure;subplot(1,3,1);imshow(f1)原创 2021-12-28 19:59:23 · 4395 阅读 · 7 评论 -
识别图中所有圆,并拟合参数求得坐标和半径(霍夫梯度)
注意这一行代码需要自己定义识别圆的范围circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, 0.1)""" -*- coding: utf-8 -*- author: Hao Hu @date 2021/12/27 11:21 AM"""import numpy as npimport cv2image = cv2.imread("four.png")output = image.copy()gray ..原创 2021-12-27 11:42:25 · 1962 阅读 · 0 评论 -
对圆和椭圆进行边缘检测
霍夫梯度:检测的圆与原始图像具有相同的大小检测到的相邻圆的中心的最小距离(如果参数太小,除了一个真实的圆外,还可能会错误地检测到多个相邻圆。如果太大,可能会漏掉一些圆。)在#HOUGH梯度的情况下,它是较高的. 两个阈值传递到Canny边缘检测器(较低的一个小两倍)。在#HOUGH梯度的情况下,它是检测阶段圆心的累加器阈值。它越小,就越可能检测到假圆;minRadius:最小圆半径maxRadius:最大圆半径,如果<=0,则使用最大图像尺寸。如果<0,则返回没有找到半径的中心。原创 2021-12-25 09:32:13 · 8194 阅读 · 5 评论 -
使用霍夫直线变换做直线检测
霍夫直线变换cv2.HoughLines(image, rho, theta, threshold, lines, sen, stn, min_theta, max_theta)cv2.HoughLines()。返回值就是极坐标表示的直线(ρ, θ)。ρ 的单位是像素,θ 的单位是弧度。def line_detect_possible_demo(): """使用霍夫直线变换做直线检测""" img_path = './line.png' img = cv2.imrea.原创 2021-12-03 18:53:23 · 3099 阅读 · 0 评论 -
给图像添加椒盐噪声
椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声def salt_and_pepper_noise(): ''' 添加椒盐噪声 image:原始图片 prob:噪声比例 ''' prob = 0.1 import cv2 import random image = cv2.imread('sample1.jpg') output = np.zeros(image.shape,np.uint8) noise_o原创 2021-12-03 18:18:45 · 3464 阅读 · 0 评论 -
使用holyholes实现边缘检测
在此基础上加上NMS算法,NMS是经常伴随图像区域检测的算法,作用是去除重复的区域""" -*- coding: utf-8 -*- author: Hao Hu @date 2021/12/2 10:52 PM"""import cv2img_path = 'sample1.jpg'import numpy as npdef non_max_suppression_fast(boxes, overlapThresh): """将矩形框中的矩形框去掉"""原创 2021-12-02 23:30:00 · 968 阅读 · 0 评论 -
ViT(Vision Transformer)算法入门
在Transformer的基础上,ViT算法中尝试将标准的Transformer结构直接应用于图像,并对整个图像分类流程进行最少的修改。具体来讲,ViT算法中,会将整幅图像拆分成小图像块,然后把这些小图像块的线性嵌入序列作为Transformer的输入送入网络,然后使用监督学习的方式进行图像分类的训练。参考论文:https://arxiv.org/pdf/2010.11929.pdf我们将图像分割成固定大小的面片,线性嵌入每个面片,添加位置嵌入,并将生成的向量序列馈送给标准的Transformer编原创 2021-10-30 21:12:39 · 2358 阅读 · 0 评论 -
cv2利用voc中数据集对图片进行涂色
label是类似于这种的结构第1列到第5列分别是x,y,w,h,object我们想要在规定的区域内涂色,其余区域为背景色核心知识:图像由无数像素点组成,然后使用两个for循环在指定的区域涂色def get_label_information(pic_path, img_list): label_path = '/Users/huhao/Documents/cv_project/stick_barcode/Semantic_Segmentation/dateset/lib.原创 2021-10-26 18:13:46 · 471 阅读 · 1 评论 -
kmeans和Dbscans将相邻的轮廓聚类
问题:如何使用传统的图像处理方法将相邻的轮廓聚类,同时轮廓变成规则矩形,大的矩形框里的矩形框消失。聚类算法:K-Means算法k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是,预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个.原创 2021-10-04 01:24:47 · 900 阅读 · 0 评论 -
图像处理之灰度化,二值化,腐蚀,膨胀
灰度化,在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值。二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态腐蚀就是将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。膨胀就是将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。使用腐蚀与膨胀,可以使目标表面更平滑。import cv2import numpyimport numpy as npf原创 2021-10-02 18:42:13 · 2295 阅读 · 0 评论