小白opencv的入门处理技巧
小白opencv的入门处理技巧
在这里插入代码片
@TOC**
在这里插入代码片
import cv2
import numpy as np
#i=cv2.imread("D:\\TP\\MT1.jfif",CV2.IMREAD_UNCHANGED) #读入图像并取名
#CV2.imshow("demo",i) #显示文件,demo是显示窗口名
#cv2.waitKey(-1) #显示文件等待时间,参数=0,无线等待;参数<0,等待键盘单击;参数>0,等待给定的毫秒
#cv2.destroyAllWindows() #删除所有的窗口
##########修改像素值########
#1.图像以灰度形式取出,提取像素的灰度值
#cv2.imwrite("D:\\TP\\MT2.jpg",i) #保存文件,i是图像名字,‘D\\TP\\MT2是路径名
#i=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_GRAYSCALE) #读入图像并取名,是灰色图形
#print(p) #打印像素点的灰度值或者BGR
#i[200,200]=120 #修改灰度值
#print(i[200,200]) #输出修改后的灰度值
#2.图像以bgr形式取出,提取像素点的bgr值
#i=cv2.imread("D:\\TP\\MT2.jfif",cv2.IMREAD_UNCHANGED)
#i[100,100,0]=100 #【100,100】像素点的b通道的值改为100. 0-b通道。1-g通道。2-r通道
#p=i[100,100] #图像第100行,100列像素点的像素值
#print(p) #打印第一百行,一百列的像素点的像素值
#i[100,200]=[250,250,250] #修改第100行,200列的像素点的b通道值改为250,g通道改为250,r通道改为250
#i=[100,200]
#print(i)
#2.范围修改
#i=cv2.imread("D:\\TP\\MT1.jfif")
# cv2.imshow('original',i)
# i[50:100,100:200]=[100,200,100] #将制定范围(50:100,100:200)的bgr值修改为【100.200.100】
# cv2.imshow('original2',i)
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
#
##########numpy处理图像##########
# import cv2
# import numpy as np
# # i=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_UNCHANGED) #读入文件,彩色模式
# print(i.item(100,100,0)) #输出100行,100列像素点0通道的值
# i.itemset((100,100,0),255) #修改100行,100列像素点0通道的值为255
# print(i.item(100,100,0)) #输出修改后0通道的值
# print(i.item(100,100,1)) #输出100行,100列1通道的值
# i.itemset((100,100,1),255) #修改1通道的值为255
# print(i.item(100,100,1)) #输出修改后的值
# print(i.item(100,100,2)) #输出100行,100列2通道的值
# i.itemset((100,100,2),255) #修改2通道的值
# print(i.item(100,100,2)) #输出修改后的2通道的值
############获取图像的属性##########
#import cv2
# img1=cv2.imread("D:\\TP\\MT1.jfif",cv2.IMREAD_GRAYSCALE) #读取灰色图像
# img2=cv2.imread("D:\\TP\\MT2.jfif") #读取彩色图像
# print(img1.shape) #shape获取图像的形状,返回行,列,通道的元组,若为灰度图像则返回行列数
# print(img1.size) #size获取图像的像素数目,灰度图则行*列,彩色图像返回行*列*通道
# print(img1.dtype) #dtype返回每个像素点的数据类型
#
# print(img2.shape) #shape可获取图像的属性,返回行,列,通道的元组
# print(img2.size) #size获取图像的像素数目,彩色图返回行*列*通道,灰度图则返回行*列
# print(img2.dtype) #dtype返回像素点的数据类型
#########图像roi(region if interest 图像感兴趣区域)
#从被处理的图像以方框,椭圆之类的形状勾勒出所需要得到处理的区域
#通过各种算法(operator)和函数来求感兴趣区域的roi,并对图像进行下一步处理
#########同一图像的复制
# import cv2
# import numpy as np
# a=cv2.imread("D:\\TP\\MT2.jfif")
# face=np.ones((101,101,3)) #创建101行*101列图像,3通道
# cv2.imshow("a",a) #显示图像a
# face=a[220:400,230:350] #提取a图像的感兴趣区域赋值给face
# a[0:180,0:120]=face
# cv2.imshow('face',face)
# cv2.imshow('result',a)
# cv2.waitKey()
# cv2.destroyAllWindows()############不同图像的复制
# a=cv2.imread("D:\\TP\\MT1.jfif") #读取彩色图像
# b=cv2.imread("D:\\TP\\MT2.jfif") #读取彩色图像
# face=np.ones((101,101,3)) #创建一个感兴趣区域,101列,101行,3通道
# cv2.imshow('qwe',a) #显示a图片
# cv2.imshow('qwe2',b) #显示图片b
# cv2.imshow('face',face) #显示创建的空白图片face
# face=a[200:300,250:350] #提取图片a中感兴趣区域赋值给face
# b[40:140,100:200]=face #将感兴趣的区域赋给图片b
# cv2.imshow('result',b) #显示最终的结果
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
# cv2.imshow('face',b) #显示b区域
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
# face=img1[500:700,200:400] #通过下标方式选取
# img1[600:800,400:600]=face #将face区域复制到指定区域【200:400,300:500】
# cv2.imshow('result',i)
# cv2.waitKey(-1)
# cv2.destroyAllWindows()
###############通道的拆分与合并##########33
#通道的拆分1
a=cv2.imread("D:\\TP\\MT2.jfif",cv2.IMREAD_UNCHANGED)
b,g,r=cv2.split(a)
cv2.imshow('b',b)
cv2.imshow('g',g)
cv2.imshow('r',r)
cv2.waitKey()
cv2.destroyAllWindows()
#通道的拆分2
# a=cv2.imread("D:\\TP\\MT2.jfif")
# b=cv2.split(a)[0]
# g=cv2.split(a)[1]
# r=cv2.split(a)[2]
# cv2.imshow('B',b)
# cv2.waitKey()
# cv2.destroyAllWindows()
#图像的合并
#原通道的合并
import cv2
import numpy as np
# a=cv2.imread("D:\\TP\\MT1.jfif")
# b,g,r=cv2.split(a)
# bgr=cv2.merge([b,g,r])
# rgb=cv2.merge([r,g,b])
# cv2.imshow('bgr',bgr)
# cv2.imshow('rgb',rgb)
# cv2.waitKey()
# cv2.destroyAllWindows()
##单通道与双通道的合并
##b通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=cv2.split(a)[0]
# g=np.zeros((rows,cols),dtype=a.dtype)
# r=np.zeros((rows,cols),dtype=a.dtype)
# m=cv2.merge([b,g,r])
# cv2.imshow('B-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
##g通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=np.zeros((rows,cols),dtype=a.dtype)
# g=cv2.split(a)[1]
# r=np.zeros((rows,cols),dtype=a.dtype)
# m=cv2.merge([b,g,r])
# cv2.imshow('g-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
##r通道与其他两个通道的合并
# a=cv2.imread("D:\\TP\\MT2.jfif")
# rows,cols,chn=a.shape
# b=np.zeros((rows,cols),dtype=a.dtype)
# g=np.zeros((rows,cols),dtype=a.dtype)
# r=cv2.split(a)[2]
# m=cv2.merge([b,g,r])
# cv2.imshow('r-merge',m)
# cv2.waitKey()
# cv2.destroyAllWindows()
以上就是opencv简单的操作了,后面还会继续进行讲解,里面的都不太难,就是需要大量的练习。
小白opencv的入门处理技巧相关推荐
- 零基础小白,如何入门计算机视觉?
文章目录 零基础小白,如何入门计算机视觉? 宏观认识 入门书籍 进阶书籍 深入实践 深度学习 视觉SLAM 此文发于公众号:计算机视觉life. 原文链接:零基础小白,如何入门计算机视觉? 零基础小白 ...
- OpenCV Java入门六 使用神经网算法辩识人脸
介绍 前面几章我们积累了足够的opencv使用技巧.这一章我们就会进入最激动人心的辩识人脸.我们知道识脸和辩识人脸有着本质的区别. 识脸:这是一个人的脸. 辩识人脸:这是谁的脸,这才是我们需要的. 我 ...
- 免费送书啦!《 OpenCV图像处理入门与实践》一本全搞定
OpenCV 的基础图像操作都只是针对图像中的像素点,并不是直接对图像整体进行的操作.而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作. 1.图像加法 对于两张相同 ...
- ztree树封装 json实例_小白7天入门PHP Web开发 - Day 6[下](综合)个人博客实例讲解用户数据的存储...
<小白7天入门PHP Web开发>系列文章,面向单纯善良的完全不懂Web开发编程的入门速成课程,小白们如果感兴趣可以研读此系列文章,也可以连线提问.各路大神有何指教还请指点一二.希望各路大 ...
- MarkDown入门及技巧
MarkDown入门及技巧 你可以在Github上看到这篇文档的纯文本https://github.com/onlynight/ReadmeDemo/tree/master/Readmes/MarkD ...
- python视频教程从入门到精通全集-零基础小白python从入门到精通视频(全60集)...
零基础小白python从入门到精通视频(全60集)课程目录: [真心软件]01Python编程语言历史及特性.mp4 [真心软件]02Python编程语言初接触.mp4 [真心软件]03Python程 ...
- OpenCV 机器视觉入门精选 100 题(附 Python 代码)
点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 如今深度学习的快速发展给计算机视觉注入了前所未有的新活力!其中在计算机图形学和计算机视觉里面最 ...
- OpenCV图像入门
OpenCV图像入门 OpenCV图像入门 目标 源代码 解释 OpenCV图像入门 目标 在本教程中,您将学习如何: 从文件读取图像(使用cv :: imread) 在OpenCV窗口中显示图像(使 ...
- [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
最新文章
- subprocess installed post-installation script returned error exit status 1
- Dokcer进阶之Compose 实战官方flask、wordpress、spring-boot
- 推荐系统笔记(其它应用算法)
- 在Windows下为PHP安装redis扩展
- mysql数据库备份(完全备份,增量备份)
- Android Handler异步通信:深入详解Handler机制源码
- 算法工程师面试基础题目及答案
- Lucid Dream
- 双赛道近四百万奖金,2021全国人工智能大赛来了
- Initramfs文件系统的制作
- vector<int> v 与 vector<int> v(n) 的区别
- Excel中VLOOKUP函数的详细用法(灰常有用,求加精!求加精!)
- kerboros协议讲解
- 动手写操作系统3----软盘读写逻辑实现
- 漏洞分析丨HEVD-0x8.IntegerOverflow[win7x86]
- 行业研究报告-全球与中国电压变送器市场现状及未来发展趋势
- java调试体系(JDPA)
- 输电线路巡检机器人PPT_常见的电力行业智能巡检方案.ppt
- java mp3 信息_java读取MP3的信息 | 学步园
- 基于Lucene shingle英文单词NGram Analyzer的实现
热门文章
- 【Solidity】8. 杂项 - 深入理解Solidity
- Kernel Data Structures [LKD 06]
- MySql索引查询优化 千万级数据普通查询和建立索引后数据查询耗时对比
- 苏州IT/互联网交流群
- 【repo使用指南】
- Segment Routing基础知识
- clang++.exe: error: unknown argument: ‘-static-openmp‘ ninja: build stopped: subcommand failed.
- 【HHHOJ】ZJOI2019模拟赛(十五)03.17 解题报告
- 论文笔记 ACL2021|CLEVE-Contrastive Pre-training for Event Extraction
- 《追风筝的人》or《THE KITE RUNNER》