IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021-08-23opencv入门基本操作 -> 正文阅读

[人工智能]2021-08-23opencv入门基本操作

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#所有像素点的值加10
    img_cat1=(img_cat+img_cat2)[:5,:,0]#大于256的值取余
    img_cat3=cv2.add(img_cat,img_cat2)[:5,:,0]#超过255的值取255

    #图像融合
    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)#按权重相加

    # plt.subplot(231), plt.imshow(img_cat, 'img_cat'), plt.title('img_cat')
    # plt.subplot(232), plt.imshow(img_dog, 'img_dog'), plt.title('img_dog')
    # plt.subplot(233), plt.imshow(img, 'img'), plt.title('img')
    # plt.subplot(234), plt.imshow(img1, 'img1'), plt.title('img1')
    # cv2.imshow('res',res)
    cv2.imshow('im',img)
    cv2.imshow('im2',img1)
    cv2.waitKey(0)  # 等待时间,毫秒版。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)  # 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)  # 数据的类型
 if __name__=="__main__":
    cv_show()#图像基本操作操作,转换读取保存 

接下来会介绍图像的平滑操作,还有阈值,滤波计算

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:33:09  更:2021-08-24 15:34:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:29:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码