OpenCv-色彩域

OpenCv-色彩域

原创

mb62b85d3e5336e博主文章分类:opencv色彩 ©著作权

文章标签 ide xml 人脸检测 文章分类 Python 后端开发

©著作权归作者所有:来自51CTO博客作者mb62b85d3e5336e的原创作品,请联系作者获取转载授权,否则将追究法律责任

常见色彩空间

  • RGB
  • HSV
  • HIS
  • YCrCb
  • YUV

色彩空间转换

  • 最常见的两个

  • HSV与RGB

  • YUV与RGB

代码练习3(颜色空间转换,通道分割,色彩追踪):

import cv2 as cvimport numpy as npimage_path = "datasources/images/1 (1).jpg"vido_path = "E:\\视频剪辑素材\\yizhan.mp4"def replace_color(image):    src = cv.imread(image)        HSV = cv.cvtColor(src, cv.COLOR_BGR2HSV)    cv.imshow("HSV", HSV)    HLS  = cv.cvtColor(src, cv.COLOR_BGR2HLS)    cv.imshow("HIS", HLS)    YCrCb = cv.cvtColor(src, cv.COLOR_BGR2YCrCb)    cv.imshow("YCrCb", YCrCb)    YUV = cv.cvtColor(src, cv.COLOR_BGR2YUV)    cv.imshow("YUV", YUV)    cv.waitKey(0)    cv.destroyAllWindows()def colcor_track(vido):    caputer = cv.VideoCapture(vido)    while(True):        ret, frame = caputer.read()        if ret==False:            break                hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)        hmain =  np.array([35, 43, 46])        hmax = np.array([77, 255, 255])        msk = cv.inRange(hsv, hmain, hmax)        cv.imshow("yizhan_video", frame)        cv.imshow("mask_vedo", msk)        c = cv.waitKey(40)        if c==27:            breakdef split_iamge(image):    src = cv.imread(image, 1)        b, g, r = cv.split(src)    cv.imshow("b", b)    cv.imshow("g", g)    cv.imshow("r", r)    src[:, :, 0] = 255    cv.imshow("change_channels2", src)        new_image = cv.merge([b, g, r])    cv.imshow("new_imge", new_image)    cv.waitKey(0)    cv.destroyAllWindows()if __name__ =="__main__":            split_iamge(image_path)

人脸检测

import cv2 as cvimport numpy as npimport osimage_path = "../personimage/AFLW/0004-image64929.jpg"xml_path = "../opencvcore/opencv/data/haarcascades/haarcascade_frontalface_alt_tree.xml"video_path = "E:\\视频剪辑素材\\lzlh.ts"def person_face_detect(image, xml):    src = cv.imread(image)        cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)    cv.namedWindow("result", cv.WINDOW_AUTOSIZE)    cv.imshow('input image', src)        gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)        face_detector = cv.CascadeClassifier(xml)        faces = face_detector.detectMultiScale(gray, 1.02, 5)        for x, y, w, h in faces:        cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)    cv.imshow("result", src)    cv.waitKey(0)    cv.destroyAllWindows()def face_interfac(src, xml):            cv.namedWindow("result", cv.WINDOW_AUTOSIZE)            gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)        face_detector = cv.CascadeClassifier(xml)        faces = face_detector.detectMultiScale(gray, 1.02, 5)        for x, y, w, h in faces:        cv.rectangle(src, (x, y), (x+w, y+h), (0, 0, 255), 2)    cv.imshow("result", src)def person_face_video():    caputer = cv.VideoCapture(video_path)    while(True):        ret, frame = caputer.read()        if ret==False:            break        face_interfac(frame, xml_path)        if cv.waitKey(1)==0:            breakif __name__ == "__main__":    person_face_detect(image_path, xml_path)

验证码识别(tesseract-OCR+pytesseract )

import cv2 as cvfrom PIL import Imageimport pytesseractimage_path = "datasources/yzm/a510513a-7bc6-4217-bfb3-ad3c197c0e3d.png"def recognize_text():    src = cv.imread(image_path, 1)    cv.imshow("原来", src)    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)        ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)                    kernel = cv.getStructuringElement(cv.MORPH_RECT, (1, 2))            binl = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel)            kernel = cv.getStructuringElement(cv.MORPH_RECT, (2, 1))            open_out = cv.morphologyEx(binl, cv.MORPH_OPEN, kernel)            cv.bitwise_not(open_out, open_out)    cv.imshow("转换", open_out)            textImage = Image.fromarray(open_out)            text = pytesseract.image_to_string(textImage)    print("This OK:%s"%text)    cv.waitKey(0)    cv.destroyAllWindows()if __name__ == "__main__":    recognize_text()
  • 总结(全):
基本完成,边缘提取分三个步骤(1.图像降噪2.计算图像梯度3.非极大值抑制4.阈值筛选),膨胀和腐蚀可以降低image的噪声,这里的人脸检测其实就是将人脸图像二值化,调用haarcascades的级联检测器实现的,验证码也是通过二值化然后使用Google的pytesseract +ocr实现的。重点: Canny边缘提取、人脸检测,验证码识别难点: 膨胀与腐蚀
  • 收藏
  • 评论
  • *举报

Original: https://blog.51cto.com/u_15698642/5418954
Author: mb62b85d3e5336e
Title: OpenCv-色彩域

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

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

(0)

大家都在看

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