首页
/
每日頭條
/
生活
/
opencv圖像處理的原理
opencv圖像處理的原理
更新时间:2024-11-26 11:51:14

主要是 createTrackbar 和 getTrackbarPos的使用,在配合 opencv 用這些繪圖函數就可以完成簡單的繪制 圖闆功能。

主要使用了opencv gui功能,涉及到了下面幾個函數:

1. cv2.createTrackbar, 創建滑動條:

用法: cv2.createTrackbar(trackbarName, windowName, value, count, onChange), 參數: trackbar_name trackbar的名字 window_name trackbar父窗口的名字 函數cvGetTrackbarPos返回指定trackbar的當前位置。 示例用法:在窗口 “image”上,創建名稱為 “R”的軌迹,最小值為0,最大值為255, 回調函數為 callback(這裡回調函數沒有起作用,隻是起到占位的作用)。 cv2.createTrackbar('R','image',0, 255, callback)

2. cv2.getTrackbarPos, 獲取軌迹數值

用法:cv.getTrackbarPos(trackbarname, winname) 參數: trackbarname:軌迹欄名稱 winname:作為軌迹欄父級的窗口的名稱。 示例:獲取軌迹“R”的值,這個值就是滑動條在滑動過程中的數值, r = cv2.getTrackbarPos('R','image')

3. cv2.circle, 畫圓

用法: cv2.circle(image, center_coordinates, radius, color, thickness) 參數: image:它是要在其上繪制圓的圖像。 center_coordinates:它是圓的中心坐标。坐标表示為兩個值的元組,即(X坐标值,Y坐标值)。 radius:它是圓的半徑。 color:它是要繪制的圓的邊界線的顔色。對于BGR,我們通過一個元組。例如:(255,0,0)為藍色。 thickness:它是圓邊界線的粗細像素。厚度-1像素将以指定的顔色填充矩形形狀。

white_img = np.zeros((300,300,3), np.uint8) white_img[:] = [255,255,255] cv2.circle(white_img, (150, 150), 100, (0, 255,255), 2) ## 半徑 100, 圓環寬2pixel

opencv圖像處理的原理(從零學AI之圖像算法4)1


4. cv2.rectangle, 繪制矩形:

cv2.rectangle(img, pt1, pt2, color, thickness, lineType, shift ) 參數表示依次為: (圖片,長方形框左上角坐标, 長方形框右下角坐标, 字體顔色,字體粗細) 在圖片img上畫長方形,坐标原點是圖片左上角,向右為x軸正方向,向下為y軸正方向。左上角(x,y),右下角(x,y) ,顔色(B,G,R), 線的粗細 lineType: lineType:可以取的值有cv2.LINE_4,cv2.LINE_8,cv2.LINE_AA。其中cv2.LINE_AA的AA表示抗鋸齒,線會更平滑。

opencv圖像處理的原理(從零學AI之圖像算法4)2

5. 顔色一個簡單的繪圖闆

def demo(): def callback(x): pass # 創建圖像 img = np.zeros((300, 512, 3), np.uint8) cv2.namedWindow('image') ## 創建窗口image switch = 'ON:\nOFF' ## 開關定義,默認開啟(0) ## 創建軌迹: cv2.createTrackbar(switch, 'image', 0, 1, callback) cv2.createTrackbar('R', 'image', 180, 255, callback) cv2.createTrackbar('G', 'image', 0, 255, callback) cv2.createTrackbar('B', 'image', 0, 255, callback) while True: cv2.imshow('image', img) k = cv2.waitKey(1) & 0xFF ### 監聽鍵盤 if k == 27: break ### 獲取數值 r = cv2.getTrackbarPos('R', 'image') g = cv2.getTrackbarPos('G', 'image') b = cv2.getTrackbarPos('B', 'image') s = cv2.getTrackbarPos(switch, 'image') ### 判斷開關是否關閉 if s == 0: img[:] = [b, g, r] else: print("繪圖功能已關閉") img[:] = [255, 255, 255] ## 轉為白色 cv2.destroyAllWindows()

opencv圖像處理的原理(從零學AI之圖像算法4)3

6.增加繪圖功能

我們基于上述功能進行了改進,又添加添加了橡皮擦功能,可以繪圖、還可以寫毛筆字[摳鼻]。 大家可以通過下面的視頻感受一下:

視頻

寫毛筆字:

opencv圖像處理的原理(從零學AI之圖像算法4)4

繪圖

opencv圖像處理的原理(從零學AI之圖像算法4)5

以上就是本次分享的内容,是不是非常簡單呢?歡迎在評論區交流和讨論。

備注:免費獲取源碼,請評論區回複666。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved