精华内容
下载资源
问答
  • python opencv合并图片

    2021-02-09 19:53:55
    python 使用opencv和numpy纵向连接两张图片

    python opencv合并图片

    # -*- coding = utf-8 -*-
    # @Time : 2021/2/9 19:20
    # @Author : 水神与月神
    # @File : 图片合并(2021.2.9).py
    # @Software : PyCharm
    
    
    import cv2 as cv  
    import numpy as np
    
    # 图片读取路径
    path1 = r''
    path2 = r''
    # 图片保存路径
    path3 = r''
    # 读取图片,保持图片原格式不变
    img1 = cv.imread(path1, cv.IMREAD_UNCHANGED)
    img2 = cv.imread(path2, cv.IMREAD_UNCHANGED)
    # 连接图片
    image = np.concatenate((img1, img2), axis=0)
    # 显示图片
    cv.namedWindow('image', 0)
    cv.imshow('image', image)
    cv.waitKey(0)
    cv.destroyWindow('image')
    # 保存图片
    cv.imwrite(path3,image)
    
    

    将路径改成自己图片的路径,运行程序后显示合并之后的图片,键盘按下任意键后,窗口消失、图片保存。

    展开全文
  • opencv python 图片合成视频 经常用到,记录一下,代码基本上都来自这里这篇博客 只是做了小小的改进,将文件的字符串排序改成了按照文件名排序,合成视频的时候不会乱. 侵删. # -*- coding: UTF-8 -*- import glob ...

    opencv python 图片合成视频

    经常用到,记录一下,代码基本上都来自这里这篇博客 只是做了小小的改进,将文件的字符串排序改成了按照文件名排序,合成视频的时候不会乱. 侵删.
    # -*- coding: UTF-8 -*-
    import glob
    import os
    import cv2
    import time
    
    
    # 图片合成视频
    def picvideo(path, size):
        filelist = os.listdir(path)  # 获取该目录下的所有文件名
        filelist.sort(key=lambda x: int(x[:-4]))  ##文件名按数字排序
        '''
        fps:
        帧率:1秒钟有n张图片写进去[控制一张图片停留5秒钟,那就是帧率为1,重复播放这张图片5次] 
        如果文件夹下有50张 534*300的图片,这里设置1秒钟播放5张,那么这个视频的时长就是10秒
        '''
        fps = 30
        file_path = r"/media/result/result/img/" + str(int(time.time())) + ".mp4"  # 导出路径
        fourcc = cv2.VideoWriter_fourcc('D', 'I', 'V', 'X')  # 不同视频编码对应不同视频格式(例:'I','4','2','0' 对应avi格式)
    
        video = cv2.VideoWriter(file_path, fourcc, fps, size)
    
        for item in filelist:
            if item.endswith('.jpg'):  # 判断图片后缀是否是.png
                item = path + '/' + item
                img = cv2.imread(item)  # 使用opencv读取图像,直接返回numpy.ndarray 对象,通道顺序为BGR ,注意是BGR,通道值默认范围0-255。
                video.write(img)  # 把图片写进视频
    
        video.release()  # 释放
    
    picvideo(r'/media/result/result/img', (1280, 720))
    
    
    展开全文
  • ·访问像素值并修改它们·访问图片属性·设置ROI·分割和合并图片基本上本节所有的操作都是和Numpy相关的而不是OpenCV访问和修改像素值让我们加载一张彩色图片:>>>import cv2>>>import numpy as np>>>img = cv2....

    ·访问像素值并修改它们

    ·访问图片属性

    ·设置ROI

    ·分割和合并图片

    基本上本节所有的操作都是和Numpy相关的而不是OpenCV

    访问和修改像素值

    让我们加载一张彩色图片:>>>import cv2

    >>>import numpy as np

    >>>img = cv2.imread('messi5.jpg')

    你可以通过行和列坐标访问一个像素值。对于BGR图片,它会返回一个蓝,绿,红值的数组。对于灰度图片,只会返回对应的深度。>>>px = img[100,100]

    >>>print px[157 166 200]

    # accessing only blue pixel

    >>>blue = img[100,100,0]

    >>>print blue

    157

    你可以修改这个像素值:>>>img[100,100] = [255,255,255]

    >>>print img[100,100]

    [255 255 255]

    警告:

    Numpy是一个优化的库,能够快速计算数组。所以如果一个个访问每个像素并修改它的值是很慢的,也不推荐

    注意:

    一般来说,都是选择数组的一片区域,比如头5行或者最后三列。对于某个像素点的访问,Numpy数组方法,array.item() 和array.itemset()更好。但是它总是返回标量。所以如果你想访问所有的B, G, R值,你需要分开调用array.item()

    更好的访问和编辑方式:# accessing RED value

    >>>img.item(10,10,2)

    59

    # modifying RED value

    >>>img.itemset((10,10,2), 100)

    >>>img.item(10,10,2)

    100

    访问图片属性

    图片属性包括行数,列数,通道数,图片数据类型,像素数等。

    图片的形状可以通过img.shape获得,它会放回一个包含行数,列数的通道数的元组(如果图片是彩色的):>>>print img.shape

    (342, 548, 3)

    注意:

    如果图片是灰度的,返回的元组只包含行数和列数。所以检查是否加载的图片是灰度的还是彩色的可以通过这个来做

    所有的像素数可以通过img.size来访问:>>>print img.size

    562248

    图片数据类型可以通过img.dtype获得:>>>print img.dtype

    uint8

    注意:

    img.dtype在调试的时候很重要,因为大量OpenCV-Python代码里的错误都是有错误的数据类型导致的。

    图片ROI

    有时候,你会需要处理图片的特定区域。对于图片的眼部识别,首先对整个图片进行面部识别,找到脸以后,在脸的区域内找眼睛。这个方法能够提高准确度(因为眼睛总是在脸上的:D)性能上也好(因为我们找的区域更小)

    ROI是通过Numpy的索引来获得的,这里我们选择球,然后把它复制到图片的另一个区域:>>>ball = img[280:340,330:390]

    >>>img[273:333,100:160] = ball

    80efbe3880dc

    分割和合并图片

    图片的B, G, R通道可以被分割成他们各自的片,各个通道可以被合并成BGR图片。>>>b,g,r = cv2.split(img)

    >>>img=cv2.merge((b,g,r))

    或者>>>b = img[:,:,0]

    假设你想把所有的红色像素变成0,你不用这么分割,你可以简单的使用Numpy索引,这样更快>>>img[:,:,2]=0

    警告:

    cv2.split()是一个成本很高的操作(执行时间),所以只在必要的时候使用。Numpy索引要更有效率,能用就用。

    制作图片的边框

    如果你想要在图片周围生成边框,类似于相框,你可以使用cv2.copyMakeBorder()函数。但是它还能用于卷积,0内边距等。这个函数有下面这些参数:

    ·src - 输入图片

    ·top, bottom, left, right - 各个方向的边框像素宽度

    ·borderType - 标志位,定义要加什么样的边框,可以是下列类型:

    ·cv2.BORDER_CONSTANT - 添加固定的彩色边。值需要在后面的参数提供。

    ·cv2.BORDER_REFLECT - 边框是镜像的,像这样:fedcba/abcdefgh/hgfedcb

    ·cv2.BORDER_REFLECT_101或cv2.BORDER_DEFAULT - 和上面一样,但是有点变化,像这样:gfedcb/abcdefgh/gfedcba

    ·cv2.BORDER_REPLICATE - 最后的元素是重复的,像这样:aaaaaa/abcdefgh/hhhhhhh

    ·cv2.BORDER_WRAP - 没法解释,看上去是这样: cdefgh/abcdefgh/abcdefg

    ·value - 如果边的类型是cv2.BORDER_CONSTANT 这个值就是边的颜色。

    下面是个列子,展示了所有这些边框的类型:import cv2

    import numpy as np

    from matplotlib import pyplot as plt

    BLUE = [255,0,0]

    img1 = cv2.imread('opencv_logo.png')

    replicate = cv2.copyMakeBorder(img1,10,10,10,10, cv2.BORDER_REPLICATE)

    reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT)

    reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101)

    wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP)

    constant=cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

    plt.subplot(231),plt.imshow(img1,'gray'),plt.title('ORIGINAL')

    plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')

    plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')

    plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT_101')

    plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')

    plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')

    plt.show()

    80efbe3880dc

    END

    展开全文
  • Opencv Python 轮廓处理 Opencv python轮廓处理 本人大一数学系学渣菜鸟一枚,课程之余学习了OpenCV,把写的关于轮廓处理的知识分享一下,欢迎在评论区里给出宝贵意见! 我把代码放到一起了,要是运行的话最好复制到...
    ``python
    #program 1.绘制轮廓
    import numpy as np
    import cv2 as cv 
    #读取图像
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    #一些必要的操作:导入图像、二值化、canny边缘检测、cnt的给出
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    #创建3*3的高斯滤波内核
    img_gray = cv.GaussianBlur(img_gray, (3, 3), 0)
    # canny边缘检测
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0] 
    #进行绘制
    cv.drawContours(img, contours, -1, (0,255,0), 3)
    cv.imshow("read", img)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows() 
    
    #program 2.去除图像的矩形边框,找到并提取指定轮廓
    #由于图像在识别轮廓的过程中可能会把外框矩形也识别并画出来,所以我们找个办法把指定的轮廓去除
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0] 
    M = cv.moments(cnt)
    
    cv.imshow("thresh", thresh)
    '''    
    finContours(img, mode, method)
    mode(轮廓检索模式): 
    RETR_EXTERNAL :只检索最外面的轮廓; 
    RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;
    RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;
    RETR_TREE(最常用):检索所有的轮廓,并重构嵌套轮廓的整个层次;
    
    method(轮廓逼近方法):
    CHAIN_APPROX_NONE:以Freeman链码的方式输出轮廓,所有其他方法输出多边形(顶点的序列)。 
    CHAIN_APPROX_SIMPLE(最常用):压缩水平的、垂直的和斜的部分,也就是,函数只保留他们的终点部分。
    '''
    # 查看轮廓的数量
    number = numpy.array(contours).shape
    # 复制图像,新的图像作为边界绘制的底图
    cp = img.copy() 
    res1 = cv.drawContours(cp, contours, -1, (0, 0, 255), 2)
    cp = img.copy()
    res2 = cv.drawContours(cp, contours, 0, (0, 0, 255), 2)
    # 合并两张图像
    res = numpy.hstack((res1, res2))
    print("number:", number)
    cv.imshow("res", res)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows()
    
    #program 3.提取特征矩,进行简单计算
    '''
    关于图像的矩的一些解析:
    矩用来抽取图像(块)特征,本质上,Hu矩其实就是泰勒级数展开的对应项。其他类型的矩也是对应多项式展开的级数(如Legendre矩对应Legendre级数)。在图像里,低阶矩反映低频(主要的)信息,高阶矩反映高频(细节)信息,
    0阶矩( m[00]):目标区域的面积(Area)
    1阶矩( m[01] , m[10] ):目标区域的质心(Centroid)
    以目标区域的质心为中心构建中心矩,那么矩的计算时永远是目标区域中的点相对于目标区域的质心,而与目标区域的位置无关,即中心矩具备了平移不变性。
    2阶矩(m[20] ,m[02] , m[11] ):即惯性矩,可计算目标图像的方向
    3阶矩(m[30] , m[03] , m[12], m[21]):目标区域的方位和斜度,反应目标的扭曲
    Hu矩:目标区域往往伴随着空间变换(平移,尺度,旋转),所以需要在普通矩的基础上构造出具备不变性的矩组
    
    更多关于矩的知识可以参考https://www.cnblogs.com/ronny/p/3985810.html
    
    
    '''
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0] 
    M = cv.moments(cnt)
    #求图像面积
    area = cv.contourArea(cnt)
    #求图像周长
    perimeter = cv.arcLength(cnt,True)
    #第二参数可以用来指定对象的形状是闭合的(True)还是打开的(一条曲线)
    print(perimeter)
    print( M )
    print(area)
    
    #program 4.轮廓近似
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    #参数设置
    epsilon = 0.1*cv.arcLength(cnt,True)
    approx = cv.approxPolyDP(cnt,epsilon,True)# 第三个函数参数若为true,则说明近似曲线是闭合的,它的首位都是相连,反之,若为false,则断开。
    cv.imshow('approx',img)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows()
    
    #program 5.凸包
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    img_result = img.copy()
    #获取连通域
    cont = get_contours(img_src)
    cv.drawContours(img_result, cont, -1, (0, 0, 255), 2)
    #获取凸包点,连接点
    hull_points = cv.convexHull(cont)#检查一个曲线的凸性缺陷并进行修正
    cv.polylines(img_result, [hull_points], True, (0, 255, 0), 2)
    cv.imshow("img_result", img_result)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows() 
    
    #program 6.规则图形的拟合:矩形、旋转矩形、圆、椭圆
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    x,y,w,h = cv.boundingRect(cnt)
    #拟合矩形
    img1 = cv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
    cv.imshow("rectangle", img1)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows() 
    #拟合旋转矩形
    rect = cv.minAreaRect(cnt)
    box = cv.boxPoints(rect)
    box = np.int0(box)
    img2 = cv.drawContours(img,[box],0,(0,0,255),2)
    cv.imshow("rotarec", img2)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows()
    #拟合图像轮廓的最小闭合圈
    (x,y),radius = cv.minEnclosingCircle(cnt)
    center = (int(x),int(y))
    radius = int(radius)#取整
    img3 = cv.circle(img,center,radius,(0,255,0),2)
    cv.imshow("rectangle", img3)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows()
    #拟合图像轮廓的最小闭合椭圆
    ellipse = cv.fitEllipse(cnt)
    img4 = cv.ellipse(img,ellipse,(0,255,0),2)
    cv.imshow("rectangle", img4)
    cv.waitKey(0) & 0xFF
    cv.destroyAllWindows()
    
    #program 7.轮廓属性的提取与运用
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    x,y,w,h = cv.boundingRect(cnt)
    area = cv.contourArea(cnt)
    #求轮廓的长宽比
    aspect_ratio = float(w)/h
    print(aspect_ratio)
    #求轮廓的范围:轮廓区域与边界区域比值 
    rect_area = w*h
    extent = float(area)/rect_area
    print(extent)
    #求轮廓的坚实度:等高线面积与其凸包面积之比
    hull = cv.convexHull(cnt)
    hull_area = cv.contourArea(hull)
    solidity = float(area)/hull_area
    print(solidity)
    #求轮廓的等效直径:面积与轮廓面积相同的圆的直径
    equi_diameter = np.sqrt(4*area/np.pi)
    print(equi_diameter)
    #求轮廓的取向:物体指向的角度
    (x,y),(MA,ma),angle = cv.fitEllipse(cnt)
    #MA为主轴长度,ma为负轴长度
    print(MA)
    print(ma)
    print(angle)
    #找到构成对象的所有点
    mask = np.zeros(img_gray.shape,np.uint8)
    cv.drawContours(mask,[cnt],0,255,-1)
    pixelpoints = cv.findNonZero(mask)
    #可以用numpy的  pixelpoints = np.transpose(np.nonzero(mask)) 来替换这一句
    print(pixelpoints)
    #找到这些点的最大值,最小值和它们的位置
    min_val, max_val, min_loc, max_loc = cv.minMaxLoc(img_gray,mask = mask)
    print(min_val)
    print(max_val)
    print(min_loc)
    print(max_loc)
    
    #program 8.找到对象的平均颜色或灰值图像的平均强度
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    mean_val = cv.mean(img,mask = mask)
    print(mean_val)
    
    #program 9.找到图像的极端点
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    leftmost = tuple(cnt[cnt[:,:,0].argmin()][0])
    rightmost = tuple(cnt[cnt[:,:,0].argmax()][0])
    topmost = tuple(cnt[cnt[:,:,1].argmin()][0])
    bottommost = tuple(cnt[cnt[:,:,1].argmax()][0])
    print(leftmost,rightmost,topmost,bottommost)
    
    #program 10.修正凸性缺陷
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    ret, thresh = cv.threshold(cv.cvtColor(img.copy(), cv.COLOR_BGR2GRAY) , 127, 255, cv.THRESH_BINARY)
    black = cv.cvtColor(np.zeros((img.shape[1], img.shape[0]), dtype=np.uint8), cv.COLOR_GRAY2BGR)
    #参数cv2.RETR_EXTERNAL是获取最外层轮廓
    hull = cv.convexHull(cnt)
    cv.drawContours(black, [hull], -1, (0, 0, 255), 2)
    #修正凸性缺陷的轮廓区域
    cv.imshow("hull", black)
    cv.waitKey(0)
    cv.destroyAllWindows()
    
    #program 11.点多边形测试
    import numpy as np
    import cv2 as cv 
    img = cv.imread("G:\sundries\CVpictures\practice1.jpg")
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.Canny(img_gray, 100, 300)
    ret, thresh = cv.threshold(img_gray, 127, 255, cv.THRESH_BINARY)
    contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST, cv.CHAIN_APPROX_SIMPLE)
    cnt = contours[0]
    dist = cv.pointPolygonTest(cnt,(50,50),True)
    '''
    第三个参数是measureDist。如果它是真的,它会找到有符号的距离
    如果为假,则查找该点是在轮廓线内部还是外部(分别返回+1、-1和0)
    如果不想找到距离,第三个参数为False,可使速度提高2-3倍
    ''''
    
    #program 12.形状匹配
    #cv.matchShapes(),比较两个形状或两个轮廓,并返回一个显示相似性的度量。结果越低,匹配越好。它是根据矩值计算出来的
    import cv2 as cv
    import numpy as np
    img1 = cv.imread('G:\sundries\CVpictures\stars1.jpg',0)
    img2 = cv.imread('G:\sundries\CVpictures\stars2.jpg',0)
    ret, thresh = cv.threshold(img1, 127, 255,0)
    ret, thresh2 = cv.threshold(img2, 127, 255,0)
    contours,hierarchy = cv.findContours(thresh,2,1)
    cnt1 = contours[0]
    contours,hierarchy = cv.findContours(thresh2,2,1)
    cnt2 = contours[0]
    ret = cv.matchShapes(cnt1,cnt2,1,0.0)
    print( ret )
    
    展开全文
  • OpenCVPython计算机视觉 教程地址: 入门篇 (了解安装OpenCV-Python)| (图片载入/显示/保存)| (打开摄像头捕获图片/播放保存视频)| (访问预期点/ ROI /通道分离合并/图片属性) (颜色空间转换/追踪特定...
  • import cv2 fourcc = cv2.VideoWriter_fourcc(*'XVID') ...for path in ['new1.avi','new4.avi','new2.avi']: # 需要合并的视频名称,也可以用os.listdir() cap = cv2.VideoCapture(path) # frameToStart = 1.
  • OpenCV python学习笔记(二)

    千次阅读 2017-02-18 09:57:24
    OpenCV python 学习笔记(二)
  • OPENCV入门11.1如何使用11.2图像处理基本操作31.2.1读取图像31.2.2显示图像51.2.3保存图像91.3OpenCV贡献库10第2章图像处理基础112.1图像的基本表示方法112.2像素处理152.3使用numpy.array访问像素232.4感兴趣区域...
  • 举例子:‘frame-0992.png’ 意思是你的图片应该和我的这篇code在一个文件夹下,且名字是frame-0992.png,名字稍有一点不对都不行,如果还有问题的话,你看一下你的图片是不是都是同样大小的。 (留言可能第一时间我...
  • 第1章 OPENCV入门11.1 如何使用11.2 图像处理基本操作31.2.1 读取图像31.2.2 显示图像51.2.3 保存图像91.3 OpenCV贡献库10第2章 图像处理基础112.1 图像的基本表示方法112.2 像素处理152.3 使用numpy.array访问像素...
  • OpenCV Python教程2

    2017-02-03 09:59:18
    ...OpenCV Python教程(2、图像元素的访问、通道分离与合并) 2013-06-14 20:50 24611人阅读 评论(8) 收藏 举报  分类: OpenCV(12) Python(18)  版权
  • OpenCV Python印章提取

    2021-04-23 00:34:58
    opencv红色印章提取前言不想看我瞎扯可以直接跳到这说明: 前言 大一误入学生会,现在经常被指派各种奇奇怪怪的事情。 比如一觉醒来,打开手机一看,13:30 晚六点以前要提交我院的一个比赛报名表 前几天都想着不急...
  • opencv python 常用方法

    千次阅读 多人点赞 2020-09-11 16:42:35
    5、画多边形 6、在图片上添加文字: 绘制的文字+绘制的位置+字体类型+字体大小+文字一般属性(颜色,粗细+线条类型) 三、图像的基本操作 (1)获取并修改像素值 对BGR图像而言,返回BGR的值。对灰度图像,返回灰度...
  • 它轻量级而且高效——由一系列 C 函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。简言之,通过openCV可实现计算机图像、视频的编辑。广泛应用于...
  • OpenCV Python教程之图像元素的访问、通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] view plain copy ...
  • openCv python 使用笔记

    2018-05-20 22:08:40
    OpenCv 是Intel开发的一个图像处理库,它是用C++写的,在图像处理和机器视觉领域发挥巨大作用。目前不管是商业还是非商业用途都是开源免费的。 现在来了解一下图像,图像的构成  图像是由多个像素构成的,每一个...
  • python的scipy包中提供了convolve2d()函数来实现卷积运算,其参数如下: fromscipy import signal signal.convolve2d(src,kernel,mode,boundary,fillvalue) src: 输入的图像矩阵,只支持单通的(即二维矩阵) ...
  • opencv python 2 基本操作

    2017-11-06 09:32:46
    opencv_python_2_基本操作读取并修改像素值import cv2img = cv2.imread('a.jpg') px = img[10, 10] print(px)输出结果为 [130 155 22] 为该像素点的BRG像素值。 opencv读取彩色图像的像素顺序为BGR而非RGB。 也可...
  • I've been working on a project where I stitch together images from a drone flying in a lawn mower pattern. I am able to stitch ... See the OpenCV docs for SIFT and SURF and for ORB and BRISK for more.
  • OpenCv Python实现之形态学操作 A:什么是形态学形态学。 Q:数学形态学(Mathematical Morphology),是图像处理过程中一个非常重要的研究方向。形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像...
  • 课程介绍:李老师讲课生动、深入浅出,出版OpenCV编程案例详解、Python-OpenCV图穷录、MATLAB图像处理、MATLAB图像案例教程等在线课程。本课程系统概括了Python-OpenCV的使用方法,让学习者快速入门。根据本课程规划...
  • opencv python(二)---通道拆分及合并,获取图像属性,感兴趣区域(roi)通道拆分及合并拆分拆分效果合并合并效果获取图像属性感兴趣区域(roi) 通道拆分及合并 拆分     色彩空间是 RGB 色彩...
  • OpenCV Python教程之图像元素的访问、通道分离与合并 转载请详细注明原作者及出处,谢谢! 访问像素 像素的访问和访问numpy中ndarray的方法完全一样,灰度图为: [python] view plain copy ...
  • 716拉请求已经合并,588我们的错误跟踪器中的问题已经关闭,因为OpenCV 3.2。另外,我们通过一些严格的静态分析仪工具运行OpenCV,并修复了检测到的问题。所以OpenCV 3.3应该是非常稳定和可靠的释放。 有关OpenCV ...
  •  4、合并方法1(利用函数) import cv2 img = cv2.imread("./images/1.png") (B, G, R) = cv2.split(img) merged = cv2.merge([B, G, R]) cv2.imshow("Merged", merged) cv2.waitKey(0)    5、合并...
  • 首先确保已经安装了Python Mac 下可以直接使用 brew 来安装OpenCV,具体步骤如下: # add opencv brew tap homebrew/science # install opencv brew install opencv 安装必要的python库 pip install ...
  • 课程介绍:李老师讲课生动、深入浅出,出版OpenCV编程案例详解、Python-OpenCV图穷录、MATLAB图像处理、MATLAB图像案例教程等在线课程。本课程系统概括了Python-OpenCV的使用方法,让学习者快速入门。根据本课程规划...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,761
精华内容 2,304
关键字:

opencvpython图片合并

python 订阅