内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

利用Python實現(xiàn)一個將圖片轉(zhuǎn)換成字符畫的國內(nèi)-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)利用Python 實現(xiàn)一個將圖片轉(zhuǎn)換成字符畫的國內(nèi),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供澗西企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為澗西眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

字符畫是一種由字母、標(biāo)點或其他字符組成的圖畫,它產(chǎn)生于互聯(lián)網(wǎng)時代,在聊天軟件中使用較多,本文我們看一下如何將自己喜歡的圖片轉(zhuǎn)成字符畫。

靜態(tài)圖片

首先,我們來演示將靜態(tài)圖片轉(zhuǎn)為字符畫,功能實現(xiàn)主要用到的 Python 庫為 OpenCV,安裝使用 pip install opencv-python 命令即可。

功能實現(xiàn)的基本思路為:利用聚類將像素信息聚為 3 或 5 類,顏色最深的一類用數(shù)字密集度表示,陰影的一類用橫杠(-)表示,明亮部分用空白表示。

主要代碼實現(xiàn)如下:

def img2strimg(frame, K=5):  
  if type(frame) != np.ndarray:
    frame = np.array(frame)
  height, width, *_ = frame.shape 
  frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
  frame_array = np.float32(frame_gray.reshape(-1))
  criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
  flags = cv2.KMEANS_RANDOM_CENTERS
  # 得到 labels(類別)、centroids(矩心)
  compactness, labels, centroids = cv2.kmeans(frame_array, K, None, criteria, 10, flags)
  centroids = np.uint8(centroids)
  # labels 的數(shù)個矩心以隨機順序排列,所以需要簡單處理矩心
  centroids = centroids.flatten()
  centroids_sorted = sorted(centroids)
  # 獲得不同 centroids 的明暗程度,0 為最暗
  centroids_index = np.array([centroids_sorted.index(value) for value in centroids])
  bright = [abs((3 * i - 2 * K) / (3 * K)) for i in range(1, 1 + K)]
  bright_bound = bright.index(np.min(bright))
  shadow = [abs((3 * i - K) / (3 * K)) for i in range(1, 1 + K)]
  shadow_bound = shadow.index(np.min(shadow))
  labels = labels.flatten()
  # 將 labels 轉(zhuǎn)變?yōu)閷嶋H的明暗程度列表
  labels = centroids_index[labels]
  # 解析列表
  labels_picked = [labels[rows * width:(rows + 1) * width:2] for rows in range(0, height, 2)]
  canvas = np.zeros((3 * height, 3 * width, 3), np.uint8)
	# 創(chuàng)建長寬為原圖三倍的白色畫布
  canvas.fill(255)
  y = 8
  for rows in labels_picked:
    x = 0
    for cols in rows:
      if cols <= shadow_bound:
        cv2.putText(canvas, str(random.randint(2, 9)),
              (x, y), cv2.FONT_HERSHEY_PLAIN, 0.45, 1)
      elif cols <= bright_bound:
        cv2.putText(canvas, "-", (x, y),
              cv2.FONT_HERSHEY_PLAIN, 0.4, 0, 1)
      x += 6
    y += 6
  return canvas

網(wǎng)站標(biāo)題:利用Python實現(xiàn)一個將圖片轉(zhuǎn)換成字符畫的國內(nèi)-創(chuàng)新互聯(lián)
本文來源:http://www.rwnh.cn/article24/cciije.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號App設(shè)計、營銷型網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站改版、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
郸城县| 西青区| 定日县| 大方县| 蒲江县| 青浦区| 陆丰市| 徐州市| 安溪县| 陕西省| 吴忠市| 庆元县| 万年县| 益阳市| 栾川县| 长沙县| 九江县| 清远市| 个旧市| 上杭县| 湘阴县| 嘉兴市| 项城市| 长岛县| 福海县| 孟津县| 定西市| 常宁市| 泗水县| 广南县| 南城县| 米林县| 汉中市| 永和县| 宣恩县| 凌源市| 潞西市| 南江县| 略阳县| 枝江市| 莱西市|