浅谈浅谈Opencv (上上)
Opencv (上上)
常见的图片格式:常见的图片格式:
1、jpg(jpeg) : 用最少的磁盘空间得到较好的图片质量
2、png: 无损压缩的位图片形格式
常见的图片类型:常见的图片类型:
【黑白】【彩色】
图片的本质:图片的本质:
由像素点组成的矩阵,每个元素(像素点)都是在0-255之间
为什么每个像素点都是界于0-255之间?
1、位图模式(黑白图像) 仅仅只有1位深度的图像 ->(0,1,1,1,0 …)
0->纯黑色
1->纯白色
2、灰度图像:【0,255】
有8位深度的图像
(0,0,0,0,0,0,0,0,0) ->2**0=1
(1,1,1,1,1,1,1,1,1) ->2**8 = 256 因为从0开始计数,所以为255
3、彩色图像:【0,255】
多了三个通道:RGB (色彩三原色)
一共3个通道,每个通道8个深度 产生256**3个颜色
使用使用Opencv读取第一张黑白图片读取第一张黑白图片
import cv2
#所有的路径必须是英文【存在中文读取时不报错,读取结果位None】
path = r". img.jpg"
#path: 路径 0:代表灰度图 1;彩色图
img = cv2.imread(path,0)
#opencv读进来的形式以什么样的形式存在
print(type(img))
#读取图片储存形式 (1280, 1067) [Height,Width] print(img.shape)
#储存类型:uint8 ->无符号8位整型(0,1,0,1,0,1,0,1) 255白,0黑
print(img)
确认白色与黑色及图片显示确认白色与黑色及图片显示
cv2.imshow('image',img)
cv2.waitKey(0)
图片的裁剪:矩阵的切割图片的裁剪:矩阵的切割
path1 = r"./white.png"
path2 = r"./black.png"
img1 = cv2.imread(path1,0)
img2 = cv2.imread(path2,0)
print(img1.shape,img2.shape)
#numpy叠加
import numpy as np
new_img1 = img1[:100,:130] new_img2 = img2[:300,:130] #垂直拼接,列要相等
new_img = np.vstack((new_img1,new_img2))
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
#水平拼接,行要相等
new_img3 = img1[:100,:130] new_img4 = img2[:100,:150] new_img = np.hstack((new_img3,new_img4))
cv2.imshow('new_img',new_img)
cv2.waitKey(0)
图片的保存图片的保存
#(imwrite(path,target))
cv2.imwrite(r"./newimage.jpg",new_img)