CV-基础知识及原理总结
1 本体
概念: 计算机视觉中的图像由像素点组成。
300*500的图片 x*y注意是先w*h ,宽为300 高为500,x向排列300个像素点
每个像素点即是一个数值(根据颜色通道而定)0-255 0 为黑色,255为最亮,即白色
通道:彩色图片,rgb,opencv bgr,三通道,即一个像素点在r通道有一个值,在g通道有一个值,b同理。合在一起显示了最终该像素点颜色。
黑白图片 通道只有一个。
帧:视频每秒设备处理的一张图片。比如每秒30帧,人眼看着就是很自然,1秒钟处理30张图片。
openCV使用
基本读取:
image=r"images/andrew_j_feustel_lmks5_rgb_test.jpg"
base="images/cv_debug"
faceid=cv2.imread(image)
print(faceid.shape)
face_part=faceid[90:170,375:475]
import time
save=os.path.join(base,"image_%s.jpg"%int(time.time()))
cv2.imwrite(save,face_part)
# ######## 绘制 框
save_rects=os.path.join(base,"image_rects_%s.jpg"%int(time.time()))
cv2.rectangle(faceid,(375,90),(475,170),color=(0,0,255),thickness=4)
cv2.imwrite(save_rects,faceid)
# ######## 绘制圆点
save_cir = os.path.join(base, "image_circle_%s.jpg" % int(time.time()))
for cor in [(100,100),(500,500)]:
cv2.circle(faceid, cor, color=(0,0,255),radius=10)
cv2.imwrite(save_cir, faceid)
# ######## 图像按照颜色通道分割
b,g,r=cv2.split(faceid)
c=1
for s in (b,g,r):
cv2.imwrite("%s_%s.jpg"%(c,int(time.time())), s)
c+=1
# ######## 三个通道的数据merge
yuhang=cv2.merge((b,g,r))
cv2.imwrite("yuhang.jpg", yuhang)
blue=faceid.copy()
blue[:,:,1]=0
blue[:, :, 2] = 0
cv2.imwrite("blue.jpg", blue)
# ######## 单独建一个数据结构,不在原数据上操作,也可copy.deepcopy()
red=faceid.copy()
# ######## 对数据0,1通道全部数据置为最暗颜色/显示为全黑色。剩下的通道即为显现颜色。全红或全绿。
red[:,:,0]=0
red[:, :, 1] = 0
cv2.imwrite("red.jpg", red)