# -*- 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...