OpenCV 中的图像处理
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                OpenCV 中的图像处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            顏色空間轉換
目標
? 你將學習如何對圖像進行顏色空間轉換,比如從BGR 到灰度圖,或者從BGR 到HSV 等。
? 我沒還要創建一個程序用來從一幅圖像中獲取某個特定顏色的物體。
 
 
 
                            
                        
                        
                        目標
? 你將學習如何對圖像進行顏色空間轉換,比如從BGR 到灰度圖,或者從BGR 到HSV 等。
? 我沒還要創建一個程序用來從一幅圖像中獲取某個特定顏色的物體。
? 我們將要學習的函數有:cv2.cvtColor(),cv2.inRange() 等。
# -*- coding: utf-8 -*- """ Created on Mon Jan 22 14:06:05 2018 """import cv2 import numpy as np from matplotlib import pyplot as plt#opencv 讀圖 img = cv2.imread("E:\\python\\opencv\\images\\demo0.png")#轉換顏色空間 #對于BGR$Gray 的轉換,我們要使用的flag 就是cv2.COLOR_BGR2GRAY。同樣對于BGR$HSV 的轉換,我們用的flag 就是cv2.COLOR_BGR2HSV。 #你還可以通過下面的命令得到所有可用的flag。 ''' flags=[i for i in dir(cv2) if i.startswith('COLOR_')] print flags '''#注意:在OpenCV 的HSV 格式中,H(色彩/色度)的取值范圍是[0,179],S(飽和度)的取值范圍[0,255],V(亮度)的取值范圍[0,255]。但是不 #同的軟件使用的值可能不同。所以當你需要拿OpenCV 的HSV 值與其他軟件的HSV 值進行對比時,一定要記得歸一化。#物體跟蹤 #提取的是一個藍色的物體例子 ''' cap=cv2.VideoCapture(0) while(1):# 獲取每一幀ret,frame=cap.read()# 轉換到HSVhsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)# 設定藍色的閾值lower_blue=np.array([110,50,50])upper_blue=np.array([130,255,255])# 根據閾值構建掩模mask=cv2.inRange(hsv,lower_blue,upper_blue)# 對原圖像和掩模進行位運算res=cv2.bitwise_and(frame,frame,mask=mask)# 顯示圖像cv2.imshow('frame',frame)cv2.imshow('mask',mask)cv2.imshow('res',res)k=cv2.waitKey(5)&0xFFif k==27:break # 關閉窗口 cv2.destroyAllWindows() '''#圖像平滑,OpenCV 提供的函數cv.filter2D() 可以讓我們對一幅圖像進行卷積操作。 ''' kernel = np.ones((5,5),np.float32)/25 dst = cv2.filter2D(img,-1,kernel) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(dst),plt.title('Averaging') plt.xticks([]), plt.yticks([]) plt.show() '''#這是由一個歸一化卷積框完成的。他只是用卷積框覆蓋區域所有像素的平均值來代替中心元素。可以使用函數cv2.blur() 和cv2.boxFilter() 來完這個任務。 ''' blur = cv2.blur(img,(5,5)) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(blur),plt.title('Blurred') plt.xticks([]), plt.yticks([]) plt.show() '''#高斯模糊,實現的函數是cv2.GaussianBlur()。我們需要指定高斯核的寬和高(必須是奇數)。以及高斯函數沿X,Y 方向的標準差。 #如果我們只指定了X 方向的的標準差,Y 方向也會取相同值。如果兩個標準差都是0,那么函數會根據核函數的大小自己計算。高斯濾波可以有效的從圖像中去除高斯噪音。 #0 是指根據窗口大小(5,5)來計算高斯函數標準差 ''' blur = cv2.GaussianBlur(img,(5,5),0) '''總結
以上是生活随笔為你收集整理的OpenCV 中的图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: opencv图像的基础操作
- 下一篇: 模型评估准确率、召回率、ROC曲线、AU
