opencv庫的使用

2021-09-28 00:06:00 字數 3882 閱讀 2062

# -*- coding: utf-8 -*- 

import cv2 as cv

import numpy as np

from matplotlib.font_manager import fontproperties

font_set = fontproperties(fname=r"c:\windows\fonts\simsun.ttc", size=12)

def zh_ch(string):

return string.encode("gbk").decode(errors="ignore")

#讀取src = cv.imread("e:/opencv/image/test.png")

#cv.imshow("input",src)

#灰度圖

gray = cv.cvtcolor(src,cv.color_bgr2gray)

#cv.imshow("gray",gray)

print(src.shape)

print(gray.shape)

#建立空白影象 大小和src一樣

black = np.zeros_like(src)

#cv.imshow("black",black)

#調節亮暗

black[:,:,:] = 50

lighter = cv.add(src,black)

darker = cv.subtract(src,black)

#cv.imshow("lightness",lighter)

#cv.imshow("darkness",darker)

#調節對比度

#dst = cv.addweighted(src,1.2,black,0.0,0)

#cv.imshow("contrast",dst)

#放大/縮小 影象

h,w,c = src.shape

dst1 = cv.resize(src,(h//2,w//2))

#cv.imshow("resize-images",dst1)

#左右翻轉

dst2 = cv.flip(src,1)

#cv.imshow("flip",dst2)

#上下翻轉

dst3 = cv.flip(src,0)

#cv.imshow("filp0",dst3)

#旋轉m = cv.getrotationmatrix2d((w//2,h//2),45,1)

dst4 = cv.warpaffine(src,m,(w,h))

#cv.imshow("rotate",dst4)

#色彩變換

#hsv

hsv = cv.cvtcolor(src,cv.color_bgr2hsv)

#cv.imshow("hsv",hsv)

#色彩表 -支援14種色彩變換

#cv.imshow("color table",dst5)

#模糊處理

blur = cv.blur(src,(15,15))

#cv.imshow("blur",blur)

#高斯模糊 影象高斯模糊操作,sigma = 15

gblur = cv.gaussianblur(src,(0,0),15)

#cv.imshow(u'高斯模糊',gblur)

#自定義濾波器

k = np.ones(shape=[5,5],dtype = np.float32)/5

dst6 = cv.filter2d(src,-1,k)

#cv.imshow("custom blur",dst6)

#高斯雙邊濾波

dst7 = cv.bilateralfilter(src,0,100,10)

#cv.imshow("bi-filter",dst7)

#影象梯度 影象梯度提取,基於一階導數運算元sobel

dx = cv.sobel(src,cv.cv_32f,1,0)

dy = cv.sobel(src,cv.cv_32f,0,1)

dx = cv.convertscaleabs(dx)

dy = cv.convertscaleabs(dy)

#cv.imshow("grad-x",dx)

#cv.imshow("gray-y",dy)

#邊緣檢測 影象邊緣提取,canny是經典的影象邊緣提取演算法。100表示低閾值,300表示高閾值。

edge = cv.canny(src,100,300)

#cv.imshow("edge",edge)

#直方圖均衡化

eh = cv.equalizehist(gray)

#cv.imshow("eh",eh)

#角點檢測 基於shi-tomas角點檢測演算法

corners = cv.goodfeaturestotrack(gray,100,0.05,10)

print(len(corners))

for pt in corners:

b = np.random.random_integers(0,256)

g = np.random.random_integers(0,256)

r = np.random.random_integers(0,256)

r = np.random.random_integers(0,256)

x = np.int32(pt[0][0])

y = np.int32(pt[0][1])

cv.circle(src,(x,y),5,(int(b),int(g),int(r)),2)

#cv.imshow("corners detection",src)

#二值化載入影象

gray1 = cv.cvtcolor(src,cv.color_bgr2gray)

#cv.imshow("binary input",gray1)

#固定閾值

#ret,binary = cv.threshold(gray,127,255,cv.thresh_binary_inv,25,10)

#cv.imshow("binary",binary)

#全域性閾值

binary = cv.adaptivethreshold(gray,255,cv.adaptive_thresh_gaussian_c,cv.thresh_binary_inv,25,10)

#cv.imshow("ada",binary)

#輪廓分布

result = np.zeros_like(src)

for cnt in range(len(contours)):

cv.drawcontours(result,contours,cnt,(0,0,255),2,8)

#cv.imshow("contour",result)

#膨脹與腐蝕操作 二值影象的形態學基礎操作,腐蝕與膨脹

se = cv.getstructuringelement(cv.morph_rect,(5,5),(-1,-1))

d = cv.dilate(binary,se)

e = cv.erode(binary,se)

#cv.imshow("dilate",d)

#cv.imshow("erode",e)

#開閉操作 二值影象的形態學組合操作,開操作與閉操作

op = cv.morphologyex(binary,cv.morph_open,se)

c1 = cv.morphologyex(binary,cv.morph_close,se)

cv.imshow("open",op)

cv.imshow("close",c1)

cv.waitkey(0)

cv.destroyallwindows()

使用openCV的靜態庫編譯

by 少俠阿朱 摘要 本文主要講述如何使用opencv靜態庫進行編譯,生成脫離opencv環境可執行.exe檔案。實現的效果 此方法生成的exe檔案在其他沒有配置opencv環境的電腦上可直接執行。使用到的工具 opencv2.411 vs2013 debug模式下編譯流程如下 首先 專案的debu...

在Qt中使用opencv庫

查閱了很多的方法,編譯了很多次,發現還是不行。我使用qt5.2.1,vs2010,opencv2.3.1 1.用cmake編譯時候會出現 因為實在改不來這裡說的錯誤,我就試了所有可以用的opencv不同的版本,發現還是會有錯。2.問過同事後發現其實很簡單就可以使用opencv庫 只要在pro檔案中新...

在Qt 中如何使用OpenCV庫

opencv是乙個基於bsd許可證授權 開源 發行的跨平台計算機視覺庫,可以執行在linux windows和mac os作業系統上。它輕量級而且高效 由一系列 c 函式和少量 c 類構成,同時提供了python ruby matlab等語言的介面,實現了影象處理和計算機視覺方面的很多通用演算法。q...