發表文章

目前顯示的是 8月, 2021的文章

opencv-畫線條/矩陣/圓/文字

圖片
 線條 cv2. line ( image, start_point, end_point, color, thickness) 參數: image: 圖像。 start_point: 起始坐標,即( X 坐標值, Y 坐標值)。 end_point: 終點坐標,即( X 坐標值 Y 坐標值)。 color: 線條的顏色。 例如:(255,0,0)為藍色。 thickness: 粗細 像素 。 圓 cv2. circle (image, center_coordinates, radius, color, thickness) 參數: image: 圖像。 center_coordinates: 圓的中心坐標,即(X坐標值,Y坐標值)。 radius: 圓的半徑。 color: 邊界線的顏色。 例如:(255,0,0)為藍色。 thickness: 粗細 像素 。厚度 -1像素 將以指定的顏色填充矩形形狀。 矩陣 cv2. rectangle (image, start_point, end_point, color, thickness) 參數: image: 圖像。 start_point: 起始坐標。即(X坐標值,Y坐標值)。 end_point:  結束坐標。即( X 坐標值 ÿ 坐標值)。 color:  顏色。例如: (255,0,0)為藍色。 thickness: 粗細 像素 。厚度 -1像素或cv2.FILLED 將以指定的顏色填充矩形形狀。 文字 cv2. putText (image, text, org, font, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) 參數: image: 圖像。 text:  文本字符串。 org:   字符串左下角的坐標。 font:  字體類型。 FONT_HERSHEY_PLAIN, 等 fontScale:  字體大小 color:  字符串的顏色 thickness:  線的粗細 像素 。 lineType:  可選參數,它給出了要使用的行的類型。 bottomLeftOrigin:  可選參數。如果為true...

opencv-圖像相素調整(resize)和剪裁(cropping)

圖片
 opencv-圖像相素調整(resize)和剪裁(cropping) 這個部份還蠻常用的。 有時視窗顯示出來太大或太小,可以用resize調整 cv2.resize(src, (x, y) ) x--->w寛 y--->h高 import cv2 import numpy as np img = cv2.imread( r"C:\Users\blair\Desktop\1605856170309.jpg" ) print (img.shape) cv2.resize(img , ( 300 , 600 )) cv2.imshow( "img" , img) cv2.waitKey( 0 )

opencv-膨漲與侵蝕

圖片
 opencv-膨漲與侵蝕 膨漲 左邊那張是膨漲後,右邊那張是邊緣化 dilation = cv2.dilate(img,kernel,iterations = 1 ) 第一個參數:img指需要膨漲的圖 第二個參數:kernel指膨漲操作的內核,默認是一個簡單的3X3矩陣,我們也可以利用getStructuringElement()函數指明它的形狀 第三個參數:iterations指的是腐蝕次數,省略是默認為1

opencv-灰度(gray)-高斯濾波(GaussianBlur)-邊緣檢測(Canny)

圖片
 灰度 cv2.cvtColor(img,p1) 是顏色空間轉換函數,img是需要轉換的圖片,p2是轉換成格式。 cv2.COLOR_BGR2RGB 將BGR格式轉換成RGB格式 cv2.COLOR_BGR2GRAY 將BGR格式轉換成圖像 邊緣檢測 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]])  第一個參數是需要處理的原圖像,該圖像必須為單通道的 灰度圖 ; 第二個參數是閾值1; 第三個參數是閾值2。 高斯濾波 cv2.GaussianBlur( SRC,ksize,sigmaX [,DST [,sigmaY [,borderType ] ] ] )   Src –輸入圖像;圖像可以具有任何數量的信道,其獨立地處理的,但深度應CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。 Dst –輸出與圖像大小和類型相同的圖像src。 Ksize –高斯核大小。 Ksize.width 並且 ksize.height 可以有所不同,但它們都必須是正數和奇數。或者,它們可以為零,然後從計算 sigma*。 SigmaX – X方向上的高斯核標準偏差。 SigmaY – Y方向上的高斯核標準差;如果 sigmaY 為零,則將其設置為等於 sigmaX;如果兩個西格瑪均為零,則分別根據ksize.width 和 進行計算 ksize.height(getGaussianKernel()有關詳細信息,請參見 link);完全控制的結果,無論這一切的語義未來可能的修改,建議指定所有的ksize,sigmaX和sigmaY。 BorderType –像素外推方法

opencv讀取圖片和視訊頭

圖片
  cv2.imread() retval = cv.imread(filename[, flags]) Filename:需要打開圖片的路徑,可以是絕對路徑或者相對路徑,路徑中不能出現中文。 Flag:圖像的通道和色彩信息(默認值為1)。 flag = -1,   8位深度,原通道 flag = 0,   8位深度,1通道 flag = 1,   8位深度,3通道 flag = 2,   原深度, 1通道 flag = 3,   原深度, 3通道 flag = 4,   8位深度,3通道  cv2.imshow() cv2.imshow("windowName", img) cv2.keywait() cv2.waitKey(1000) * 0xFF == ord(‘q’) 是的英文 先解釋下字面英文: cv2.waitKey(1000):在1000ms內根據鍵盤輸入返回一個值 0xFF :一個十六進制數 ord('q') :返回q的ascii碼 0xFF是一個十六進制數,轉換為二進制是11111111。waitKey返回值的範圍為(0-255),剛好也是8個二進制位。那麼我們將cv2.waitKey(1) * 0xFF計算一下(不知怎麼回事)計算的可以百度位與運算)發現結果仍然是waitKey的返回值,那為什麼要多次一舉呢? cv2.waitKey(1) == ord('q')不就好了。 通過cv2.waitKey(1) * 0xFF出現,當waitkey返回值正常時cv2.waitKey(1) = cv2 .waitKey(1000) * 0xFF,當返回值不正常時,cv2.waitKey(1000) * 0xFF的範圍仍不超過(0-255),就避免了一些奇奇怪怪的BUG。