![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
文章平均质量分 57
kami_ys
平凡有一点理想
展开
-
红外小目标:DNANet网络结构与模型搭建
考虑到红外小目标的小的特性,作者设计了一个专门的模块来提取深层特征的同时维护深层小目标的表示。原创 2022-08-25 16:35:44 · 8001 阅读 · 10 评论 -
图像的表示与通道数问题、读取并展示图片、cv2.imread(filename, flags=None)
图像的表示与通道数问题、读取并展示图片、cv2.imread(filename, flags=None)原创 2022-08-23 09:36:31 · 1988 阅读 · 0 评论 -
OSError: image file is truncated与PIL.UnidentifiedImageError: cannot identify image file的解决方案
错误OSError: image file is truncated,又或者是PIL.UnidentifiedImageError: cannot identify image file的解决方案。原创 2022-08-23 00:25:15 · 2660 阅读 · 0 评论 -
opencv-python学习(十七):直线检测
报错:TypeError: ‘NoneType’ object is not iterable原因:阈值过高导致lines=None,也就是说输入的图片很难检测到直线def line_image(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) lines = cv.HoughLines(edges, 1, np.pi/180,原创 2021-07-26 18:16:53 · 377 阅读 · 0 评论 -
opencv-python学习(十六):Canny边缘检测算法
def edge_image(image): blurred = cv.GaussianBlur(image, (3, 3), 0) gray = cv.cvtColor(blurred, cv.COLOR_RGB2GRAY) xgrad = cv.Sobel(gray, cv.CV_16SC1, 1, 0) ygrad = cv.Sobel(gray, cv.CV_16SC1, 0, 1) edge_output = cv.Canny(xgrad, ygrad, 5原创 2021-07-26 17:27:58 · 290 阅读 · 0 评论 -
opencv-python学习(十五):图像梯度
1、索贝尔算子def sobel_image(image): grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) # x方向导数 grad_y = cv.Sobel(image, cv.CV_32F, 0, 1) # y方向导数 gradx = cv.convertScaleAbs(grad_x) grady = cv.convertScaleAbs(grad_y) cv.imshow("xDireaction", gradx)原创 2021-07-26 17:25:57 · 286 阅读 · 0 评论 -
opencv-python学习(十四):高斯金字塔和拉普拉斯金字塔
要求:拉普拉斯金字塔时,图像大小必须是2的n次方*2的n次方,不然会报错def pyramid_image(image): level = 3 # 金字塔的层数 temp = image.copy() #拷贝图像 pyramid_image = [] for i in range(level): dst = cv.pyrDown(temp) pyramid_image.append(dst) cv.imshow('gaosij转载 2021-07-26 16:27:07 · 162 阅读 · 0 评论 -
opencv-python学习(十三):图像二值化
图像的二值化:就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。基于图像的直方图来实现的,0白色 1黑色一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(Binarization)...原创 2021-07-20 17:21:51 · 923 阅读 · 1 评论 -
opencv-python学习(十二):模板匹配
十二、模板匹配模板匹配:通俗讲就是以图找图,通过图中的一部分来找它在图中的位置执行模板匹配,采用的匹配方式有三种cv.TM_SQDIFF_NORMED:用两者的平方差来匹配,最好的匹配值为0;cv.TM_CCORR_NORMED:用两者的乘积匹配,数值越大表明匹配程度越好,cv.TM_CCOEFF_NORMED:用两者的相关系数匹配,1表示完美的匹配,-1表示最差的匹配代码如下:# 引入包import cv2 as cvimport numpy as npdef template_原创 2021-07-16 16:26:10 · 410 阅读 · 0 评论 -
opencv-python学习(十一):图像直方图
一、安装matplotlib 在cmd环境下,按照自己安装的python位置进入Scripts目录下,输入命令:pip install matplotlib或者在pyCharm中安装包二、绘出图片的直方图代码如下:import cv2 as cvfrom matplotlib import pyplot as pltdef hist_image(image): color = ("blue", "green", "red") for i, color in enume原创 2021-07-16 16:21:36 · 147 阅读 · 0 评论 -
opencv-python学习(十):利用卷积对图像模糊处理
代码如下:原创 2021-07-02 15:26:45 · 1432 阅读 · 0 评论 -
理解图像卷积操作的意义
图像卷积的理解数字图像处理中卷积边界补充问题数字图像处理中卷积数字图像是一个二维的离散信号,对数字图像做卷积操作,其实就是利用卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值,并最终滑动完所有图像的过程如下图:图1-1这张图反映了整个卷积过程中的一次相乘后相加的结果:这张图选用3*3的卷积核,卷积核内有九个数值,分别与大小为7*7的图像对应位置的像素值相乘相加,最终得到的结果是-8,代替了原来图像上原创 2021-07-02 11:06:07 · 860 阅读 · 0 评论 -
opencv-python学习(九):图片填充 — 漫水填充(floodFill)
一、指定颜色填充代码如下:# 引入包import cv2 as cvimport numpy as npdef fill_image(image): copyImage = image.copy() # 复制原图像 h, w = image.shape[:2] # 读取图像的宽高 mask = np.zeros([h+2, w+2], np.uint8) # 新建图像矩阵 +2是官方函数要求 #(0,80) 起始点,(0,100,255) 蓝色 ,(100,10原创 2021-07-01 16:13:09 · 1982 阅读 · 0 评论 -
opencv-python学习(八):图片切割、合并
原理通过操作图像矩阵来获取或合并指定位置的图像截取图片中的指定区域或在指定区域添加某一图片代码如下:# 引入包import cv2 as cvdef jie_image(src1): src2 = src1[369:637, 572:922] # 截取指定的区域 cv.namedWindow("splice", cv.WINDOW_NORMAL) cv.imshow("splice", src2) src1[169:437, 572:922] = src2 # 指原创 2021-07-01 14:04:59 · 909 阅读 · 0 评论 -
opencv-python学习(七):粗略的调整图片对比度和亮度
基本原理:两张图片合成先按原来的图片格式新建一个色素全为零的图片,然后按照两张图的比例不同来合成一张新图片代码如下:# 引入包import cv2 as cvimport numpy as npdef contrast_brightness_image(src1, a, g): h, w, ch = src1.shape # 获取shape的数值,height、width和通道 # 新建全零图片数组src2,将height、width,类型设置为原图片的通道类型(色素全为零,原创 2021-07-01 11:21:57 · 1483 阅读 · 0 评论 -
opencv-python学习(六):图片色素的数值运算(加减乘除)和逻辑运算(与或非异或)
一、数值运算加减乘除opencv自带图片色素的处理函数相加:add() 相减:subtract() 相乘:multiply() 相除:divide()原理就是:通过获取两张(一次只能是两张)个图片的同一个位置的色素值来实现运算。运算的要求:两张图片的shape要一样。代码如下:def shu_image(src11, src22): src = cv.add(src11, src22) # 相加 cv.imshow("addImage",src) src =原创 2021-07-01 10:43:11 · 387 阅读 · 0 评论 -
opencv-python学习(五):色彩空间转换
一:调用转换函数实现图像色彩空间转换代码如下:# 引入包import cv2 as cvimport numpy as npdef color_space_demo(image): gray = cv.cvtColor(image, cv.COLOR_RGB2GRAY) #RGB 转换为 gray -- RGB转灰度图 cv.namedWindow("gray", cv.WINDOW_NORMAL) cv.imshow("gray", gray) hsv = cv原创 2021-07-01 09:52:56 · 1242 阅读 · 0 评论 -
opencv-python学习(四):numpy操作数组输出图片
一、读取一张图片,修改颜色通道后输出可以得到图像的:行数,列数,通道数的矩阵,对矩阵进行操作可改变图像像素代码如下:# numpy数组操作def access_pixles(image): print(image.shape) height = image.shape[0] # 图片垂直尺寸 width = image.shape[1] # 图片水平尺寸 channel = image.shape[2] # 图片通道数 print("width: %s, he原创 2021-06-30 16:52:38 · 879 阅读 · 0 评论 -
opencv-python学习(三):调用摄像头或打开视频文件
代码如下:# 引入包import cv2 as cvdef video_demo(): capture = cv.VideoCapture("./static/video/test1.mp4") # 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置为其他数值;也可以是视频文件地址,调用视频文件,如果要播放要设置帧的循环 while True: ret, frame = capture.read() # 读取摄像头,它能返原创 2021-06-30 16:34:24 · 213 阅读 · 0 评论 -
opencv-python学习(二):打印图片的属性,并另存为图片
代码如下:# 引入包import cv2 as cvimport numpy as npdef get_image_info(image): # 定义函数获取图片信息并输出 print(type(image)) # 显示图片类型 numpy类型数组 print(image.shape) # 图像矩阵的shape属性表示图像的大小,shape会返回tuple元组,第一个元素表示矩阵行数,第二个元组表示矩阵列数,第三个元素是3,表示像素值由光的三原色组成 print(i原创 2021-06-30 16:27:31 · 361 阅读 · 0 评论 -
(一)图像的表示与通道数问题、读取并展示图片
图像的表示与通道数问题数字图像的基本概念对于一幅的数字图像,我们看到的是 肉眼可见的一幅真正的图片,但是计算机看来,这副图像只是一堆亮度各异的点。一副尺寸为 M × N 的图像可以用一个 M × N 的矩阵来表示,矩阵元素的值表示这个位置上的像素的亮度,一般来说像素值越大表示该点越亮。一般来说,灰度图用 2 维矩阵表示,彩色(多通道)图像用 3 维矩阵(M× N × 3)表示。————————————————————————————————————————通道数问题描述一个像素点,如果是灰度,那原创 2021-06-30 16:23:09 · 3367 阅读 · 1 评论