OpenCV小白學習筆記(四)圖像處理

圖像處理(四)

圖像混合

1.理論-線性混合操作
2.相關API (addWeighted)

理論-線性混合操作

在這裏插入圖片描述

其中在這裏插入圖片描述的取值範圍爲0~1之間

相關API (addWeighted)

參數1:輸入圖像Mat – src1
參數2:輸入圖像src1的alpha值
參數3:輸入圖像Mat – src2
參數4:輸入圖像src2的alpha值
參數5:gamma值
參數6:輸出混合圖像

注意點:兩張圖像的大小和類型必須一致纔可以
在這裏插入圖片描述

代碼案例

Mat src1, src2, dest;
	src1 = imread("D:/vcprojects/images/LinuxLogo.jpg");
	src2 = imread("D:/vcprojects/images/win7logo.jpg");
	if (!src1.data) {
		printf("could not load LinuxLogo image...\n");
		return -1;
	}
	if (!src2.data) {
		printf("could not load win7logo image...\n");
		return -1;
	}
	if (src1.rows == src2.rows && src1.cols == src2.cols) {
		double alpha = 0.5;
		namedWindow("line-blend", CV_WINDOW_AUTOSIZE);
		addWeighted(src1, (1 - alpha), src2, alpha, 0.0, dest);

		imshow("line-blend", dest);
		waitKey(0);
		return 0; 
	}
	else {
		printf("image size is not same...\n");
		return -1;
	}

調整圖像亮度與對比度

圖像變換可以看作如下:

  • 像素變換 – 點操作
  • 鄰域操作 – 區域
    調整圖像亮度和對比度屬於像素變換-點操作

在這裏插入圖片描述

重要的API

Mat new_image = Mat::zeros( image.size(), image.type() ); 創建一張跟原圖像大小和類型一致的空白圖像、像素值初始化爲0

saturate_cast(value)確保值大小範圍爲0~255之間

Mat.at(y,x)[index]=value 給每個像素點每個通道賦值

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章