| 
 
 opencv入门基本操作(pycharm ,python)  
基本操作 
再看一些深度学习的代码的时候,涉及到一些cv的基本操作,可能会有困惑的地方,这里分享一下基础的操作和报错时的解决方法。  #1、读取、保存  
```bash
    img = cv2.imread('p1.jfif')
    im = cv2.imread('p1.jfif', cv2.IMREAD_GRAYSCALE)  # cv2.IMREAD_GRAYSCALE读取灰度图
    print(img)
    print(img.shape)
    print(im)
    print(im.shape)
    cv2.imshow('image', img)
    cv2.imshow('ima', im)
    # 截取部分图像数据
    cat = img[0:200, 0:200]
    cv2.imshow('cat', cat)
    #颜色通道提取
    b,g,r=cv2.split(img)
    print("b",b)
    print("b.shape", b.shape)
    img=cv2.merge((b,g,r))#将三通道进行组合,对应位置索引(0,1,2)
    #只保留R
    cur_img=img.copy()
    cur_img[:,:,0]=0
    cur_img[:,:,1]=0
    cv_show('R',cur_img)
    # #只保留G
    # cur_img = img.copy()
    # cur_img[:, :, 0] = 0
    # cur_img[:, :, 2] = 0
    # cv_show('G', cur_img)
    cv2.imwrite('my.png', im)  # 保存图片(路径,保存的东西)
    cv2.waitKey(0)  # 等待时间,毫秒版。0表示任意键终止
    cv2.destroyWindow()
    print(type(img))  # 数据的格式
    print(img.size)  # 像素点的个数
    print(img.dtype)  # 数据的类型
  
用cv2.imshow()显示图片的时候这两行一定要加上,不然可能看不到图片  cv2.waitKey(0) # 等待时间,毫秒版。0表示任意键终止  cv2.destroyWindow()  1. 读取:cv.imread(‘路径.png’)#路径找到你图片的存放位置,复制过来, ".png"是图片的格式,我是直接把图片保存到和.py文件同一个路劲下  2.另存为:cv2.imwrite()  3、编写代码的时候要注意对齐  
## 边界填充
```bash
    img = cv2.imread('p1.jfif')
    top_size,bottom_size,left_size,right_szie=(50,50,50,50)
    #复制最边缘像素
    replicate=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_szie,borderType=cv2.BORDER_REPLICATE)
    #反射法,对感兴趣图像中像素在两边进行复制
    reflect=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_szie,borderType=cv2.BORDER_REFLECT)
    #反射,以最边缘像素为轴对称
    reflect101=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_szie,cv2.BORDER_REFLECT_101)
    #外包装法
    wrap=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_szie,cv2.BORDER_WRAP)
    #常量法,常数值填充
    constant=cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_szie,cv2.BORDER_CONSTANT,value=0)
    plt.subplot(231),plt.imshow(img,'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('101')
    plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP')
    plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONS')
    plt.show()
  
数值计算、两个图片 
img_cat=cv2.imread('p1.jfif')
    img_dog=cv2.imread('p2.jfif')
    print(img_dog.shape)
    print(img_cat.shape)
    img_cat2=img_cat+10
    img_cat1=(img_cat+img_cat2)[:5,:,0]
    img_cat3=cv2.add(img_cat,img_cat2)[:5,:,0]
    
    img_dog=cv2.resize(img_dog,(474,316))
    img=img_cat+img_dog
    res=cv2.resize(img_dog,(0,0),fx=2,fy=2)
    img1=cv2.addWeighted(img_cat,0.4,img_dog,0.6,0)
    
    
    
    
    
    cv2.imshow('im',img)
    cv2.imshow('im2',img1)
    cv2.waitKey(0)  
    cv2.destroyWindow()
  
对于批量注释的:按住ctrl+/可以直接将注释去掉  
运行练习的小tips 
如果安装了jupter可以直接在那个编译器,直接出结果,缺点就是要打开网页  我就直接在pycharm中新建一个py文件,写定义了一个函数,用if name语义调用就行啦。  
def cv_show():
    img = cv2.imread('p1.jfif')
    im = cv2.imread('p1.jfif', cv2.IMREAD_GRAYSCALE)  
    print(img)
    print(img.shape)
    print(im)
    print(im.shape)
    cv2.imshow('image', img)
    cv2.imshow('ima', im)
    
    cat = img[0:200, 0:200]
    cv2.imshow('cat', cat)
    
    b,g,r=cv2.split(img)
    print("b",b)
    print("b.shape", b.shape)
    img=cv2.merge((b,g,r))
    
    cur_img=img.copy()
    cur_img[:,:,0]=0
    cur_img[:,:,1]=0
    cv_show('R',cur_img)
    
    
    
    
    
    cv2.imwrite('my.png', im)  
    cv2.waitKey(0)  
    cv2.destroyWindow()
    print(type(img))  
    print(img.size)  
    print(img.dtype)  
 if __name__=="__main__":
    cv_show()
  
接下来会介绍图像的平滑操作,还有阈值,滤波计算 
                
                
                
        
    
 
 |