数字图像处理(2)—OPENCV–学习笔记(颜色,色域,控制条)

文章目录

  • 前言
  • 一、数字图像处理—–色彩空间
  • 二、图形绘制,RGB等色域
  • 1.颜色空间转化
  • 2.mat 数据结构,ndarray,深浅拷贝
  • 3.颜色通道分离合并
  • 4.画图(矩形,圆,多边形)
  • 5.文本绘制(写字)
  • 总结

前言

系列文章目录

数字图像处理 :一共()章。

2.颜色,色域转换,控制条 : (本文章)

5.敬请期待

一、数字图像处理—–色彩空间?

色彩空间–理论部分

实验大作业所需理论部分 :大作业实验openCV-数字图像处理(所需理论)

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)

; 二、操作

1.改变色域

代码如下(示例):

#关键API cv2.cvtColor
import cv2

def callback(value):
    pass

cv2.namedWindow('color',cv2.WINDOW_NORMAL)
cv2.resizeWindow('color',700,680)

img = cv2.imread('./pic/cat.png')

#定义颜色空间
colorspaces = [
    cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,
    cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV,
    cv2.COLOR_BGR2YUV
]

#设置trackbar
cv2.createTrackbar('trackbar','color',0,4, callback)

cv2.putText(img,'cute cat',(30,300), cv2.FONT_HERSHEY_COMPLEX_SMALL,3,[0,255,0])
while True:
    index = cv2.getTrackbarPos('trackbar','color')
    cvt_img = cv2.cvtColor(img, colorspaces[index])
    cv2.imshow('color',cvt_img)

    key = cv2.waitKey(10)
    if key == ord('a'):
        break
cv2.destroyAllWindows()

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)

2.mat 数据结构,ndarray,深浅拷贝

理论部分:

B复制A,A变,B变,浅拷贝。 (相当于共享出去的)
B复制A,A变,B不变,深拷贝。 (独立复制出去的)

代码如下(示例):

#CV用的mat数据结构,
#mat是C++用的,python封装了一层,numpy的darray

import cv2
import numpy as np

img = cv2.imread('./pic/cat.png')

#浅拷贝
img2 = img.view()

#深拷贝
img3 = img.copy()

img [10:100,10:100] = [0,0, 255]

cv2.imshow('img',np.hstack((img,img2,img3)))

cv2.waitKey(0)
cv2.destroyAllWindows()

3.颜色通道分离合并(RGB)

import cv2
import numpy as np

img = cv2.imread('./pic/cat.png')

b,g,r = cv2.split(img)

b[10:100,10:100] = 255
g[10:100,10:100] = 255

img2 = cv2.merge((b, g, r))

cv2.imshow('img',img)
cv2.imshow('b',b)
cv2.imshow('g',g)
cv2.imshow('r',r)
cv2.imshow('img2',img2)

cv2.waitKey(0)
cv2.destroyAllWindows()

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)

我们能看出每个色域会有区别,明亮程度

4.画图(基于numpy的库)

分别画矩形,圆,多边形:坐标形式:二维平面坐标–顺时针旋转90°,详情如下

数字图像处理—-坐标理论(二维三维)

#直线,矩形cv2.line()

import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)

img,初始点,结束点,颜色,。。
cv2.line(img,(10,20),(10,400),(0,0,255),5,4)
cv2.line(img,(10,400),(300,400),(0,0,255),5,4)
cv2.line(img,(300,400),(300,20),(0,0,255),5,4)
cv2.line(img,(300,20),(10,20),(0,0,255),5,4)

img,初始点,对角点,颜色,。。
cv2.rectangle(img,(30,40),(200,300),(0,255,0),5,4)

cv2.imshow('draw',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#圆
import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)
img,圆心,半径,颜色,。。
cv2.circle(img,(320,240),100,(0,0,255),5,4)
img,圆心,,椭圆的a,b,角度,起始角度,结束角度,颜色,。。
cv2.ellipse(img,(320,240),(100,50), 0, 0, 360, [0,0,255],5,16)

cv2.circle(img,(320,240),45,(0,255,0),5,4)

cv2.imshow('draw',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#多边形
import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)

#把每个点作为,数组一部分
pts1 = np.array([[(100,100),(200,200),(100,300),(400,300)]],np.int32)
cv2.polylines(img,[pts1],True,(0,0,255),5,4)
#填充多边形
pts = np.array([[(120,120),(220,220),(320,420),(450,360)]],np.int32)
cv2.fillPoly(img,pts,(0,255,0))

cv2.imshow('draw',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)

5.文本绘制(写字)

英文可以直接写,,但是中文需要额外的pillow包

#文本
import cv2
import numpy as np

img = np.zeros((480,640,3),np.uint8)

cv2.putText(img,'hi na na',(30,300), cv2.FONT_HERSHEY_COMPLEX_SMALL,3,[0,255,0])

cv2.imshow('draw',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#使用OpenCV绘制中文,pillow包
#Windows,自带很多字体
#pip install pillow -i http://pypi.douban.com/simple
#导入: from PIL import ImageFont, ImageDraw,Image

from PIL import ImageFont, ImageDraw,Image

img = np.full((480,640,3),fill_value = 255,dtype = np.uint8)

font = ImageFont.truetype('./Fonts/msyh.ttc',15)

img_pil = Image.fromarray(img)
draw = ImageDraw.Draw(IMG_PIL)

#draw.text((10,140), '妈妈',font=font, fill=(0, 255, 0, 0))
draw.text((10,150), 'mama', font = font, fill = (0,0,255,0))
img = np.array(img_pil)

cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

数字图像处理(2)---OPENCV--学习笔记(颜色,色域,控制条)

总结

日积月累,第二章颜色变换,,期待第三章吧。

Original: https://blog.csdn.net/weixin_56228140/article/details/126636390
Author: 卡尔-TONY
Title: 数字图像处理(2)—OPENCV–学习笔记(颜色,色域,控制条)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/645083/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球