【图片处理的常见手段】

高质量保存图片

	vector<int> compression_params;
	compression_params.push_back(cv::IMWRITE_JPEG_QUALITY);  //选择jpeg
	compression_params.push_back(100);

	std::stringstream ss;
	ss << "./" << getNowTimeText() << ".jpg";
	cv::imwrite(ss.str(), resize, compression_params);
    std::vector<int> compression_params;
    compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);//选择PNG格式
    compression_params.push_back(0); // 无压缩png(从0-9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3.本人选择0表示不压缩)

原样读取图片

cv2.imread("xx.jpg", cv2.IMREAD_UNCHANGED)

图片调整大小

void cv::resize (InputArray src,OutputArray dst,Size dsize,double fx = 0,double fy = 0,int interpolation = INTER_LINEAR)

参数
src - 输⼊图像。
dst - 输出图像;它的⼤⼩为 dsize(当它⾮零时)或从 src.size()、fx 和 fy 计算的⼤⼩;dst 的类型与 src 的类型相同。
dsize - 输出图像⼤⼩;如果它等于零,则计算为:dsize = Size(round(fxsrc.cols), round(fysrc.rows))。dsize 或 fx 和 fy 必须为⾮
零。
fx - 沿⽔平轴的⽐例因⼦;当它等于 0 时,它被计算为(double)dsize.width/src.cols
fy - 沿垂直轴的⽐例因⼦;当它等于 0 时,它被计算为(double)dsize.height/src.rows

cv::resize(raw, resize, {width, height}, 0, 0, cv::INTER_CUBIC);
cv::resize(raw, resize, {width, height}, 0, 0, cv::INTER_LINEAR);

查看CV版本

printf(CV_VERSION); 

python 版本是pip list查看

比较两个IMAGE是否相同


    def pixel_equal(self, image1, image2, x, y):
        """
        判断两个像素是否相同
        :param image1: 图片1
        :param image2: 图片2
        :param x: 位置x
        :param y: 位置y
        :return: 像素是否相同
        """
        # 取两个图片像素点
        piex1 = image1[x, y]
        piex2 = image2[x, y]
        threshold = 10
        if (np.all(piex1!=piex2)):
            print(x,y)
            print("piex1", piex1)
            print("piex2", piex2)
        # 比较每个像素点的RGB值是否在阈值范围内,若两张图片的RGB值都在某一阈值内,则我们认为它的像素点是一样的
        if abs(piex1[0] - piex2[0]) < threshold and abs(piex1[1]- piex2[1]) < threshold and abs(piex1[2] - piex2[2]) < threshold:
            return True
        else:
            return False

    def compare(self, image1, image2):
        """
        进行比较
        :param image1:图片1
        :param image2: 图片2
        :return:
        """
        left = 0		# 坐标起始位置
        right_num = 0	# 记录相同像素点个数
        false_num = 0	# 记录不同像素点个数
        all_num = 0		# 记录所有像素点个数
        
        for i in range(left, image1.shape[0]):
            for j in range(image1.shape[1]):
                if self.pixel_equal(image1, image2, i, j):
                    right_num += 1
                else:
                    false_num += 1
                all_num += 1
        same_rate = right_num / all_num		# 相同像素点比例
        nosame_rate = false_num / all_num	# 不同像素点比例
        print("same_rate: ", same_rate)
        print("no same_rate: ", nosame_rate)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

allen_hai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值