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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像“位操作”有什么用?

發布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像“位操作”有什么用? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們在看優酷視頻時,經常會發現視頻右上角上有“優酷”的字樣。例如:

實際上我們可以把視頻看作一幅幅的圖像,在每幅圖像中,我們把“優酷”這個圖標加上去。于是一個很自然的想法就是圖像相加。

由于圖像相加需要2幅圖像有相同的大小,因為圖像就是矩陣,同維度的矩陣才能相加。于是先生成一副有“優酷”字樣的黑色背景的圖像,讓其與每幅圖像進行相加。

import cv2 car = cv2.imread("car.jpg") youku = cv2.imread("youku.jpg") car_and_youku = cv2.add(car, youku) cv2.imshow("car_and_youku", car_and_youku) cv2.waitKey()

得到相加圖像如下:

我們注意到,“優酷”文字不再是純紅色,而是有了一定的混色。這是因為圖像相加的話,是將相同位置的像素值直接相加,由于原圖像上該文字所在的位置已經有像素值了,于是相加在一起就不是紅顏色了。

那么,一個想法是能不能將原圖像中優酷文字所在的地方摳出來,將其像素值賦為0,然后再相加呢?

當然是可以的!首先我們當然要知道“優酷”文字所在的位置。我們可以用前面提到的《顏色選擇》方法,也可以使用閾值方法:

youku = cv2.imread("youku.jpg") # 轉換成灰度圖,因為閾值操作只針對單通道圖像 youku_gray = cv2.cvtColor(youku, cv2.COLOR_BGR2GRAY) # 閾值操作,灰度值大于50的像素點位置賦值為255 ret, mask = cv2.threshold(youku_gray, 50, 255, cv2.THRESH_BINARY) # 位操作:邏輯非。將黑白反向 mask_inv = cv2.bitwise_not(mask) cv2.imshow("mask_inv", mask_inv) cv2.waitKey()

我們注意上面的代碼倒數第3行:

mask_inv = cv2.bitwise_not(mask)

這就是一種位操作,“bitwise_not”表示是一種邏輯非操作,即原來是0,變成255,原來是255,變成0。本質是一種反轉操作,即黑色變成白色,白色變成黑色。如果像素某顏色通道值是100,則變成255-100=155。所以,如果是彩色的3通道圖像,bitwise_not會分別對每個通道進行反色處理。

然后將原始圖片中的“優酷”文字位置的地方摳出來:

car_bg = cv2.bitwise_and(car, car, mask=mask_inv) cv2.imshow("car_bg", car_bg)

這里的bitwise_and是圖像位操作中的邏輯和操作,即按照像素值的二進制進行相應位置的邏輯和操作。bitwise_and一般與掩膜(mask)共同操作。利用掩膜(mask)進行“與”操作,即掩膜圖像白色區域是對需要處理圖像像素的保留,黑色區域是對需要處理圖像像素的剔除。

為了確保提取的文字區域是一致的。將優酷文字原始圖像也與文字位置掩膜進行操作,最后將2幅圖像加起來:

youku_logo = cv2.bitwise_and(youku, youku, mask=mask) final = cv2.add(car_bg, youku_logo) cv2.imshow("final", final)

就得到了文章最前面的帶“優酷”水印的圖像。

總結

以上是生活随笔為你收集整理的图像“位操作”有什么用?的全部內容,希望文章能夠幫你解決所遇到的問題。

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