opencv 学习笔记 (图像基础)
来源:互联网 发布:python opencv3.0 svm 编辑:程序博客网 时间:2024/05/16 18:18
1. 读图像,显示图像,保存图像
读图像,显示的格式有:彩色(1) cv2.IMREAD_COLOR,灰度(0) cv2.IMREAD_GRAYSCALE
import cv2img = cv2.imread('01.png', cv2.IMREAD_COLOR)cv2.imshow('image', img)k = cv2.waitKey(0)cv2.imwrite('02.png', img)cv2.destroyAllWindows()
彩色的img的shape对应 hight, width, channel,通道对应[blue, green, red],每个点位三个颜色通道的值,当分量为0,表示没有该颜色分量,最大值为255,处理后的 img2 没有红色分量
>>> img.shape>>> [611,736,3] >>> cc = [1, .5, 0] # blue, green, red BGR>>> img2 = img * cc
灰色图像对应的shape为 ,每个点位一个灰度值
>>> img.shape>>> [611,736]
显示图像等待时长,0为无限时长等待,k = cv2.waitKey(0),可以选择其他方式退出,按esc为’27’,或者按’S’键保存图像
k = cv2.waitKey(0)if k == 27: cv2.destroyAllWindows()if k == ord('s'): cv2.imwrite('neo_great.png', img) cv2.destroyAllWindows()
显示图像可以用pylab,但是注意用pylab的显示颜色为RGB,要保证和原图像一致,需颠倒颜色通道顺序
import pylab as plimg=cv2.imread('01.png')img=img[:,:,::-1]# b,g,r=cv2.split(img) 或者 b,g,r=(img[:,:,0],img[:,:,1],img[:,:,2])# img=cv2.merge([r,g,b])pl.imshow(img)pl.show()
提取某一象素点的颜色,或者直接修改
px = img[100,100]>>> print px>>> [157 166 200]img[10,10]=[0,0,255]
照10张棋盘图片,用于标定相机
def take_photo(): cap=cv2.VideoCapture(0) i=0 while True: ret,frame=cap.read() cv2.imshow('img', frame) k=cv2.waitKey(1) if k==ord('s'): cv2.imwrite('front_%d.png'%i,frame) i+=1 if i==10: break cap.release() cv2.destroyAllWindows()
2. 相机标定
对象点,是3D空间的点,用numpy创建这些点,去Z=0平面上的点,角点个数为x*y
图像点,是2D平面的点,就是用 cv2.findChessboardCorners 这个函数找出图像上的(x,y)个角点,corner就是角点在图像上的坐标,就是图像点
def calibrate(x,y,n=10): objpoints=[] imgpoints=[] for i in range(n): # object points objp=np.zeros((x*y,3),np.float32) objp[:,:2]=np.mgrid[0:x,0:y].T.reshape(-1,2) # image points img=cv2.imread('front_%d.png'%i,cv2.IMREAD_GRAYSCALE) ret,corner=cv2.findChessboardCorners(img,(x,y),None) if ret==True: objpoints.append(objp) imgpoints.append(corner) ret,mtx,dist,rvec,tvec=cv2.calibrateCamera(objpoints,imgpoints,img.shape[::-1],None,None) return corner,mtx,dist,rvec,tvec
0 0
- opencv 学习笔记 (图像基础)
- OpenCV学习笔记一:图像基础操作
- OpenCV学习笔记6-图像的基础操作
- openCV笔记:图像处理基础
- openCV学习笔记(5)-- 图像形态学
- openCV学习笔记(9)-- 图像剪切
- OpenCv学习笔记(二):图像模糊
- OpenCV 学习笔记(1)显示图像
- OpenCV(学习笔记3)-图像腐蚀
- OpenCV(学习笔记4)-图像模糊
- OpenCV(学习笔记7)-图像修复
- OpenCV学习笔记(一):图像显示
- opencv学习笔记(十四)图像金字塔
- Opencv学习笔记-显示图像
- OpenCV学习笔记-显示图像
- OpenCV学习笔记-图像金字塔
- OpenCV学习笔记-图像分割
- OpenCV学习笔记-图像分割
- js 中object对象转json
- 【Swift】UISearchBar输入框的背景颜色
- LaunchImage和LaunchScreen.xib混用出现的坑
- 浅议 Dynamic_cast 和 RTTI
- Jedis对管道、事务以及Watch的操作详细解析
- opencv 学习笔记 (图像基础)
- c链表
- Kotlin
- UML-类图
- oracle自动分区设置
- 进程间通信匿名管道
- Reverse Bits
- 一周stackoverflow热门问题选登:如何用Python for循环实现列表中数据两两循环打印?
- 数据环隔位取数