1. 程式人生 > >16點陣圖像轉換為8點陣圖像(c++,python)

16點陣圖像轉換為8點陣圖像(c++,python)

如之前所說,我們需要將16點陣圖像轉換為8點陣圖像;16點陣圖像的畫素值一共有:

2^16=65536種顏色;

而8位點陣圖像只有:

2^8=256種顏色,傳統的位數轉換都是:畫素值*256/65536,比如photoshop,以及matlab的im2uint8函式都是如此,在一般場景下是沒有問題的,我們姑且稱之為“真轉換”,而如果是labelme得到的label.png標註影象在進行轉換時,由於每個類別的畫素值從0開始賦值,如0,1,2,3,4.......如果進行“真轉換”的話,由於這些值都太小,基本轉換後的畫素值都是(0,1)之間,所以都變成了0,所以我們需要將16位轉換位8位的時候還保留住原來的畫素值,這種只改變位數,而不改變具體數值的轉換方法,姑且稱之為“偽轉換”;

而解決的思路也很簡單,影象說白了也就是一個矩陣,畫素值也就是一個數值而已,我們只需要把表示類別的畫素值找出來,並且把他們的值投射到8位即可:

使用的軟體環境如下:

  • Python 3.6.3
  • VS2013
  • OPENCV 2.4.11
  • PIL
  • Labelme 2.8.0

首先,C++使用opencv轉化,核心程式碼如下:(完整程式碼(批量轉換,速度最快,需要配置opencv):點選開啟連結

for (int k = 0; k<src.rows; k++)
		{
			for (int kk = 0; kk<src.cols; kk++)
			{
				int n = src.at<ushort>(k, kk);
				ff.at<uchar>(k, kk) = n;
			}
		}
img = Image.fromarray(np.uint8(img))

轉換完成後,可以使用軟體檢視時候變為8位,但是開啟圖片依然是一片黑:


如果需要提高類別之間的差異性,可以直接乘以一個較大的值:如下:

img = Image.fromarray(np.uint8(img)*20)

圖片就會有明顯的區分,如下:


相關推薦

16點陣轉換8點陣c++,python

如之前所說,我們需要將16點陣圖像轉換為8點陣圖像;16點陣圖像的畫素值一共有:2^16=65536種顏色;而8位點陣圖像只有:2^8=256種顏色,傳統的位數轉換都是:畫素值*256/65536,比如photoshop,以及matlab的im2uint8函式都是如此,在一般

python中使用opencv將RGB影象轉換HSV及YCrCb影象附程式碼

【時間】2018.11.01 【題目】在python中使用opencv將RGB影象轉換為HSV及YCrCb影象(附程式碼) 目錄 概述 一、程式碼實現 二、執行結果 三、關於HSV及YCrCb的一點補充 3.1HSV顏色空間 3.2 YCRCBA顏色空間

演算法提高 8-1因式分解c語言

**問題描述   設計演算法,使用者輸入合數,程式輸出若個素數的乘積。例如,輸入6,輸出23。輸入20,輸出22*5。**例: 資料規模和約定   輸入資料中每一個數在int表示範圍內。  法一:程式程式碼如下 #include<stdio.h> int isprime(

兩個有序單鏈表歸併一個有序單鏈表c實現

兩個有序單鏈表歸併為一個有序單鏈表 c程式碼: //定義節點 struct ListNode { int m_nValue; ListNode* m_pNext; } ; Lis

VS2010 用CxImage讀入各種圖片格式後在記憶體中轉換HBITMAP點陣

最近自學遊戲引擎設計,希望將各種圖片格式讀入記憶體後轉為HBITMAP處理,四處搜尋無果,最終參考以下兩篇博文自己搞定之 http://blog.csdn.net/wu_xiangwei/article/details/5096529 http://www.cnblogs.

js數值型遇0開始自動轉換8進制

沒有 log 今天 ret gpo rip 16進制 deb bug   如題,今天在項目更新時發現了js的這個自動轉換問題,代碼如下: var num = 0110; render:function(num){ var html="

Mathpix 可將論文方程式截迅速轉換LaTeX

Mathpix 可將論文方程式截圖迅速轉換為LaTeX Mathpix 是一個漂亮的小工具,它允許你擷取複雜數學方程式的截圖,並立即將其轉換為 LaTeX 可編輯文字。 LaTeX進行公式編輯的優點不用多說,每次看論文想利用文章的公式需要手敲公式,不僅需要記住LaTeX語法還費時,M

如何使用 python3 將RGB 圖片轉換 灰度

首先,介紹第一種方法, 使用  PIL  庫,   PIL庫是一種python語言常用的一個圖形處理庫。 關於   PIL  庫的安裝本文就不介紹了。   from PIL import Image I = Image

Word中的圖片儲存無損轉換高質量pdf無壓縮

一. Word中圖片儲存為無損圖(不壓縮)的方法: 編輯Word2013文件時,新增圖片後,文件總會預設壓縮圖片,雖然壓縮後可使文件變小,但圖片質量會大大降低。如何才能在Word 2013文件中新

利用opencv以及pcl將2D深度影象轉換3D點雲

#include <QtCore/QCoreApplication> #include <iostream> #include <string> using namespace std; // OpenCV 庫 #include <

Java實現24位真彩轉換8位灰度圖片

         Windows下的點陣圖檔案即我們通常所熟悉的BMP圖片,其儲存結構的格式可以在WINGDI.h檔案中找到定義。BMP檔案大體上分為四個部分: 1.      點陣圖檔案頭(BITMAPFILEHEADER) 2.      點陣圖資訊頭(BITMAPIN

面試題----16進位制轉換10進位制

題目描述 寫出一個程式,接受一個十六進位制的數值字串,輸出該數值的十進位制字串。(多組同時輸入 ) 輸入描述: 輸入一個十六進位制的數值字串。 輸出描述: 輸出該數值的十進位制字串。 示例1

基於GPU的影象處理輸出bmp格式的轉換tga精度損失問題。

我最近在搞影象處理,我的步驟是 (1)先把要處理的圖片讀進GPU然後用CS處理 (2)把CS的輸出存到磁碟,此時資料是未壓縮的BMP格式 (3)美術同事可能想要其他格式的圖片如tga,所以用ps的批處理把圖片轉為tga或者其他格式。下面就來看看這個過程的精度損失 原始輸出值是0.

Word中的Visio直接轉換圖片

ctrl+A (全選) ctrl+shift+f9 (轉換) ~~~~~~~~~~~~~~~~~~~~~~~~~ **福利分割線**~~~~~~~~~~~~~~~~~~~~~~~~~~~ -長期內推-:頭條、快手、美團、阿里、陌陌、噹噹。有需要的朋友可以發

Android錄製螢幕視訊 將視訊轉換GIF動態

寫在前面:前提是Android手機要有ROOT許可權! 第一步:在手機上安裝"SCR螢幕錄影.apk"軟體,安裝之後,開啟設定,勾選"垂直幀" 點選手機上的"SCR螢幕錄影",會彈出3個按鈕的彈窗,再點選彈窗上的軟體LOGO,錄屏開始了,按下電源鍵手機鎖屏,錄製結束,視訊檔

opengl全景轉換天空盒(成功)

前面哪個opengl程式實際上已經快成功了,只差一點點了。發現只要前、後圖對換,左、右圖對換就可以了所以這裡除了對換外,把哪個要按2次鍵才能截到正確的圖也改一下(延時)具體看程式碼吧://53 全景球貼圖 切分6圖 //左鍵(+ 移動)旋轉,右鍵(+ 移動)縮放 1

leetcode-將有序陣列轉換二叉搜尋樹JavaScript

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以

RDD使用程式設計介面方式轉換DataFrame的工具類針對欄位特別多的

在使用Spark-Sql 時,需要把RDD型別轉換為DataFrame,再使用一些SQL操作,在轉換為DataFrame時有兩種方式一種是通過反射方式,一種是通過程式設計介面方式 程式設計介面的方式比較常用,但是這種方式程式碼量可能比較大,特別是在你的欄位特別多的時候,你需要先把RDD中的型

108. 將有序陣列轉換二叉搜尋樹簡單,陣列,二叉樹

將一個按照升序排列的有序陣列,轉換為一棵高度平衡二叉搜尋樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定有序陣列: [-10,-3,0,5,9], 一個可能的答案是:[0,-3,9,-10,null,5],它可以

leetcode 將已排序的 陣列/連結串列 轉換二叉搜尋樹BST,Python實現

思路:不論是陣列還是連結串列,遞迴地找到他的root(即序列的中點),並返回。 1. 將陣列轉換為二叉樹: # Definition for a binary tree node. # class T