Opencv基於python的基本操作(一)


一.OpenCV在win7系統的安裝

 

測試代碼 (讀入圖片並展示):

import cv2 as cv

src= cv.imread("D:\opencv-test\EBK7%HI(P%)(FV1(`J034D3.png")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
cv.waitKey(0)
cv.destroyAllWindows()

二.圖片的加載和保存

代碼分析:

'''
圖像加載與保存
'''
import numpy as np
import cv2 as cv

def video_demo():
    #開視頻
    capture = cv.VideoCapture(r'D:\opencv-test\007、Tensorflow案例實戰視頻課程07 邏輯回歸框架.mp4')
     #開攝像頭
    # capture = cv.VideoCapture(0)

    while(True):
       ret,frame= capture.read()
       # frame = cv.flip(frame,1)
       cv.imshow("video",frame)
       c = cv.waitKey(50)
       #ESC退出
       if c == 27:
         break

def get_image_info(image):
    print(type(image))
    print(image.shape)
    print(image.size)
    print(image.dtype)
    pixel_data = np.array(image)
    print(pixel_data)

src= cv.imread("D:\opencv-test\EBK7%HI(P%)(FV1(`J034D3.png")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
# 展示圖片
cv.imshow("input image",src)
# get_image_info(src)
#展示視頻
# video_demo()
cv.waitKey(0)
#寫入保存
# cv.imwrite(r'D:\opencv-test\result.png',src)
cv.destroyAllWindows()

三.numpy修改圖片像素等操作

代碼實現:

'numpy修改圖片像素等操作'

import numpy as np
import cv2 as cv
import time

def get_image_info(image):
    print(image.shape)
    height = image.shape[0]
    width= image.shape[1]
    channels = image.shape[2]
    print("height:%s,width:%s,channels:%s"%(height,width,channels))
    #取反操作
    for i in range(height):
        for j in range(width):
            for k in range(channels):
                m = image[i,j,k]
                image[i,j,k]=255-m
    cv.imshow('new image',image)
#取反函數
def inverse(image):
    inv = cv.bitwise_not(image)
    cv.imshow('inv',inv)
#創建新像片
def create_image():
    #多通道
    # img = np.zeros([400,400,3],np.uint8)
    # img[:,:,0] = np.ones([400,400])*255
    # img[:,:,2] = np.ones([400,400])*255
    #單通道
    # img = np.zeros([400, 400,1], np.uint8)
    # img[:,:,0]=np.ones([400,400])*127
    img = np.ones([400, 400, 1], np.uint8)
    img = img*127
    cv.imshow('black',img)
src= cv.imread(r"D:\opencv-test\9807657b93fbe2067c1f394af8fd674.png")
# cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
t1 = time.time()
# cv.imshow("input image",src)
inverse(src)
t2= time.time()
print(t2-t1)
# get_image_info(src)
# create_image()

cv.waitKey(0)


cv.destroyAllWindows()

四.顏色空間:

HSV(Hue, Saturation, Value)是根據顏色的直觀特性由A. R. Smith在1978年創建的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。
這個模型中顏色的參數分別是:色調(H),飽和度(S),亮度(V)。

除了HSV,還有其他色彩空間:

代碼如下(選取一個顏色HSV范圍,視頻中的該顏色變為白,其他顏色為黑):

import cv2 as cv
import numpy as np


def extract():
    capture = cv.VideoCapture(r'D:\opencv-test\007、Tensorflow案例實戰視頻課程07 邏輯回歸框架.mp4')
    while True:
        ret,frame=capture.read()
        if not ret:
            break
        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        lower_hsv = np.array([37,43,46])
        upper_hsv = np.array([77,255,255])
        mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)
#黑白視頻 cv.imshow(
'mask',mask)
#本色視頻 cv.imshow(
'video',frame) c = cv.waitKey(40) if c ==27: break def color_space_demo(image): gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) cv.imshow('hsv',hsv) yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV) cv.imshow('yuv',yuv) ycrcb= cv.cvtColor(image, cv.COLOR_BGR2YCrCb) cv.imshow('YCRCB', ycrcb) src= cv.imread("D:\opencv-test\9807657b93fbe2067c1f394af8fd674.png") # cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) # cv.imshow("input image",src) # color_space_demo(src) extract() #三元色分割 # b,g,r =cv.split(src) # cv.imshow('blue',b) # cv.imshow('green',g) # cv.imshow('red',r) #三原色合並 # src = cv.merge([b,g,r]) #更改其中一個元色 # src[:,:,0]=0 # cv.imshow('changed image',src) cv.waitKey(0) cv.destroyAllWindows()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM