日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作

發布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先確保已經安裝了Python

Mac 下可以直接使用?brew?來安裝OpenCV,具體步驟如下:

# add opencv brew tap homebrew/science# install opencv brew install opencv

安裝必要的python庫

pip install numpy pip install matplotlib

測試是否安裝成功

import cv2 import numpy as np from matplotlib import pyplot as pltimg = cv2.imread('road.png', 0) plt.imshow(img, cmap='gray', interpolation='bicubic') plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.show()

寫在最后:

作為一個曾經編譯過無數次 OpenCV 最后好不容易成功的人來說,我覺得安裝 OpenCV 這個問題可以歸為玄學,尤其是在 Windows 下,所以安裝的時候最好多請教 Google, Good Luck!

Update:

果然圖方便是不行的,直接使用brew安裝的OpenCV有bug,在使用findContours函數的時候會報錯Assertion failed,查了好久發現這個是某個版本的bug,但是作者已經在最新的版本中修復了:issue

所以又得重新安裝OpenCV了,先卸載掉之前的:

brew uninstall opencv

然后按照這篇文章中的方法安裝:

  • Install OpenCV On Mac







0x00. 圖片讀、寫和顯示操作

安裝好 OpenCV 之后,首先嘗試加載一張最簡單的圖片并顯示出來,代碼示例:

第一種方式使用cv2.cv的LoadImage、ShowImage和SaveImage函數

import cv2.cv as cv# 讀圖片 image=cv.LoadImage('img/image.png', cv.CV_LOAD_IMAGE_COLOR)#Load the image #Or just: image=cv.LoadImage('img/image.png')cv.NamedWindow('a_window', cv.CV_WINDOW_AUTOSIZE) #Facultative cv.ShowImage('a_window', image) #Show the image# 寫圖片 cv.SaveImage("thumb.png", thumb) cv.WaitKey(0) #Wait for user input and quit

也可以直接使用cv2的imread、imwrite和imshow函數

import numpy as np import cv2img = cv2.imread('messi5.jpg',0) cv2.imshow('image',img) k = cv2.waitKey(0) if k == 27: # wait for ESC key to exitcv2.destroyAllWindows() elif k == ord('s'): # wait for 's' key to save and exitcv2.imwrite('messigray.png',img)cv2.destroyAllWindows()

imread函數還可以定義加載的mode,默認是以RGB模式處理圖片:

import cv2 grayImage = cv2.imread('MyPic.png', cv2.CV_LOAD_IMAGE_GRAYSCALE) # 可選參數CV_LOAD_IMAGE_COLOR (BGR), CV_LOAD_IMAGE_GRAYSCALE (grayscale), CV_LOAD_IMAGE_UNCHANGED(neither) cv2.imwrite('MyPicGray.png', grayImage)

0x01. 獲取圖片屬性

import cv2 img = cv2.imread('img/image.png') print img.shape # (640, 640, 3) print img.size # 1228800 print img.dtype # uint8 # 在debug的時候,dtype很重要

0x02. 輸出文本

在處理圖片的時候,我們經常會需要把一些信息直接以文字的形式輸出在圖片上,下面的代碼將實現這個效果:

import cv2.cv as cvimage=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) #Load the imagefont = cv.InitFont(cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 3, 8) #Creates a fonty = image.height / 2 # y position of the text x = image.width / 4 # x position of the textcv.PutText(image,"Hello World !", (x,y),font, cv.RGB(255, 255, 255)) #Draw the textcv.ShowImage('Hello World', image) #Show the imagecv.WaitKey(0)

cv2:

cv2.putText(frame,?'Hello World', (300,100),?0,?0.5, (0,0,255),2)

0x03. 縮放圖片

下面的例子將實現縮放圖片并保存,這個在使用 OpenCV 做圖像處理的時候都是很常用的操作:

import cv2.cv as cvim = cv.LoadImage("img/alkaline.jpg") #get the imagethumb = cv.CreateImage((im.width / 2, im.height / 2), 8, 3) #Create an image that is twice smaller than the originalcv.Resize(im, thumb) #resize the original image into thumb #cv.PyrDown(im, thumb)cv.SaveImage("thumb.png", thumb) # save the thumb image

cv2:

import cv2 import numpy as np img = cv2.imread('messi5.jpg') res = cv2.resize(img,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)#ORheight, width = img.shape[:2] res = cv2.resize(img,(2*width, 2*height), interpolation = cv2.INTER_CUBIC)

0x04. 圖像平移

import cv2 import numpy as npimg = cv2.imread('messi5.jpg',0) rows,cols = img.shapeM = np.float32([[1,0,100],[0,1,50]]) dst = cv2.warpAffine(img,M,(cols,rows))cv2.imshow('img',dst) cv2.waitKey(0) cv2.destroyAllWindows()

0x05. 圖像旋轉

img = cv2.imread('messi5.jpg',0) rows,cols = img.shapeM = cv2.getRotationMatrix2D((cols/2,rows/2),90,1) dst = cv2.warpAffine(img,M,(cols,rows))

0x06. 仿射變換

import cv2 import numpy as npimg = cv2.imread('mao.jpg') rows,cols,ch = img.shapepts1 = np.float32([[50,50],[200,50],[50,200]]) pts2 = np.float32([[10,100],[200,50],[100,250]])M = cv2.getAffineTransform(pts1,pts2)dst = cv2.warpAffine(img,M,(cols,rows))cv2.imshow('image',dst) cv2.waitKey(0)

0x07. 圖像顏色變換

實際使用過程中,我們經常也需要對一些圖片的顏色空間做一些改變之類的:

c2.cv:

import cv2.cv as cv im=cv.LoadImage('img/fruits.jpg',cv.CV_LOAD_IMAGE_COLOR) res = cv.CreateImage(cv.GetSize(im), cv.CV_8UC2, 3) #cv.CV_32F, cv.IPL_DEPTH_16S, ... cv.Convert(im, res) cv.ShowImage("Converted",res) res2 = cv.CreateImage(cv.GetSize(im), cv.CV_8UC2, 3) cv.CvtColor(im, res2, cv.CV_RGB2BGR) # HLS, HSV, YCrCb, .... cv.ShowImage("CvtColor", res2) cv.WaitKey(0)
  • cv.Convert():將圖片從一個顏色空間轉到另一個顏色空間

  • cv.CvtColor(src, dst, code):

cv2:

cv2.cvtColor(input_image, flag)函數實現圖片顏色空間的轉換,flag 參數決定變換類型。如 BGR->Gray flag 就可以設置為 cv2.COLOR_BGR2GRAY 。

一個簡單的例子,下面的代碼實現識別攝像視頻中藍色的部分:

import cv2 import numpy as npcap = cv2.VideoCapture(0)while(1):# 讀取視頻的每一幀_, frame = cap.read()# 將圖片從 BGR 空間轉換到 HSV 空間hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)# 定義在HSV空間中藍色的范圍lower_blue = np.array([110,50,50])upper_blue = np.array([130,255,255])# 根據以上定義的藍色的閾值得到藍色的部分mask = cv2.inRange(hsv, lower_blue, upper_blue)res = cv2.bitwise_and(frame,frame, mask= mask)cv2.imshow('frame',frame)cv2.imshow('mask',mask)cv2.imshow('res',res)k = cv2.waitKey(5) & 0xFFif k == 27:breakcv2.destroyAllWindows()

以上的代碼給出了視頻中獲取興趣對象的基本思想。

0x08. 通道的拆分/合并處理

對于一張圖片的 R、G、B 通道,我們可以很方便的使用 OpenCV 獲取并分離或者合并:

(這是將圖像灰度化處理的一種方式)

cv2.cv

import cv2.cv as cvorig = cv.LoadImage('img/fruits.jpg') b = cv.CreateImage(cv.GetSize(orig), orig.depth, 1) g = cv.CloneImage(b) r = cv.CloneImage(b) cv.Split(orig, b, g, r, None)merged = cv.CreateImage(cv.GetSize(orig), 8, 3) cv.Merge(g, b, r, None, merged)cv.ShowImage("Image", orig) cv.ShowImage("Blue", b) cv.ShowImage("Green", g) cv.ShowImage("Red", r) cv.ShowImage("Merged", merged)cv.WaitKey(0)

cv2

import cv2 img = cv2.imread('img/image.png') b,g,r = cv2.split(img) img = cv2.merge((b,g,r))

0x09. 圖片添加邊距

cv2.copyMakeBorder函數

import cv2 import numpy as npBLUE = [255,0,0]img1 = cv2.imread('opencv_logo.png')replicate = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REPLICATE) reflect = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT) reflect101 = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_REFLECT_101) wrap = cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_WRAP) constant= cv2.copyMakeBorder(img1,10,10,10,10,cv2.BORDER_CONSTANT,value=BLUE)

from:?https://segmentfault.com/a/1190000003742422

總結

以上是生活随笔為你收集整理的Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产宾馆实践打屁股91 | 男女性高潮免费网站 | 91视频.com| 国产在线网 | 欧美成人r级一区二区三区 中文无码一区二区三区在线观看 | 国产精品乱码一区 | 久草婷婷 | 经典三级第一页 | 黄色综合| wwwxxx亚洲| av在线资源网站 | 操小妹影院 | 亚洲欧美日韩成人在线 | 亚洲性图一区二区三区 | av男人在线 | 日韩在线www | 欧美一区二区三区在线免费观看 | 日韩午夜激情电影 | 亚洲国产清纯 | 久久精品国产亚洲av麻豆色欲 | 国产欧美精品一区二区三区 | 欧美另类69| 久久久99精品国产一区二区三区 | 精品久久久久久久久久岛国gif | 欧州一区二区 | 三级免费毛片 | 男女啪动最猛动态图 | 日日干天天干 | 91精选视频| 亚洲天堂网站在线 | 中文字幕在线观看网址 | 99热这里只有精品首页 | 九九精品视频免费 | 精品一区二区电影 | 欧美黄网站 | 午夜视频免费观看 | 五月丁香综合激情六月久久 | 日韩视频中文字幕 | 国产大片中文字幕 | 亚洲自拍偷拍色图 | 娇妻被老王脔到高潮失禁视频 | 黄色片子一级 | 亚洲一级在线观看 | 国产视频网站在线观看 | 欧美伊人网 | 一区二区视频免费看 | 国产夫妻精品 | www.久久久精品 | 91成年人视频 | 日本91在线 | 九九热免费在线视频 | 大尺度床戏揉捏胸视频 | 欧美成人激情视频 | 五月婷婷综合色 | 国内av在线播放 | 蜜桃成人av| 人妻妺妺窝人体色www聚色窝 | 日本免费爱爱视频 | 日本午夜精品理论片a级app发布 | 精品少妇久久久久久888优播 | 三级影片在线播放 | 国产乱码精品一区二区三区中文 | 久久久久久中文 | 一区视频在线免费观看 | 六月丁香激情网 | 偷拍第一页 | 涩涩一区 | 99久久婷婷国产综合精品青牛牛 | 伊人7| 综合一区二区三区 | 午夜在线免费观看 | 青娱乐97 | 国产精品伊人 | a无一区二区三区 | 中文av免费 | 国产精品一二三四五 | 久久无码视频网站 | 成年人的免费视频 | 免费一级特黄特色毛片久久看 | 成人自拍视频在线观看 | 性欧美ⅴideo另类hd | 国产精品99一区二区三区 | 国产日韩欧美一区二区东京热 | 中文字幕第八页 | 久久精品国产欧美亚洲人人爽 | 亚洲h视频在线观看 | 韩国久久久 | 亚洲AV无码阿娇国产精品 | 四虎影视免费观看 | 好色先生tv官网 | 黄色av网| 成人久色 | 九色综合网 | 伊人色影院 | 国产强伦人妻毛片 | 色妞网站 | 成人极品 | 少妇丰满尤物大尺度写真 | 毛片的网站 |