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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作

發(fā)布時(shí)間:2025/3/21 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0x01. 濾鏡

喜歡自拍的人肯定都知道濾鏡了,下面代碼嘗試使用一些簡(jiǎn)單的濾鏡,包括圖片的平滑處理、灰度化、二值化等:

import cv2.cv as cvimage=cv.LoadImage('img/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) #Load the image cv.ShowImage("Original", image)grey = cv.CreateImage((image.width ,image.height),8,1) #8depth, 1 channel so grayscale cv.CvtColor(image, grey, cv.CV_RGBA2GRAY) #Convert to gray so act as a filter cv.ShowImage('Greyed', grey)# 平滑變換 smoothed = cv.CloneImage(image) cv.Smooth(image,smoothed,cv.CV_MEDIAN) #Apply a smooth alogrithm with the specified algorithm cv.MEDIAN cv.ShowImage("Smoothed", smoothed)# 均衡處理 cv.EqualizeHist(grey, grey) #Work only on grayscaled pictures cv.ShowImage('Equalized', grey)# 二值化處理 threshold1 = cv.CloneImage(grey) cv.Threshold(threshold1,threshold1, 100, 255, cv.CV_THRESH_BINARY) cv.ShowImage("Threshold", threshold1)threshold2 = cv.CloneImage(grey) cv.Threshold(threshold2,threshold2, 100, 255, cv.CV_THRESH_OTSU) cv.ShowImage("Threshold 2", threshold2)element_shape = cv.CV_SHAPE_RECT pos=3 element = cv.CreateStructuringElementEx(pos*2+1, pos*2+1, pos, pos, element_shape) cv.Dilate(grey,grey,element,2) #Replace a pixel value with the maximum value of neighboors #There is others like Erode which replace take the lowest value of the neighborhood #Note: The Structuring element is optionnal cv.ShowImage("Dilated", grey)cv.WaitKey(0)

0x02. HighGUI

OpenCV 內(nèi)建了一套簡(jiǎn)單的 GUI 工具,方便我們?cè)谔幚斫缑嫔暇帉?xiě)一些控件,動(dòng)態(tài)的改變輸出:

import cv2.cv as cvim = cv.LoadImage("img/lena.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE) thresholded = cv.CreateImage(cv.GetSize(im), 8, 1)def onChange(val):cv.Threshold(im, thresholded, val, 255, cv.CV_THRESH_BINARY)cv.ShowImage("Image", thresholded)# 創(chuàng)建一個(gè)滑動(dòng)條控件 onChange(100) #Call here otherwise at startup. Show nothing until we move the trackbar cv.CreateTrackbar("Thresh", "Image", 100, 255, onChange) #Threshold value arbitrarily set to 100cv.WaitKey(0)

0x03. 選區(qū)操作

有事希望對(duì)圖像中某一塊區(qū)域進(jìn)行變換等操作,就可以使用如下方式:

import cv2.cv as cvim = cv.LoadImage("img/lena.jpg",3)# 選擇一塊區(qū)域 cv.SetImageROI(im, (50,50,150,150)) #Give the rectangle coordinate of the selected area# 變換操作 cv.Zero(im) #cv.Set(im, cv.RGB(100, 100, 100)) put the image to a given value# 解除選區(qū) cv.ResetImageROI(im) # Reset the ROIcv.ShowImage("Image",im)cv.WaitKey(0)

0x04. 運(yùn)算

對(duì)于多張圖片,我們可以進(jìn)行一些運(yùn)算操作(包括算數(shù)運(yùn)算和邏輯運(yùn)算),下面的代碼將演示一些基本的運(yùn)算操作:

import cv2.cv as cv#or simply import cvim = cv.LoadImage("img/lena.jpg") im2 = cv.LoadImage("img/fruits-larger.jpg") cv.ShowImage("Image1", im) cv.ShowImage("Image2", im2)res = cv.CreateImage(cv.GetSize(im2), 8, 3)# 加 cv.Add(im, im2, res) #Add every pixels together (black is 0 so low change and white overload anyway) cv.ShowImage("Add", res)# 減 cv.AbsDiff(im, im2, res) # Like minus for each pixel im(i) - im2(i) cv.ShowImage("AbsDiff", res)# 乘 cv.Mul(im, im2, res) #Multiplie each pixels (almost white) cv.ShowImage("Mult", res)# 除 cv.Div(im, im2, res) #Values will be low so the image will likely to be almost black cv.ShowImage("Div", res)# 與 cv.And(im, im2, res) #Bit and for every pixels cv.ShowImage("And", res)對(duì)于多張圖片,我們可以進(jìn)行一些運(yùn)算操作(包括算數(shù)運(yùn)算和邏輯運(yùn)算),下面的代碼將演示一些基本的運(yùn)算操作:# 或 cv.Or(im, im2, res) # Bit or for every pixels cv.ShowImage("Or", res)# 非 cv.Not(im, res) # Bit not of an image cv.ShowImage("Not", res)# 異或 cv.Xor(im, im2, res) #Bit Xor cv.ShowImage("Xor", res)# 乘方 cv.Pow(im, res, 2) #Pow the each pixel with the given value cv.ShowImage("Pow", res)# 最大值 cv.Max(im, im2, res) #Maximum between two pixels #Same form Min MinS cv.ShowImage("Max",res)

cv.WaitKey(0)

———————————————————————————————————————————分割線———————————————————————————————————————————————————

0x01. 像素

有兩種直接操作圖片像素點(diǎn)的方法:

第一種辦法就是將一張圖片看成一個(gè)多維的list,例如對(duì)于一張圖片im,想要操作第四行第四列的像素點(diǎn)就直接 im[3,3] 就可以獲取到這個(gè)點(diǎn)的RGB值。

第二種就是使用 OpenCV 提供的 Get1D、 Get2D 等函數(shù)。

推薦使用第一種辦法吧,畢竟簡(jiǎn)單。

0x02. 獲取行和列像素

有一下四個(gè)函數(shù):

  • cv.GetCol(im, 0): 返回第一列的像素

  • cv GetCols(im, 0, 10): 返回前 10 列

  • cv.GetRow(im, 0): 返回第一行

  • cv.GetRows(im, 0, 10): 返回前 10 行

0x03. 批量處理

需要批量處理所有的像素點(diǎn)的時(shí)候,只需要使用for循環(huán)迭代處理就可以了:

import cv2.cv as cvim = cv.LoadImage("img/lena.jpg")for i in range(im.height):for j in range(im.width):im[i,j] # 這里可以處理每個(gè)像素點(diǎn)

還有一種迭代處理的方式是使用 LineIterator,不過(guò)在聲明 LineIterator 的時(shí)候需要制定處理像素點(diǎn)的開(kāi)始點(diǎn)和結(jié)束點(diǎn)。

import cv2.cv as cvim = cv.LoadImage("img/lena.jpg")li = cv.InitLineIterator(im, (0, 0), (im.rows, im.cols)) #So loop the entire matrixfor (r, g, b) in li:# 這里可以對(duì)每個(gè)像素點(diǎn)的 r g b 進(jìn)行處理

娛樂(lè)一下, 隨機(jī)獲取 5000 個(gè)像素點(diǎn),然后把顏色換成一個(gè)隨機(jī)的值(salt):

import cv2.cv as cvimport random# 這里也可以使用 Get2D/Set2D 來(lái)加載圖片 im = cv.LoadImage("img/lena.jpg") for k in range(5000): #Create 5000 noisy pixelsi = random.randint(0,im.height-1)j = random.randint(0,im.width-1)color = (random.randrange(256),random.randrange(256),random.randrange(256))im[i,j] = colorcv.ShowImage("Noize", im) cv.WaitKey(0)

效果圖:



from: https://segmentfault.com/a/1190000003742433

https://segmentfault.com/a/1190000003742442

總結(jié)

以上是生活随笔為你收集整理的Python-OpenCV 处理图像(二)(三):滤镜和图像运算 图像像素点操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 大咪咪av| 日本在线高清视频 | 男男受被啪到高潮自述 | 欧美日韩国产高清视频 | 亚洲色图19p | av在线一区二区 | 日韩性xxx | 色伊人网 | 国产日韩精品一区二区三区在线 | 六十路息与子猛烈交尾 | 午夜影院免费 | 国产传媒视频在线 | 国产精品成人午夜视频 | 亚洲天堂视频网站 | 日本精品一区在线观看 | 成人音影 | 亚洲成人aaa| 国产精品日韩电影 | 日韩啪 | 亚洲欧美日韩综合 | 亚洲精品偷拍 | 国产亚洲精品久久久久丝瓜 | 亚洲大逼 | 亚洲精品热 | 琪琪秋霞午夜被窝电影网 | 国产精品成人av久久 | 国产精品第9页 | 欧美日韩在线一区二区 | 亚洲国产精品久久精品怡红院 | 尤物影院在线观看 | 亚州av成人 | 97超碰站 | 一区二区三区视频在线播放 | 亚洲高清网站 | 成年人小视频在线观看 | 麻豆视频免费网站 | 亚洲天堂午夜 | 久久男人av | 国产精品久久久久9999爆乳 | 日批在线 | 无码人妻少妇色欲av一区二区 | 欧美高清视频一区二区三区 | 极品超粉嫩尤物69xx | 毛片毛片毛片毛片毛片毛片毛片 | 午夜爽爽视频 | 国产女人和拘做受视频免费 | 日本69式三人交 | 精品中文字幕一区二区三区 | 成年视频在线 | 亚洲国产成人精品视频 | 天堂在线观看 | 四虎网址在线观看 | 日韩簧片在线观看 | 成人欧美一区二区三区在线观看 | 成人在线观看网站 | wwwxx在线观看 | 天天摸天天射 | 精品成人在线观看 | 色婷婷综合五月 | 日韩三级观看 | 国产欧美高清 | 中文字幕一区日韩 | 国产三级在线 | 成人黄色激情 | 麻豆国产精品777777在线 | 能免费看av的网站 | 欧美日韩亚洲二区 | 精品一区二区三区成人免费视频 | 美女福利片 | 真实的中国女人做爰 | 欧美亚洲天堂网 | 免费av网站在线看 | 免费a网 | 中文字幕av久久 | 日韩av网址大全 | 韩国美女啪啪 | 999久久久精品视频 亚洲视频精品在线 | 午夜影院免费视频 | 免费无码国产精品 | 色啪网站| 尤物精品视频在线观看 | 日本三级一区二区 | 日韩素人| 免费三片在线观看网站v888 | 在线成人av网站 | 娇妻之欲海泛舟无弹窗笔趣阁 | 成人在线综合网 | 国产一极毛片 | 亚洲图片综合区 | 国产一区网站 | 国产一区二区激情 | 人人妻人人澡人人爽久久av | 亚洲少妇30p | 自拍偷拍精品视频 | 日本一区二区三区视频在线播放 | 一区二区国产在线观看 | av丁香| 国产剧情精品在线 | 韩国伦理在线视频 |