-
環(huán)境配置 :
OpenCV在xCode中的安裝與環(huán)境配置
先看效果:
效果演示: 上為原圖 柏蘑,下為效果
主要代碼如下(注意:記得在引用頭文件下面加: using namespace cv;):
將自己要處理的圖片裝換為 Mat 形式
UIImage *image1 = [UIImage imageNamed:@"6.jpg"]; Mat image;
// 將UIImage 對(duì)象轉(zhuǎn)換成 Mat 形式
UIImageToMat(image1, image);
- 初始化接收最后修改結(jié)果的 Mat 對(duì)象,
- 像素值初始化為0 ;
- 與原圖像有相同的大小和類型,
Mat new_image = Mat::zeros(image.size(), image.type());
- 聲明 對(duì)比度 alpha 與 亮度 beta
double alpha = [0, 3]; double beta = [0, 100];
[n, m]這里表示我使用的區(qū)間 此處需重新指定值 這里我使用 Slider.value 進(jìn)行控制
- 實(shí)現(xiàn)效果核心代碼
for( int i = 0; i < image.rows; i++) {
for( int j = 0; j < image.cols * 1.5; j++) {
for( int k = 0; k < 3; k++) {
new_image.at<Vec3b>(i, j)[k] = saturate_cast<uchar>(alpha * ( image.at<Vec3b>(i, j)[k]) + beta);
}
}
}
注釋:此處執(zhí)行
i 和 j 表示像素位于 第i行 和 第j列
- - - -
為了訪問(wèn)圖像的每一個(gè)像素幸冻,使用語(yǔ)法: image.at<Vec3b>(i, j)[k] ,其中咳焚, i 是像素所在的行洽损, j 是像素所在的列, k 是R黔攒、G趁啸、B(0、1督惰、2)之一不傅。
用 saturate_cast 對(duì)結(jié)果進(jìn)行轉(zhuǎn)換,以確保它為有效值赏胚。
最后需要將 Mat 轉(zhuǎn)換為 UIImage 對(duì)象
UIImage *img = MatToUIImage(new_image)
用UIImage對(duì)象接收访娶, 將圖片加載到UIImageView 就可以看到效果了
- 參考資料:改變圖像的對(duì)比度和亮度