1. 程式人生 > >imwrite函式儲存二值圖的問題解決

imwrite函式儲存二值圖的問題解決

者這裡使用opencv3.2 + vs 2015 進行示例:

// bin.cpp : 定義控制檯應用程式的入口點。
//


#include "stdafx.h"
#include<iostream>
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;


int main()
{
Mat srcImage;
//在你的工程下放一張圖片名為6.jpg
srcImage = imread("6.jpg");
imshow("6", srcImage);
if (srcImage.channels() > 1)
cvtColor(srcImage, srcImage, CV_RGB2GRAY);
Mat srcImageBin;


threshold(srcImage, srcImageBin, 128, 255, THRESH_BINARY_INV);
imshow("原始圖轉化二值圖", srcImageBin);
cout << srcImageBin << endl << endl;


//不更改圖片質量
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);  //選擇jpeg
compression_params.push_back(255); //在這個填入你要的圖片質量(255為無損儲存,一定要進行255,否則影象失真)


imwrite("6bin.jpg", srcImageBin,compression_params);



Mat srcImage1;
srcImage1 = imread("6bin.jpg", CV_LOAD_IMAGE_GRAYSCALE);
imshow("6bin", srcImage1);
cout << srcImage1 << endl;
waitKey(0);
    return 0;
}

以下為結果示例:可以發現經過引數設定之後儲存後的影象沒有失真,畫素值一樣。



這就是6.jpg 

相關推薦

imwrite函式儲存的問題解決

者這裡使用opencv3.2 + vs 2015 進行示例: // bin.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include<iostream> #include<opencv2\opencv.hpp

實現基於C語言的像連通域標記算法

ror mem main hair return pop incr one get 實現基於C語言的二值圖像連通域標記算法 1 #include <stdio.h> 2 #include <stdarg.h> 3 #include &l

像存入數組

spa stride epo als pan for span .get eight 因項目需要,需要用一個將二值圖像保存在二維數組中的算法,在網上找了很久都沒找到,只能自己動手寫了。 #region 讀取二值圖像存入二值數組 publi

Fragment關閉再開啟 控制元件儲存的問題 尤其是EditText 儲存原來解決辦法

今天解決了一個自認為比較棘手的bug。特別記錄在此。 背景: 該介面是一個fragment,fragment中有一個EditText控制元件。出現的問題是,我第一次進入該fragment, 在edittext控制元件輸入內容,然後返回到該fragemnt之前的介面, 接著再次返

matlab黑色變紅色

matlab 二值圖黑色變紅色 bw = imread('E:\rc\黎陽09170930\result09-27\result\result1+2+3\test (1).tiff'); %bw = im2bw(I,0.5); %imshow(bw); [r,c] = size(bw);

Python中使用PIL快速實現

二值圖 二值影象是指:每個畫素不是黑就是白,其灰度值沒有中間過渡的影象。二值影象一般用來描述文字或者圖形,其優點是佔用空間少,缺點是,當表示人物,風景的影象時,二值影象只能描述其輪廓,不能描述細節。這時候要用更高的灰度級。 效果 原圖 二值圖 實現 新建資料夾Tw

灰度與詞雲圖—聖誕節案例

聖誕節小案例 目錄 灰度圖 二值圖 詞雲圖 jieba re.sub() 程式碼彙總 目錄 在菜鳥學python中看到一篇推文,教大家生成不同的圖片,灰度圖、二

opencv孔洞填充演算法(方法系轉載)

方法原文見:http://geniusshare.i.sohu.com/blog/view/149854097.htm 作者:天才的自省  孔洞者,不與大背景聯通卻具有大背景顏色的畫素也,所以思路如下:將大背景全部用前景色(白色)填充(cvFloodFill函式,一(0

python 簡單影象處理(13) 腐蝕和膨脹,開運算、閉運算

我們直接看圖吧 我們把粗框內的區域看作原影象 假設有一個圓在影象空間移動,取一個點作為圓的中心,若圓的區域被完全包含在原影象中 則我們把它放到腐蝕後的區域中 若只有一部分在原影象區域或沒有一個點在原圖區域中,我們則不會把它放在腐蝕區中 顯然,粗框區域腐蝕後會變成內部填充框區域 而膨脹卻恰恰相反 把粗框線

matlab imwrite函式儲存jpg格式影象丟失資料或改變影象

使用matlab的imwrite函式儲存影象時,如果儲存成jpg格式的影象,結果影象和原來影象會有些差異,因為jpg格式是壓縮格式,會丟失一部分資料,但是影象的總體外觀是看不出區別的,下圖左邊表示pn

Matlab中imwrite( ) 函式 儲存影象用法

1、儲存到當前資料夾下:imwrite(I,'abc.png'); 2、儲存到當前資料夾下的一個子檔案result下:imwrite(I,'./result/abc.png'); 3、儲存到當前資料夾上一層的一個資料夾result下:imwrite(I,'../r

python opencv 實現影象的

我們要將一張圖片首先轉化為灰度圖(或者是單通道的圖)然後才能進行二值化處理 那在opencv裡面有一個函式cv.Threshold(src, dst, threshold, maxValue, thresholdType)可以進行二值化處理  這個直接設定閾值 就可以將大

Java 在匿名內部函式中為外部函式變數賦解決方案

新人一枚,請多包涵。    Java匿名內部函式本人不怎麼主動使用,但是經常會呼叫一些API,其中會呼叫一些介面,而這些介面是需要使用匿名內部類來實現的,於是就遇到了一些問題。    就比如okHttp3 的介面呼叫 OkHttpClient okHttpClient = n

繪製輪廓轉為RGB顯示輪廓顏色

1.將任意序列影象先轉為灰度圖獲取輪廓 2.轉為三通道圖 3.遍歷畫素點使輪廓顯示為彩色,其餘部分為白色 4.將結果按序儲存在資料夾中 //int main(int argc, char** argv)    //{ //    char filename[100]; /

關於opencv的Mat型別的imwrite()函式寫入.jpg影象畫素會改變的解決方案

 #include <string> #include <opencv2/opencv.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace std; using na

MATLAB:化、互補(反運算)(im2bw,imcomplement函數)

idt 部分 轉換成 灰度 技術 ice 工作 圖像 light 圖像二值化、反運算過程涉及到im2bw,imcomplement函數,反運算可以這麽理解:原本黑的區域變為白的區域,白的區域變為黑的區域。 實現過程如下: close all; %關閉當前

Win8 Metro(C#)數字像處理--2.57一維最大熵法

rgb ack stream toa tail 函數代碼 ble param nor 原文:Win8 Metro(C#)數字圖像處理--2.57一維最大熵法圖像二值化

Win8 Metro(C#)數字像處理--2.56簡單統計法

public 分割 ola 0.11 orm http statistic weight segment 原文:Win8 Metro(C#)數字圖像處理--2.56簡單統計法圖像二值化

python-opencv 化,自適應閾處理

csdn 領域 image tle tps wid 無聊 src ima 定義:圖像的二值化,就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出明顯的只有黑和白的視覺效果。 一幅圖像包括目標物體、背景還有噪聲,要想從多值的數字圖像中直

OpenCV---超大化和空白區域過濾

分享圖片 相關 空白區域 tails href 需要 binary otsu 技術分享 超大圖像的二值化方法 1.可以采用分塊方法, 2.先縮放處理就行二值化,然後還原大小 一:分塊處理超大圖像的二值化問題 def big_image_binary(image):