opencv-python 常用例程

讀圖类腮,寫圖椅文,展示圖

import cv2
img = cv2.imread("heart.jpg")  # 通道順序(B,G,R)
cv2.imshow("heart", img)
cv2.waitKey(0)
cv2.imwrite("output.jpg", img)

# 若為RGBA圖片
img = cv2.imread("test.jpg", -1)  # 通道順序(B,G,R,A)
cv2.imwrite("output.png", img) # 需保存為png格式才能保留alpha通道

# 插曲:檢測文件夾是否存在,若不存在則新建一個
if not os.path.exists(outputpath):
    os.makedirs(outputpath)

讀視頻缔御,并顯示

cap = cv2.VideoCapture("V03_1.avi")

while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('image', frame)
    if cv2.waitKey(33) == ord('q'):  # q鍵退出
        break

cap.release()
cv2.destroyAllWindows()

視頻切幀

"""將視頻讀入抬闷,然后每一幀存為一張圖片"""
inputpath = "./video/IMG_2760.MOV"
outputpath = "./videoframe/"

cap = cv2.VideoCapture(inputpath)

if not os.path.exists(outputpath):
os.makedirs(outputpath)

num = 1
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    filename = "frame" + str(num) + ".jpg"
    cv2.imwrite(os.path.join(outputpath, filename), frame)
    num += 1

cap.release()

BGR轉(zhuǎn)RGB

img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

畫線,畫框

red = (0, 0, 255)
greem = (0, 255, 0)
cv2.line(img, (20, 20), (100, 100), red)  # 在img圖像的坐標(20, 20)和(100, 100)之間畫一條紅線
cv2.line(img, (20, 20), (100, 100), red刹淌, 4)  # 最后一個參數(shù)設置線的粗細
cv2.rectangle(img, (10, 10), (60, 60), green)  # 在以img圖像(10, 10)和(60, 60)為左上和右下畫矩形

截取圖片

roi = img[308:540, 38:216]
cv2.imwrite("object.jpg", roi)

分離色彩通道

BGRImg = cv2.imread(ImgPath)
B = BGRImg[:, :, 0]
G = BGRImg[:, :, 1]
R = BGRImg[:, :, 2]

# or
BGRImg = cv2.imread(ImgPath)
B, G, R = cv2.split(BGRImg)

# 注意,cv2.split的速度比直接索引要慢,但cv2.split返回的是拷貝,直接索引返回的是引用(改變B就會改變BGRImg)

畫多邊形

Pts = np.array([[38, 308], [216, 308], [216, 540], [38, 540]], np.int32)
Pts = Pts.reshape((-1, 1, 2))
cv2.polylines(img, [Pts], True, (0, 255, 255), 3)

圖片變換

Resize
object_img = cv2.resize(object_img, target_shape)
旋轉(zhuǎn)

1 使用warAffine函數(shù)饶氏,優(yōu)點是可選角度多讥耗,缺點是會被截取

(h, w) = object_img.shape[:2]
center = (w/2, h/2)
M = cv2.getRotationMatrix2D(center, 45, 1)
rotated = cv2.warpAffine(object_img, M, (w, h))
cv2.imshow("Rotated by 45 Degrees", rotated)

2 使用rotate函數(shù)有勾,優(yōu)點是圖片不會被截取,缺點是只能旋轉(zhuǎn)90°的倍數(shù)

rotated = cv2.rotate(img, 0) # 旋轉(zhuǎn)90°
rotated = cv2.rotate(img, 1) # 旋轉(zhuǎn)180°
rotated = cv2.rotate(img, 2) # 旋轉(zhuǎn)270°
仿射變換
rows, cols, ch = img.shape
pts1 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])
pts2 = np.float32([[cols * 0.2, rows * 0.1], [cols * 0.9, rows * 0.2], [cols * 0.1, rows * 0.9]])

M = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, M, (cols, rows))

opencv進行任意仿射變換的方法是先找三個點古程,分別給出這三個點進行變換前的坐標與變換后的坐標蔼卡。

然后是用cv2.getAffineTransform函數(shù)進行變換矩陣的計算
再使用cv2.warpAffine函數(shù)來進行仿射變換

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挣磨,隨后出現(xiàn)的幾起案子雇逞,更是在濱河造成了極大的恐慌,老刑警劉巖茁裙,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塘砸,死亡現(xiàn)場離奇詭異,居然都是意外死亡晤锥,警方通過查閱死者的電腦和手機掉蔬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矾瘾,“玉大人女轿,你說我怎么就攤上這事『爵妫” “怎么了蛉迹?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長放妈。 經(jīng)常有香客問我北救,道長,這世上最難降的妖魔是什么芜抒? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任珍策,我火速辦了婚禮,結(jié)果婚禮上挽绩,老公的妹妹穿的比我還像新娘膛壹。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布模聋。 她就那樣靜靜地躺著肩民,像睡著了一般。 火紅的嫁衣襯著肌膚如雪链方。 梳的紋絲不亂的頭發(fā)上持痰,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音祟蚀,去河邊找鬼工窍。 笑死,一個胖子當著我的面吹牛前酿,可吹牛的內(nèi)容都是我干的患雏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼罢维,長吁一口氣:“原來是場噩夢啊……” “哼淹仑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肺孵,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤匀借,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后平窘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吓肋,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年瑰艘,在試婚紗的時候發(fā)現(xiàn)自己被綠了是鬼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡磅叛,死狀恐怖屑咳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弊琴,我是刑警寧澤兆龙,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站敲董,受9級特大地震影響紫皇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腋寨,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一聪铺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萄窜,春花似錦铃剔、人聲如沸撒桨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凤类。三九已至,卻和暖如春普气,著一層夾襖步出監(jiān)牢的瞬間谜疤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工现诀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夷磕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓仔沿,卻偏偏與公主長得像坐桩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子于未,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容