当前位置 博文首页 > soul_study的博客:基于python的opencv快速入门第一篇
? opencv是一个基于BSD许可发行的跨平台计算机视觉库,而在我个人看来,因为其可以用于Linux,也就意味着可以装载在树莓派的嵌入式系统上。十分有利于我开发机器人视觉方面的问题。当然,我并不是计算机专业,对于其中更深层次的算法没有追求,还是追求更高效的利用这个库来完善我的机器人等方面。
? 其中配置安装方面的问题我就不多加赘述,csdn上有许多相关文章,建议大家可以看,如果有问题私聊相关作者也是十分不错的选择。
? 当然,本人认为该方面应用更难,所以会尝试写出更多练习代码,当然,大部分源于李立宗的《Opencv轻松入门:面向Python》。这只是我总结的知识点,便于忘记时候快速查询,而不是一篇教程。
import numpy as np
img = np.zeros((8,8),dytpe = np.uint8)
Notes:
- as np 可以不适用,但是使用可以更简便
- 该代码表示生成一个8x8的灰度矩阵
img[0,3] = 255
Notes:
- 该代码表示将[0,3]像素改为白色
import cv2
img = cv2.imread("img.jpg",0)
Notes:
- 表示读取img灰度图像
img = np.zeros((300,300,3),dtype=np.uint8)
import cv2
import numpy as np
img = np.zeros((300,300,3),dtype=np.uint8)
img[:,:,0] = 255
img[:,:,1] = 255
img[:,:,2] = 255
cv2.imshow("img",img)
cv2.waitKey()
cv2.destroyAllWindows()
- 其中imshow表示弹出一个窗口显示画面,名叫img
- imshow函数下必须有waitkey()函数
- 该函数表示等待输入,如果有按键退出窗口
- destroyAllwindows表示关闭所有窗口
- 都是一些比较基本的函数,记住即可
item(行,列,通道)
示例:
- 读取First.jpg的第一行第一列的G通道数值
import cv2 lena = cv2.imread("First.jpg") print("读取像素点= ", lena.item(1,1,1))
- 函数itemst()可以用来修改像素值
- 语法格式为
itemset(索引值,新值)
示例
生成一个灰度图像,其中的像素值均为随机数
import numpy as np import cv2 img = np.random.randint(0,256,size=[256,256],dtype = np.uint8) cv2.imshow("demo",img) cv2.waitKey() cv2.destoryAllWindows
1.4感兴趣区域(ROI)
图像中的数字分别表示行号和列号。那么,图像中黑色ROI可以表示为
img[200:400,200:400]
通过一下语句可以将ROI复制到该区域右侧
a=img[200:400,200:400] img[200:400,600:800]=a
同时,也可以使用该方法进行打码处理import cv2 import numpy as np a=cv2.imread("lenacolor.png", cv2.IMREAD_UNCHANGED) cv2.imshow("original", a) face=np.random.randint(0,256, (180,100,3)) a[220:400,250:350]=face cv2.imshow("result", a) cv2.waitKey() cv2.destroyAllWindows()
1.5 通道操作
通道拆分
- 可以通过索引拆分
- 比较麻烦,直接讲第二种
- 通过cv2.split(img)函数拆分
- 语法如下
b,g,r = cv2.split(img)
通道合并
- 利用cv2.merage()可以实现合并
- 语法如下
rgb=cv2.merge([r,g,b])
示例
先拆分通道,再表示b,br分别为0的图像
再合并图像
import cv2 lena = cv2.imread("First.jpg") cv2.imshow("lena1",lena) b,g,r = cv2.split(lena) cv2.imshow("b",b) cv2.imshow("g",g) cv2.imshow("r",r) lena[:,:,0]=0 cv2.imshow("lenab0",lena) lena[:,:,1]=0 cv2.imshow("lenab0g0",lena) bgr=cv2.merge([b,g,r]) cv2.imshow("bgr",bgr) cv2.waitKey() cv2.destroyAllWindows()
图像运行结果可自行尝试
1.6 获取图像属性
import cv2 color = cv2.imread("First.jpg") print("图像colorshux:") print("color.shape=", color.shape) print("color.size=", color.size) print("color.dtype= ",color.dtype)
该代码比较常用,是固定套路,可以记住。
以上就是今日内容,因为主要在于实践,背后还有很多实验代码乃至于我用了一个下午学习该部分,大家也可以多加尝试
cs
最新 更多<<
soul_study的博客:基于python的opencv快速入门第一篇 Eddy_zheng的博客:走进Python-OpenCV:cv2.imread(),cv2.imshow( csdn_bajie:Python+OpenCV详细教程系列 上位机菜鸟程序员的博客:python配置OpenCV环境 Lin-CT的博客:Python下OpenCV环境配置详细教程 官礼民的博客:【学习笔记】安装python+opencv+vscode与配置环境 python如何对比图像的区别_weixin_39947396的博客:python图像对 称霸学前班的博客:基于Python的Opencv学习 呆呆的猫的博客:python——opencv入门(一) sylvester的博客:Windows下Python安装OpenCV详细步骤 sunny2038的专栏:OpenCV Python教程(1、图像的载入、显示和保 LeBronJames2的博客:手把手教你如何玩转消息中间件(ActiveMQ) tftpd32 中文版 下载,tftpd32免安装版使用教程 AI浩:深度学习的开胃菜——常用的机器学习知识梳理 兄弟连_战地日记:一位兄弟连毕业生给学弟学妹的经验之诗 ◣歹匕亡ㄋ日記◥:【Web】HTML+ JS+ CSS 的五子棋(简单AI) liaxi z的博客:html五子棋人机对战,JS+canvas实现五子棋人机大 赫奇。的博客:五子棋游戏(JavaScript+JQuery+Canvas) weixin_34107739的博客:ETC核心技术团队CTO空降上海,引领高校 weixin_34061042的博客:html+css+javascript 完成一个简单五子 免费ftp服务器,Linux 轻量应用服务器搭建 FTP 服务 帅地:又来了,学弟学妹把教材收起来吧,二叉堆看我这篇就妥了 923723914:IT毕业生给学弟学妹们的真心话——离校座谈记录 努力充实,远方可期:【谷粒商城】分布式事务与下单 努力充实,远方可期:【Jenkins】持续集成环境实战 努力充实,远方可期:【JVM】说说双亲委派源码、SPI、线程上下文 【欢迎关注,一起学习,共同进步!】:【爬虫实战】每日健康上报 【欢迎关注,一起学习,共同进步!】:【爬虫实战】B站网课不想 黑狼极速ftp,支持批量连接的FTP工具 B站网课】复习课_【欢迎关注,一起学习,共同进步!】:【现代控